· 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?
![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?](/_astro/cody-hiscox-Hp5Acad1H0k-unsplash.SCCc6xN7.jpg)
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