sexta-feira, 2 de dezembro de 2011

Engenharia de Software do Mundo Real (ESMR)


Se um dia eu for dar aula de Engenharia de Software, a primeira coisa que irei fazer é dizer aos meus alunos:

Galera, seguinte:

Por alguma razão desconhecida, existem pessoas no mundo que colocam a Engenharia de Software como uma disciplina nebulosa, excessivamente teórica, abarrotada de modelos/diagramas/processos e desconectada das linhas de código nossas de cada dia. Normalmente, são pessoas que não gostam de programar, nem gostam de mexer com bancos de dados, nem com nenhuma tecnologia do mundo real.

Software, no mundo real, é um conjunto de programas, bancos de dados e tecnologias do mundo real. Engenharia, no mundo real, é a aplicação de técnicas e conhecimentos na construção de algo que realize um objetivo.

Engenharia de Software, portanto, é a ciência, arte e prática de se fazer software de qualidade que cumpra um objetivo. Em última análise, é saber mandar bem no código, saber botar um sistema no ar e saber fazer com que ele faça o que tem que ser feito. E ser capaz de manter isso tudo funcionando hoje, amanhã, depois de amanhã e depois de depois de amanhã.

Assim, imagino que uma pessoa daquele tipo que eu mencionei anteriormente se encaixe em uma das seguintes categorias: ou não sabe o que é engenharia, ou não sabe o que é software.

Saibam programar, saibam mexer no banco de dados, saibam usar as tecnologias. Saibam fazer software.

Essa foi nossa primeira aula. Obrigado a todos pela atenção! E lembrem-se de dar uma olhada no material de apoio.

2 comentários:

Thiago de Paulo disse...

Muito legal FI!! Mas é difícil passar esse "gosto de programar" para os alunos. Você já deve imaginar, sempre há aqueles que não fazem do tipo.

Fi disse...

Na verdade, eu não imaginava não, pelo menos ainda não :)...

Claro que vai ter os que não curtem programar. Com esses não vai ter jeito, nem teria muito como ter. Cada um vai curtir uma coisa diferente dentro da Computação (não necessariamente programar), ou até vai descobrir que não gosta de Computação.

A questão, a meu ver, está em como iremos tratar com aqueles que gostam de programar, gostam de ser desenvolvedores.

E existem também aqueles que gostam só de diagramas, modelagem, análise de requisitos... Esse é, sim, um papel importante. Conheço gente que faz isso muito bem e tem uma atuação muito importante na equipe.

Gostar só dos diagramas não é um problema. O problema é quando alguém acredita que tem capacidade de ensinar como se devem fazer sistemas sem nunca ter feito um na vida. O problema é quando alguém advoga uma metodologia sem nunca tê-la usado num projeto real para ter ideia de se ela funciona mesmo ou não. O problema é alguém dizer que código é menos importante do que qualquer outra coisa, já que, sem qualquer outra coisa, um sistema pode funcionar muito bem; já sem código, não :).

[]s e valeu pelo comentário!