SheCanCode
A resposta? Bem, depende de quem você pergunta!
Não há uma distinção oficial entre os papéis, com as empresas usando sua própria experiência e conhecimento para definir descrições que se adaptem às suas necessidades. Para confundir ainda mais, pode haver também variações regionais, com uma diferença distinta na educação. Contudo, a variedade de fontes de dados pode ser avaliada e analisada para tirar conclusões a partir de.
De acordo com a licenciatura em Ciências da Computação, os programadores e engenheiros de software do Hub têm funções separadas:
“Engenharia de software refere-se à aplicação de princípios de engenharia para criar software. Os engenheiros de software participam do ciclo de vida do desenvolvimento de software através da conexão das necessidades do cliente com as soluções tecnológicas aplicáveis. Assim, eles desenvolvem sistematicamente processos para fornecer funções específicas. No final, engenharia de software significa usar conceitos de engenharia para desenvolver software.
Por outro lado, os desenvolvedores de software são a força criativa motriz por trás dos programas. Os programadores de software são responsáveis por todo o processo de desenvolvimento. Eles são os que colaboram com o cliente para criar um desenho teórico. Eles então têm programadores de computador que criam o código necessário para executar o software adequadamente. Os programadores de computador testam e corrigem os problemas em conjunto com os desenvolvedores de software. Os desenvolvedores de software fornecem a liderança do projeto e orientação técnica ao longo de cada etapa do ciclo de vida do desenvolvimento do software”
Udacidade concorda que há uma forte separação:
“Os termos Software Developer e Software Engineer, ao contrário da crença popular, não são intercambiáveis. Um Desenvolvedor sabe como codificar e pode ter as habilidades técnicas necessárias para construir produtos significativos. Um engenheiro de software segue um processo sistemático de entendimento dos requisitos, trabalhando com as partes interessadas e desenvolvendo uma solução que atenda às suas necessidades. Um Desenvolvedor tende a trabalhar sozinho. Um engenheiro de software faz parte de uma equipe maior”
Então o que isso significa na prática? Vamos explorar a diferença com mais detalhes.
/p>
Habilidades de Engenheiro de Software e Descrições de Trabalho
br>Um Engenheiro de Software é um Desenvolvedor de Software altamente proficiente que é capaz de gerenciar um sistema complexo. Uma pessoa que não só é capaz de construir um aplicativo totalmente funcional, mas que tem experiência suficiente para saber como construí-lo de uma forma que é fácil de refactor, autodocumentar, e como resultado, mais fácil de depurar.
Têm um papel activo como líder, consultor e colaborador individual em vários projectos. Eles devem fornecer consultoria analítica na identificação e implementação de novos usos de TI para ajudar os clientes e a empresa a alcançar objetivos estratégicos. Eles devem ser capazes de gerenciar recursos, coordenar tarefas de desenvolvimento e supervisionar planos técnicos de projetos. Eles freqüentemente colaboram com a equipe de TI, operações e desenvolvimento através do ciclo de vida de desenvolvimento de software
Sabem que a consideração e a previdência no front end podem poupar dias de trabalho e dores de cabeça no caminho. Eles se dedicam não a fazer o código mais inteligente, mas a tornar seu código óbvio. Eles sabem que a melhor peça de código é aquela que você nunca precisa escrever.
Engenheiros de software devem:
- p>P>Disponibilizar conhecimentos técnicos, com experiência trabalhando em uma ampla gama de projetos
- p>P>Ser proficientes com design de padrões para criar sistemas resilientes e tolerantes a falhas/li>
- p>Utilizar a automação de testes usando ferramentas como Gherkin, Cucumber ou Ansible
- p>p>Saber como criar e manter a arquitetura de TI, armazenamento de dados em larga escala e sistemas baseados em nuvem.
-
Build scalable deployment pipelines, to support Continuous Integration and Continuous Delivery
-
They must be able to work effectively by themselves and with remote teams.
-
Senior software engineers must oversee complex systems analysis, design and development programs.
A Software Engineer role will typically involve:
-
Research, design, develop and test their software as well as compiling and distributing software over the network
-
Modify existing software is to resolve defects, to adopt a new hardware or improve its performance.
-
Analyze the user needs and assess software requirement including design feasibility and cost/time constraints.
- p>consultando com os clientes quanto à especificação e projeto.
- p>p>Coordenação do software do sistema para implantação e instalação
- p>p>Supervisionar é o trabalho de tecnólogos e engenheiros
>/p>
Habilidades do desenvolvedor de software e descrição do trabalho
Um desenvolvedor de software não é apenas responsável pela escrita do código, ele também deve rever o sistema atual, fazendo idéias de melhorias, incluindo o esforço necessário para fazê-lo. Um desenvolvedor de software irá trabalhar de perto com analistas, usuários finais/marketing e designers.
Os desenvolvedores de software também devem garantir que seu código funcione testando-o, usando situações controladas e reais antes que você possa ir ao vivo. Eles devem ter um olho para a perfeição, a fim de resolver adequadamente bugs e revisões de programas para aumentar a eficiência operacional.
O melhor desenvolvedor de software é criativo e tem a perícia técnica para chegar a uma idéia inovadora para resolver um problema do cliente e tem experiência suficiente para ver muitos problemas antes que eles surjam.
Um desenvolvedor de software normalmente seguindo uma metodologia de ciclo de vida de desenvolvimento ou framework de entrega como Scrum, XP, ou Kanban.
Os desenvolvedores de software devem ter:
-
Excelente habilidade analítica porque eles serão obrigados a comparar continuamente as necessidades com as capacidades do software.
- p> Devem estar familiarizados com linguagens de computador para trabalhar eficazmente com programas de computador, tais como Java, C#, C++, Python
- p> Ser experientes no uso de ferramentas de código aberto, tais como GitHub
- p>Great feedback e habilidades de comunicação, com uma forte atenção aos detalhes, pois pequenos erros podem resultar em grandes problemas
- p>p> Estar orientado aos detalhes irá ajudá-los a gerenciar projetos simultâneos em diferentes estágios de desenvolvimento.
- p>p>Entender a lógica do código mesmo em linguagens que desconhecem.
Os desenvolvedores de software devem monitorar continuamente as mudanças que fazem, incluindo a resolução de defeitos, para garantir alta qualidade e consistência. Consequentemente, eles devem alternar constantemente entre trabalho atribuído, gerenciamento de prazos e cronogramas.
Sumário
Para resumir as principais diferenças entre o desenvolvedor e o engenheiro de software:
Um desenvolvedor executa. Os seus talentos muitas vezes se concentram em uma única área. Sem a necessidade de um “grande quadro”. Então o desenvolvedor de software está focado principalmente no desenvolvimento de código que é parte do ciclo de desenvolvimento de software.
Um engenheiro projeta e planeja aplicando os princípios da engenharia ao desenvolvimento de software. Sempre atento ao “big picture”, com talentos em muitas áreas. Um engenheiro pode assumir a função de desenvolvedor, mas o foco central de um engenheiro está na arquitetura.
No final, a principal diferença entre engenharia de software e desenvolvimento de software é que o último supervisiona a engenharia enquanto o primeiro se concentra na criação de programas funcionais.
Anyone pode ser um desenvolvedor de software. Se você conhece uma pequena quantidade de conceito de programação, então você tem a base para se tornar um desenvolvedor de software. Eles escrevem código sem qualquer análise de performance e escalabilidade. Mais desse elemento é completado pelo Engenheiro de Software, tornando essa função diferente de um Desenvolvedor de Software.
Há sempre algo novo a aprender se você for um Desenvolvedor ou Engenheiro de Software, com muitas pessoas alternando entre as duas funções, dependendo do projeto e do cliente.
Dê uma olhada no novo Beta Job Board da SheCanCode, que anuncia funções de empresas que levam a diversidade a sério. Você pode avaliar a diferença entre as atuais funções de Desenvolvedor e Engenheiro de Software para si mesmo.