ti-enxame.com

Quais são as principais diferenças entre engenheiros de software e programadores?

Quais são as principais diferenças entre engenheiros de software e programadores?

102
grokus

Ao contratar, procuramos uma distinção entre alguém que possa nos ajudar a arquitetar nosso sistema, definir processos, criar especificações técnicas, implementar refatoração avançada etc. e alguém que nos ajudará a concluir as tarefas de programação em uma lista de verificação . Eu acredito que você poderia chamar o antigo de Engenheiro de Software e o último de Programador.

79
Nicole

Depende da empresa, pois não acho que exista uma estrutura legal para impor uma denominação ou outra, ou pelo menos não que eu saiba e isso pode variar de país para país (por exemplo, o uso do termo "engenheiro" é realmente bastante regulamentado na França, mas existem variantes permitidas para os casos "abusivos").

Dito isto, a tendência geral é assim:

  • Uma posição programador geralmente é a de profissional contratado para produzir o código de um programa de computador . Isso implica que você sabe escrever código , pode entender um algoritmo e seguem as especificações . No entanto, geralmente pára por aí em termos de responsabilidade.

  • Uma posição desenvolvedor é geralmente considerada um super-tipo da posição do programador . Ele abrange as mesmas responsabilidades: mais a capacidade de projetar e arquitetar um componente de software e de escreva a documentação técnica para ela (incluindo especificações). Você é capaz de - pelo menos tecnicamente - liderar outras pessoas (portanto, programadores), mas não necessariamente uma equipe (aí vem a confusão ...)

  • Uma posição engenheiro normalmente implica que você é um desenvolvedor que possui um tipo específico de diploma , alguns conhecimento de engenharia e é capaz de projetar um sistema (como em: uma combinação de software componentes/módulos que juntos formam uma entidade de software inteira). Basicamente, você vê uma imagem mais ampla e é capaz de projetar e explicar e separando-o em módulos menores .

No entanto, tudo isso é discutível e, como eu disse, não há nenhum requisito legal que eu conheça nos países dos EUA/Reino Unido Dito isto, na França, você só pode se chamar de "engenheiro" se for de uma escola de engenharia (reconhecida pela Comissão dos Titãs dos Engenheiros ou algo assim). Você não pode dizer que possui um "diploma de engenheiro", mas pode dizer que tem um "diploma de engenharia" se tiver estudado uma disciplina que se enquadra no portemanteau de engenharia e tecnologias.

Pode ser que alguns países tenham uma distinção semelhante, eu realmente não sei.

Voltando ao título de engenheiro de software ... Certa vez, um dos meus professores disse à nossa turma - e com razão - que atualmente não existe tal coisa como a chamada "engenharia de software". Porque projetar algo (seja um edifício, um veículo, uma peça de hardware ...) significa que você é capaz de visualizar seu design e todas as fases de sua produção, e prever com precisão os recursos necessários e, portanto, o custo da produção.

Isso é verdade para a maioria das "verdadeiras" disciplinas de engenharia. Existem flutuações, é claro (os preços dos materiais variam ao longo do tempo, por exemplo), mas existem modelos teóricos muito finitos (para design e planejamento) e modelos empíricos (para manter praticamente qualquer um dos primeiros dentro de restrições acessíveis) que permitem prever a data de término de um projeto e seu uso de recursos.

O principal problema do software é que ele ainda não está lá. Queremos ter como objetivo a engenharia de software, mas ainda não estamos lá. Porque temos um ambiente muito fluido e dinâmico, restrições muito variáveis ​​para projetos e ainda falta de maturidade em retrospecto em nossos processos. É claro que poderíamos dizer que somos melhores nisso (altamente discutíveis com dados concretos), mas só o fazemos desde os anos 60 (projetos anteriores eram na verdade mais próximos de computadores apenas de hardware, portanto mais próximos da engenharia real, ironicamente) ) Considerando que construímos veículos a motor há mais de um século, veículos em geral por alguns milênios e construímos por ainda mais milênios (e temos sido muito bons nisso, em algumas partes do mundo, fazendo você se sentir como nós). somos crianças ridículas brincando com nossos novos brinquedos chamativos em comparação).

Nós falhamos em prever sistematicamente os prazos com precisão , nós falhamos em prever sistematicamente os custos com precisão , falhamos em identificar e mitigar sistematicamente os riscos inerentes e externos de forma eficiente e determinística . O melhor que podemos fazer é produzir o suficiente --- guesstimates, e acomodar um pouco de buffer, enquanto tentamos ao máximo otimizar os processos para reduzir ciclos e sobrecarga.

Mas veja, talvez seja isso que é a engenharia. E é isso que, quando alguém fala sobre um "engenheiro de software", deve pensar e procurar.

Portanto, isso parece dificilmente intercambiável com o simples ato de rotinas de programação ou o ato mais avançado de desenvolvimento de aplicativos.

Ainda assim, tudo é uma questão de tendências. Ultimamente, é bastante comum ter uma equipe de desenvolvimento horizontal, onde todos na equipe são desenvolvedores de software sênior (sim, maiúsculas, porque isso nos faz sentir especiais, não é?), Sem distinção de idade real (bastante, na minha opinião) opinião) e não tanta distinção de habilidades (uh-oh ...) e responsabilidades (agora que não podem ser boas, exceto puramente pelo burburinho das relações públicas).

Também é às vezes apenas uma força do hábito e específica à cultura e ao jargão de uma indústria. Mais posições na produção de software incorporado usam títulos para engenheiros de software. Principalmente porque provavelmente implicaria que você sempre terá que lidar em certa medida com o hardware também neste campo, então obviamente lida com outros aspectos da produção e de todo o "sistema" que produz. Não apenas os pedaços enlouquecendo dentro dele. Por outro lado, você não vê realmente o termo engenheiro sendo usado em posições de produção de software financeiro. É porque é uma evolução mimética dessa indústria de um de seus antecessores (por exemplo, a engenharia embarcada encontra suas raízes na engenharia automotiva, por exemplo), ou porque eles querem apenas dar mais ou menos crédito/peso a uma posição.

E certifique-se de perder todos no meio do nevoeiro, você encontrará outros títulos misturando os dois (como "Engenheiro de desenvolvimento de software" ou "Engenheiro de software em teste"!) E outros enfatizando até mais pontes malucas com outros domínios (pense em "Arquiteto de Software" e em como "arquitetura de software" pode ser um roubo descarado de vocabulário). E faça com que eles venham: Engenheiro de Liberação, Gerente de Desenvolvimento de Mudanças, Engenheiro de Construção (que também funciona lá fora). E às vezes simplesmente "engenheiro".

Espero que tenha ajudado, embora não seja realmente uma resposta.

Ah, e isso significa que sua nova empresa está tentando atraí-lo com um novo título ou que eles realmente não se preocupam com títulos ou que você realmente terá uma posição de nível superior. A única maneira de saber é ler as especificações do seu trabalho, conversar com elas e, eventualmente, tentar e julgar por si mesmo. Espero que seja a última opção e que você esteja feliz com ela (e potencialmente lucre mais com isso). ;)

130
haylem

Engenheiros de software são pessoas que trabalham em empresas que chamam as pessoas que escrevem para eles de "engenheiros de software".

Programadores são pessoas que trabalham em empresas que chamam as pessoas que escrevem software para elas como "programadores".

Também existem desenvolvedores ou desenvolvedores de software. São pessoas que trabalham em empresas que chamam as pessoas que escrevem software para "desenvolvedores" ou "desenvolvedores de software", respectivamente.

81
Jer

Portanto, existe o "Engenheiro de software", o "Programador" e também o "Desenvolvedor", "Coder" e você nunca pode esquecer o "especialista em SOA"

Estes são termos de marketing para pessoas que não podem dizer algo significativo em seu currículo, como seu papel real (não apenas o cargo) em cargos anteriores.

Nos anúncios de emprego, a diferença é da pessoa de RH.

Bottom line: cada pessoa tem sua própria opinião sobre "o que faz um bom funcionário que trabalha com código", e alguns gostam de associar tais e tais habilidades com tais e tais títulos.

O que você precisa fazer? Os anúncios de emprego devem ser descritivos sobre as habilidades necessárias e os currículos devem explicar os detalhes da experiência do candidato.

15
Ken Egozi

Sem diferenças Eles são a mesma coisa. As empresas, no entanto, podem ter descrições formais de cargos usando os termos e, em seguida, pode haver algum significado específico da empresa para o termo.

10
GrandmasterB

A programação é sobre o código. A engenharia de software é sobre o produto final.

8
darreljnz

Em algumas jurisdições, "Engenheiro" carrega consigo o requisito de ser um engenheiro profissional, que possui um P. Eng. identificação entre as credenciais. No entanto, em outras áreas, pode não haver tanta diferença quanto eu era um "engenheiro de design da Softwere" trabalhando no estado de Washington há alguns anos.

3
JB King

Isso realmente depende de como a empresa define as posições. Pode ser que, como engenheiro de software, você tenha mais oportunidades de decisão de design, enquanto, como desenvolvedor, eles forneceriam diagramas UML e você escreveria o programa.

Porém, não existe uma definição de conjunto real para que, com base no título, as pessoas saibam o que você faz ou qual a sua experiência.

Quando eu era arquiteto/desenvolvedor, meu título era cientista da computação, mas eu apenas dizia às pessoas que eu era programador, pois os dois primeiros não são facilmente definidos, mas a maioria das pessoas sabe o que um programador faz.

Se um título é importante para você, aceite o novo, pois o engenheiro soa mais alto que um desenvolvedor.

3
James Black

Não acho que haja "diferenças oficiais", para minha experiência que possa significar:

  • Algumas empresas usam engenheiros de software e desenvolvedores de software para se referir à mesma coisa. Eles apenas usam seu termo favorito.
  • Outro usa os dois termos para diferentes posições internas, mas os papéis variam de empresa para empresa! Em alguns casos, pode haver apenas uma diferença na função (um engenheiro de software trabalhará na manutenção e melhoria dos sistemas enquanto um desenvolvedor trabalhará no produto da empresa) ou pode ser hierárquico (o engenheiro está acima do desenvolvedor), ou mesmo o engenheiro é realmente dependente de perguntas e respostas!

Além disso, também existem termos de moda que mudam ... Primeiro, o termo era "programador", depois "engenheiro de software" e agora parece ser "desenvolvedor" ...

É melhor ler a descrição do trabalho ou alguém da empresa específica

3
Khelben

Os engenheiros de software tendem a trabalhar em sistemas muito grandes que levam muitos anos para serem desenvolvidos, por exemplo 5 a 16 anos, por exemplo. Os programadores tendem a ter esse estereótipo de apenas codificação e nada mais. Mas isso realmente depende da organização em que você trabalha e de como o RH está promovendo o papel, conforme explicado acima. Eles são essencialmente a mesma coisa. Só não fique muito apegado a um título porque é sinônimo.

2
Siamac Nikoo