· engenharia de software · 4 min read
Engenharia de software ou programação
Uma reflexão sobre qual a diferença entre engenharia de software e programação. Engenharia de software é a mesma coisa que programação? Programar é fazer engenharia?
Depois da leitura do livro Engenharia de Software no Google, que recomendei no meu último artigo por ser um conteúdo muito maneiro, ficou no ar uma questão que recorrentemente é levantada na comunidade de programação que é: qual a diferença entre programação e engenharia de software?
Outro ponto constantemente levantado: por que temos vagas para pessoas engenheiras, pessoas desenvolvedoras e pessoas programadoras de software?
Pra mim isso sempre foi referente a títulos que pessoas que escrevem software, independente do que está na carteira de trabalho, recebem. Porém percebi com minhas leituras recentes que realmente existe uma diferença filosófica e real nesses dois termos. Neste artigo compartilho as reflexões e pontos em que cheguei.
O que é engenharia
Levando ao pé da letra podemos pegar a definição clássica de o que é engenharia para refletirmos sobre o que fazemos:
Engenharia é a aplicação do conhecimento científico, econômico, social e prático, com o intuito de inventar, desenhar, construir, manter e melhorar estruturas, máquinas, aparelhos, sistemas, materiais e processos. É também profissão em que se adquire e se aplicam os conhecimentos matemáticos e técnicos na criação, aperfeiçoamento e implementação de utilidades que realizem uma função ou objetivo.
Fonte: Wikipedia - Engenharia
Visto essa definição, programação como conhecemos sempre foi algo que busca a aplicação do conhecimento em informática e outras habilidades para a construção de sistemas, certo?
Acontece que nem sempre foi assim. Em outras épocas da história da computação existiam outras profissões que cercavam o processo de construção de um sistema/software e pessoas programadoras ficavam com a única responsabilidade de escrever código e únicamente dominar a plataforma onde o programa iria rodar.
Hoje em dia percebemos que, nas vagas para pessoas desenvolvedoras, os requisitos mudaram. Nós não somente escrevemos código e precisamos dominar algoritmos e outras especificidades da nossa função, mas precisamos nós pensarmos no processo de manutenção do código no longo prazo, nas implicações que uma falha pode trazer e como resolver isso rapidamente, nos processos de documentação, versionamento, release e muito mais.
Já trabalhei em uma empresa onde todo o processo de planejamento da construção do software era feito por projetistas e quem escrevia o código basicamente seguia a modelagem. Não tinha a função de pensar em outras implicações como usabilidade, atendimento dos requisitos de stakeholders ou algo similar. Seu trabalho era implementar a modelagem UML.
Programar não é parte de engenharia de software?
Sim, programar é parte da aplicação de engenharia de software, assim como a construção civil é parte da aplicação da engenharia civil. A grande diferença da nossa área para outras engenharias é o fato de que nós, além de coletar requisitos, planejar as entregas, projetar o sistema, calcular valores e um pouco mais, também implementamos o código fonte.
Até por isso temos a sensação de que, a cada dia, os requisitos de vagas de programação estão crescendo mais e mais. A grande verdade é que hoje em dia estamos realmente fazendo a tal da engenharia de software.
Conclusão
Até alcançar a necessidade de projetar e desenvolver sistemas que realmente vão durar anos e não somente escrever o código que vai ser jogado fora no próximo quarter, eu não sentia a necessidade de realmente entender o que é engenharia de software, mas isso veio quando percebi que somente escrever um bom código não é engenharia.
Pense na pessoa que projetou as pontes que passamos em cima quando estamos viajando para a baixada santista (para quem conhece o estado de SP, senão confere aqui). Essa pessoa não pensou somente no material que iria utilizar para a construção (seria a nossa linguagem de programação), mas foi muito mais longe em seu projeto para que essas construções durem anos, com fácil manutenção e muito poder de aguentar a quantidade de veículos e pessoas passando por lá (escalabilidade).
Espero que este artigo tenha te trazido uma boa reflexão e te leve a busca por mais conhecimento em engenharia de software. Se estiver buscando boas referências sobre o assunto, confira as recomendações abaixo.
- As Leis Fundamentais do Projeto de Software
- Engenharia de Software: Uma Abordagem Profissional
- Engenharia de Software, por Ian Sommerville
- O Mítico Homem-mês: Ensaios Sobre Engenharia de Software
Photo by Cody Hiscox on Unsplash