A faixa técnica

Há um problema comum no setor de software, especialmente entre as empresas que sobreviveram a crescimentos de crescimento rápido: os melhores engenheiros de software não têm para onde ir, mas para cima.

Acima da cadeia de gerenciamento, isto é – longe do código e dos detalhes, na terra de reuniões, roteiros, arquitetura e planejamento de custos. Parece um destino cruel para os melhores artesãos no seu auge. Será que nos atrevemos a "promover" um pintor de classe mundial, alguns anos em seu trabalho autodefinido, para o departamento administrativo de um museu? … ou um jovem autor brilhante para uma posição de cópia em um editor de livros?

Algumas pessoas escolhem o caminho da gestão de seres humanos e projetos, e isso é ótimo, mas cabe a todos criar um outro caminho para aqueles que não o fazem. Na engenharia de software, esse segundo caminho geralmente é chamado de "faixa técnica". Promessas de campos verdes e código infinito chamam de além do horizonte para aqueles que preferem fazer seu artesanato e melhorar suas habilidades ao longo do tempo. Essas promessas são por vezes vazias ou mal explicadas porque a maioria das empresas de software não possui uma pista técnica que encoraje e defina o sucesso.

O que o progresso parece na pista técnica?

Temos apenas alguns exemplos famosos de sucesso inequívoco na pista técnica, como Guido van Rossum e Donald Knuth , mas nenhuma orientação real sobre como configurar essa faixa. E se houvesse uma melhor visão compartilhada para a faixa técnica, as empresas poderiam usar e modificar para atender às suas necessidades? E se ambas as empresas de software e seus engenheiros pudessem estar confiantes e entusiasmados com o futuro da entrega de código e detalhes, não projeções e planilhas para todos? E se, na verdade.

A melhor faixa técnica enfatiza o crescimento, contribuição e liderança, tudo centrado em um núcleo técnico. Embora os engenheiros de software precisem das habilidades das pessoas para serem bem-sucedidos em uma equipe, e essas habilidades devem melhorar ao longo do tempo com suas habilidades técnicas, o foco da pista técnica deve ser, bem … técnico.

O que significa ser um excelente engenheiro de software?

Esta questão serve como nossa base: o que "bem-arredondado" significa, tecnicamente? Primeiro, proponho algumas dimensões ao longo das quais excelentes engenheiros de software devem se destacar, em um artigo posterior descrevem como melhorias ao longo dessas dimensões levam a um progresso real ao longo da pista técnica.

1. Produtividade – Acima de tudo, um excelente engenheiro de software é intensamente produtivo, muitas vezes criando muitas vezes o valor comercial real criado por suas coortes juniores.

2. Solução de problemas – A excelência em engenharia de software não pode ser definida sem o problema de problemas de problemas técnicos brutos em disciplinas e com sistemas em diferentes estados de reparo.

3. Qualidade – O código, a documentação e a saída de discussão de um excelente engenheiro de software são consistentemente de alta qualidade, servindo como exemplos para desenvolvedores mais novos.

4. Conhecimento técnico – Os engenheiros devem ter conhecimento de uma ampla gama de sistemas e padrões em engenharia de software. Eles usam esse conhecimento para melhor projetar novos sistemas e treinar outros.

5. Design do sistema – comumente denominado "arquitetura", isso é importante para todos os engenheiros de software, especialmente aqueles que funcionam em uma organização sem arquitetos dedicados.

6. Negócios / conhecimento do produto – Os melhores engenheiros de software compreendem a indústria e os produtos de suas empresas de forma íntima e trabalham para oferecer o melhor valor para o negócio, não apenas pelo próprio software.

7. Dados e evidências – Confiar em avaliações intestinais ou depuração aleatória são erros mais comuns. Os melhores engenheiros obtêm apenas dados suficientes para provar a si mesmos e seguir os dados para uma solução.

8. Confiança e comunicação – Todos esses atributos serão subavaliados se o engenheiro não for um comunicador confiante, claro, conciso e inspirador tanto para as partes interessadas da empresa quanto para outros engenheiros.

9. Suporte de produção – Os melhores engenheiros sabem que sua responsabilidade não pára na implantação de seu código. Eles possuem seus sucessos e erros até os sistemas de produção.

10. Planejamento e execução – A execução excelente do projeto depende do planejamento metódico e consistente de todos os engenheiros envolvidos. O melhor deve liderar esses esforços pelo exemplo.

No Return Path , essas dimensões ajudam a definir nossa pista técnica e mapear o que significa crescer em um excelente engenheiro de software. Trabalhamos em estreita colaboração com nossos engenheiros para garantir que eles estão se aprimorando em dois ou três desses em qualquer momento, e eles têm uma visão clara de seu futuro caminho de carreira na empresa.

Esta é apenas metade da batalha, no entanto. Podemos medir e sintonizar os engenheiros ao longo deste espectro, mas como reconhecemos ou definimos a antiguidade ao longo da pista técnica? Vou deixar essa pergunta para a próxima.

Este artigo é a Parte I de uma série de três partes na pista técnica em software.