É engenharia de desenvolvimento de software? Se não, quais são as coisas que lhe faltam para se qualificar assim?
Sim, a engenharia de software é uma disciplina de engenharia.
A Wikipedia define engenharia como "a aplicação da matemática, bem como do conhecimento científico, econômico, social e prático, a fim de inventar, inovar, projetar, construir, manter, pesquisar, pesquisar e melhorar estruturas, máquinas, ferramentas, sistemas, componentes, materiais. , processos, soluções e organizações ". O resultado da engenharia de software é um sistema de software que pode melhorar a vida das pessoas e pode envolver alguma combinação de conhecimento científico, matemático, econômico, social ou prático.
Em termos de como é visto, academicamente e profissionalmente, isso varia. Os programas de engenharia de software podem ser credenciados pela ABET como programas de engenharia. Os engenheiros de software podem ser membros do IEEE. Algumas empresas consideram a engenharia de software uma disciplina de engenharia, enquanto outras não - é realmente uma brincadeira.
O melhor livro sobre esse assunto é o Desenvolvimento de software profissional de Steve McConnell: cronogramas mais curtos, produtos de maior qualidade, projetos mais bem-sucedidos, carreiras aprimoradas . Ele olha para a engenharia de software como uma profissão, a evolução de um ofício para uma profissão, a ciência do desenvolvimento de software, a diferença entre software de engenharia e software de engenharia (aplicando práticas de engenharia de software contra engenheiros que acontecem software de construção, com um estudo de caso que inclui minha alma mater ), certificação e licenciamento e ética.
Glenn Vanderburg tem uma série de palestras denominadas "Real Software Engineering", realizadas entre 2010 e 2015 em várias conferências, além de duas palestras relacionadas, "Artesanato, Engenharia e a Essência da programação" (dada em 2011 como palestra na RailsConf) e "Craft and Software Engineering" (realizada em 2011 na QCon London). Eu acho que essas conversas são um argumento bastante abrangente sobre por que a engenharia de software é uma disciplina de engenharia.
Um argumento, que Vanderburg menciona brevemente em suas palestras, é o de Jack W. Reeves em 1992 (e revisitado novamente em 2005) sobre o que é design de software e como o código é o resultado das atividades de design de engenharia de software ( isso também é discutido no wiki C2) Depois que você se afasta das escolas de pensamento mais antigas, onde especificação e modelagem são design de software e o código é design de software, algumas das relações entre engenharia de software e outras disciplinas de engenharia se tornam mais facilmente aparentes. Algumas diferenças e os motivos dessas diferenças se tornam ainda mais aparentes depois que você vê que a economia do desenvolvimento de software é muito diferente de muitas outras disciplinas - a construção é barata (quase gratuita, em muitos casos), enquanto o design é a parte cara.
Isso é [CMMI] algo que transformará desenvolvimento em engenharia?
Não. O CMMI é uma estrutura de melhoria de processo que fornece orientação às organizações sobre que tipos de atividades são úteis na criação de software. As disciplinas de engenharia geralmente têm um processo de engenharia. Ter esse processo é importante para a conclusão bem-sucedida de projetos de alta qualidade. Dito isso, o CMMI (ou qualquer outra estrutura ou metodologia de processo) é apenas uma ferramenta - o uso não fará com que você avance magicamente de um desenvolvedor para um engenheiro. No entanto, não seguir algum tipo de processo é, na minha opinião, um sinal de um projeto que não é um projeto de engenharia.
Além disso, qual sua opinião sobre os cursos / certificados de engenharia de software?
É apenas o valor que as outras pessoas colocam nele. Existem cursos úteis e cursos inúteis. Existem certificados valiosos e certificados que não valem o papel em que são impressos. Existem muitos fatores, de quem está endossando ou credenciando o curso ou quem está emitindo o certificado para o seu setor de trabalho atual, para o seu emprego atual e para onde deseja ir.