John Sonmez defendeu recentemente em um post para o ElegantCode que, por fatores peculiares, o desenvolvimento de software não pode seguir os princípios comuns à engenharia.
O desenvolvimento de software nunca vai obedecer a princípios de engenharias rígidas como muitas outras práticas de engenharia.
Para sustentar sua tese, o autor compara a criação de software com a construção de pontes, apoiando-se no fato da construção de software ser algo recente e dinâmico:
A engenharia tem sido trabalhada há centenas de anos; amadureceu ao ponto em que se tornou uma ciência mensurável . O desenvolvimento de software teve apenas algumas décadas para evoluir e ainda é imaturo como uma disciplina de engenharia.
Para destacar uma possível falta maturidade do desenvolvimento de software o autor compara a evolução da forma de desenvolver software com a evolução do jogo de poker. Afirma que devido ao surgimento dos campeonatos online os jogadores de poker ganharam experiência de décadas em apenas alguns anos. A comparação com o poker é bem interessante, fazendo isso o autor procura apresentar que a maturidade do desenvolvimento de software não será um problema por falta de evolução.
Nos últimos 10 anos profissionais de poker com décadas de experiência começaram a ser batidos por prodígios de 19 anos de idade. [...] A estratégia do torneio de poker mudou completamente e o jogo evoluiu talvez 500 anos em cinco.
Em seguida o autor reafirma que desenvolver software é diferente de qualquer tipo de engenharia, indicando que a construção de pontes segue requisitos fixos:
A construção de pontes seguem um conjunto fixo de requisitos similares para todas as pontes, mas o desenvolvimento de software parte de um grande vazio, de caprichos e declarações ambíguas.
Para concluir seu ponto de vista, o autor afirma que a construção de software tem mais em comum com a de cirurgiões.
O texto gerou repercussão, especialmente negativa. Vejam um desses comentários:
“Eu não concordo com sua afirmação de que o desenvolvimento de software nunca será de engenharia. Penso exatamente o contrário. Quanto mais eu trabalho na área, mais eu entendo que pode se tornar uma engenharia. É apenas uma questão de como você define Engenharia. Por outro lado, eu concordo apenas o tamanho não resolve tudo: não há uma abordagem de engenharia definitiva e irrefutável software” - Rodrigo Gonçalves
Em post recente publicado no HXA notes, é apresentado outro um ponto de vista sobre a Engenharia de Software. Nesse pequeno artigo, o autor afirma que o objetivo da engenharia de software é refletir a fluidez humana. Para ele, a engenharia de software tenta ser algo entre o abstrato e o concreto, entre o requisito e a matéria.
Não de trata da melhor maneira de abstração, mas sim a melhor forma de mudar as abstrações.(...) Pode-se dizer que ‘mudar’ é um tipo mais generalizado de criação.
Para ele, autor, a engenharia de software está entre os requisitos oferecidos e os recursos disponíveis, agindo como o facilitador entre as partes.
A engenharia de software é colocada entre (as partes) como atividade sistemática para mantê-los juntos.
Nesse aspecto, a engenharia deixa de ter a conotação clássica das demais engenharias. E para você, a Engenharia de Software pode ser realmente considerada uma engenharia no sentido clássico?