Para se tornar um líder técnico, é essencial o seguinte
A capacidade de orientar membros da equipe em todos os níveis de antiguidade, de alguém que está fora da universidade há 3 meses a uma pessoa que programa há 30 anos
Um bom conhecimento do seu domínio de desenvolvimento. Isso inclui: idiomas, estruturas, utilitários, ambientes de desenvolvimento
Um sólido entendimento dos sistemas de gerenciamento de problemas, habilidades de gerenciamento de projetos e controle de versão
Seja o assassino de insetos
Saiba como conduzir revisões oportunas de código, o que procurar e como minimizar a quantidade de tempo que eles demoram para manter e as alterações a serem feitas
Mantenha-se atualizado com os desenvolvimentos em seu domínio de desenvolvimento. Por exemplo, se você não aprendeu novas estruturas ou tecnologias do .NET 2, estaria fazendo as coisas hoje de maneira bastante retroativa.
Como escrever testes de unidade e zombarias e fazer com que seus desenvolvedores também os escrevam
Conhecimento sobre o que são padrões de design e quando usá-los
Conhecimento sobre o que são odores de código e como mitigá-los
Integração contínua
A capacidade de planejar projetos e lançamentos
Dependendo da sua organização e se você possui arquitetos na equipe, provavelmente precisará saber o seguinte:
A capacidade de compor seus projetos e dividi-los em partes funcionais
Um entendimento completo da segurança, incluindo a maneira correta de lidar com senhas, separar sistemas, proteger dados etc.
Conceitos empresariais, como barramentos de serviço, filas de mensagens, BizTalk
Padrões de design corporativo
Arquiteturas de serviço / RPC, como SOAP e REST
Estruturas ORM, como Hibernate, Entity Framework, Doctrine
Implantação contínua
A nuvem
A capacidade de recomendar as tecnologias corretas para usar em um projeto. Isso pode ser difícil se sua equipe / loja executar apenas .NET, PHP ou Java.
Projete o aplicativo de maneira que as melhorias futuras sejam acomodadas com facilidade
Se você for um gerente de desenvolvimento, também precisará de:
- Entrevistando habilidades e como encontrar a equipe certa
- Como lidar com problemas de pessoas com os membros da sua equipe
- Gerenciando diretrizes / objetivos de negócios e convertendo os relevantes em informações para seus desenvolvedores
- A capacidade de estimar o tempo para programadores de habilidades variadas
- A capacidade de alocar tarefas para os desenvolvedores corretos com base em suas habilidades e habilidades
E, finalmente, alguns outros pontos recomendados:
O gerenciamento de uma equipe é um papel desafiador. Você precisa ser a pessoa que pode responder a qualquer pergunta, precisa conhecer as tecnologias certas a serem usadas (a menos que tenha um arquiteto), precisa ter habilidades de gerenciamento de pessoas e ser acessível por sua equipe (assumindo um cargo de gerência). Além disso, você precisa ter habilidades precisas de estimativa para garantir a lucratividade do projeto e precisa sujar as mãos com o código de qualquer pessoa para identificar problemas e corrigi-los rapidamente. Você precisa evitar querer fazer tudo sozinho e promover um ambiente de equipe que não seja tóxico. Você precisa permanecer continuamente no topo de sua pilha de tecnologias e aprender os mais recentes desenvolvimentos e técnicas, bem como tendências mais amplas do setor.
Você também deve conhecer pelo menos uma plataforma de banco de dados e conhecê-lo bem. Saiba como fazer replicação, procedimentos armazenados, como o otimizador de consultas funciona e como projetar um esquema adequadamente e quais campos indexar.
Independentemente da posição exata, qualquer função sênior exige que você tenha a capacidade de se comunicar efetivamente. Se você não é um orador confiante, tente fazer algo como o Toast Masters (falar em público). Saiba como fazer e manter contato com os olhos. Seja confiante. Vista-se adequadamente para a posição. Lidere pelo exemplo.