Respostas:
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 . Acredito que você poderia chamar o ex- engenheiro de software e o último, programador .
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 de programador é geralmente a de um 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 seguir as especificações . No entanto, geralmente pára por aí em termos de responsabilidade.
Uma posição de desenvolvedor é geralmente considerada um supertipo da posição de programador . Ele abrange as mesmas responsabilidades, além da capacidade de projetar e arquitetar um componente de software e de escrever a documentação técnica para ele (incluindo especificações). Você é capaz de - pelo menos tecnicamente - liderar outras pessoas (programadores), mas não necessariamente uma equipe (aí vem a confusão ...)
Uma posição de engenheiro normalmente implica que você é um desenvolvedor que possui um tipo específico de diploma , algum conhecimento de engenharia e é capaz de projetar um sistema (como em: uma combinação de componentes / módulos de software que juntos formam uma entidade de software inteira) . Basicamente, você vê uma imagem mais ampla e é capaz de projetar e explicar e separá-lo em módulos menores .
No entanto, tudo isso é discutível e, como eu disse, não há requisitos legais de que conheço os 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 possui 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 não existe, atualmente, 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 (embora 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 por 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 de fato em alguma parte do mundo, fazendo você se sentir como se "
Nós não conseguem prever sistematicamente os prazos com precisão , que não conseguem prever sistematicamente os custos com precisão , que não conseguem identificar de forma sistemática e mitigar os riscos inerentes e externos de forma eficiente e determinística . O melhor que conseguimos fazer é produzir estimativas de estimativa suficientes e acomodar alguns buffers, enquanto tentamos 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 muita distinção de habilidades (uh-oh ...) e responsabilidades (agora que não podem ser boas, exceto puramente pelo burburinho de relações públicas).
Às vezes, também é apenas uma força de 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 que ficam loucos 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 para ter certeza de perder todo mundo no meio do nevoeiro, você encontrará outros títulos misturando ambos (como "Engenheiro de desenvolvimento de software" ou "Engenheiro de software em teste"!) E outros enfatizando pontes ainda mais loucas com outros domínios ( pense em "arquiteto de software" e em como "arquitetura de software" pode ser um roubo vergonhoso 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 importam 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). ;)
Engenheiros de software são pessoas que trabalham em empresas que chamam as pessoas que escrevem software para elas de "engenheiros de software".
Programadores são pessoas que trabalham em empresas que chamam as pessoas que escrevem software para elas de "programadores".
Existem também 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.
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.
Sem diferenças Eles são a mesma coisa. As empresas, no entanto, podem ter descrições formais de cargo usando os termos e, em seguida, pode haver algum significado específico da empresa para o termo.
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 que 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.
Não acho que haja "diferenças oficiais", para minha experiência que possa significar:
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
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.
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. Apenas não se apegue demais a um título porque é sinônimo.