Que habilidades devo cultivar para me tornar um líder técnico / de desenvolvimento? [fechadas]

81

Atualmente sou um programador profissional. Eu quero expandir meu conjunto de habilidades, mas também quero fazer a carreira saltar para ser um líder de desenvolvimento como parte de uma equipe. Eu sei que tem muito a aprender (e isso não será uma coisa instantânea), mas eu acho que sou inteligente o suficiente para fazer isso e estou pronto para o desafio.

Tenho certeza de que muitos dos membros aqui provavelmente já passaram por isso, e agora são leads de sucesso. Infelizmente, embora eu conheça algumas áreas pessoais que eu gostaria de melhorar (conhecimento profundo, amplitude de conhecimento, habilidades, etc.), eu não tenho certeza de como eu começaria algo assim.

Como programador agora, quais etapas devo seguir para chegar a esse objetivo? O que devo priorizar?

    
por lunchmeat317 19.03.2013 / 01:31
fonte

4 respostas

87

Para se tornar um líder técnico, os seguintes são essenciais

  • A capacidade de orientar os membros da equipe em todos os níveis de senioridade, de alguém que ficou fora da universidade por três meses a uma pessoa que está programando há 30 anos

  • Um bom conhecimento do seu domínio de desenvolvimento. Isso inclui: idiomas, estruturas, utilitários, ambientes de desenvolvimento

  • Uma sólida compreensão dos sistemas de gerenciamento de problemas, habilidades de gerenciamento de projetos e controle de versões

  • Seja o assassino de bugs de perto

  • Saiba como conduzir revisões de código oportunas, o que procurar e como minimizar a quantidade de tempo que elas levam para manter e as alterações a serem feitas

  • Mantenha-se atualizado com os desenvolvimentos no seu domínio de desenvolvimento. Por exemplo, se você não aprendeu novas estruturas ou tecnologias a partir do .NET 2, você estaria fazendo as coisas de uma forma bastante atrasada hoje.

  • Como escrever testes de unidade e simulações e fazer com que seus desenvolvedores as gravem também

  • Conhecimento de quais padrões de design são e quando usá-los

  • Conhecimento do que o código cheira e como mitigá-lo

  • Integração contínua

  • A capacidade de planejar projetos e lançamentos

Dependendo da sua organização e da existência de arquitetos na equipe, você provavelmente precisará saber o seguinte:

  • A capacidade de compor seus projetos e dividi-lo em partes funcionais

  • Uma compreensão completa da segurança, incluindo a maneira correta de lidar com senhas, separar sistemas, proteger dados, etc.

  • Conceitos de empresa, como barramentos de serviços, 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 fizer apenas .NET, PHP ou Java.

  • Projete o aplicativo de modo que futuros aprimoramentos sejam facilmente acomodados

Se você for um gerente de desenvolvimento, também precisará:

  • Entrevistando habilidades e como encontrar a equipe certa
  • Como lidar com problemas de pessoas com os membros da sua equipe
  • Gerenciando diretivas / metas de negócios e convertendo as relevantes para 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:

  • Aprenda fora do seu domínio de desenvolvimento

  • Aprenda a dizer NÃO quando as coisas não são possíveis ou estão fora do escopo ou conflitam com restrições, como orçamento ou tempo.

Gerenciar uma equipe é um papel desafiador para estar dentro Você precisa ser a pessoa que pode responder a qualquer pergunta, você precisa saber as tecnologias certas para usar (a menos que você tenha um arquiteto), você tem que ter habilidades de gestão de pessoas e ser acessível por sua equipe (assumindo uma posição de gerenciamento). Além disso, você precisa ter habilidades precisas de estimativa para garantir a lucratividade do projeto e precisa ser capaz de sujar as mãos com o código de qualquer pessoa para identificar problemas e corrigi-los rapidamente. Você precisa evitar fazer tudo sozinho e promover um ambiente de equipe que não seja tóxico. Você precisa estar sempre no topo de sua pilha de tecnologia e conhecer 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ê-la bem. Saiba como fazer replicação, procedimentos armazenados, como o otimizador de consulta funciona e como projetar um esquema corretamente e quais campos indexar.

Independentemente da posição exata, qualquer função sênior exige que você tenha a capacidade de se comunicar de forma eficaz. Se você não é um orador confiante, procure fazer algo como Toast Masters (falar em público). Aprenda como para fazer e manter contato visual. Seja confiante. Vista-se adequadamente para a posição. Liderar pelo exemplo.

    
por 19.03.2013 / 01:44
fonte
27

Na minha experiência, o Lead tem um pouco menos a ver com o trabalho sujo de programação prática e mais com o gerenciamento. Para esse fim, eu recomendo o seguinte

  1. Invista mais tempo em projetos e atividades de arquitetura e desenvolvimento . Como líder, sua função será centrada em fornecer orientação técnica e orientação para sua equipe. Você será encarregado mais para entender como partes de um todo se encaixam e menos como funciona o encanamento. Não me entenda mal, você precisa de habilidades técnicas sólidas para ser um líder eficaz e experiente, mas uma visão de alto nível do que está acontecendo e como vai funcionar será mais crucial aqui. Você deve conhecer mais padrões de design de práticas recomendadas e práticas eficazes de codificação

  2. Aprenda a executar várias tarefas e gerenciar o tempo . Se você é bom nisso agora, é legal: desenvolver mais. Como desenvolvedor, você tem apenas sua tarefa / projeto atual para se preocupar. Como líder, você terá

    • Para participar de mais reuniões do que você gosta. Esta é talvez a parte mais entorpecente da liderança da equipe
    • Trabalhe na alocação de recursos. Se você tiver sorte, os recursos serão escassos e os projetos serão abundantes.
    • Assuma a liderança em arquitetura e design de projetos
    • Dependendo do tamanho e da estrutura da organização, forneça inúmeros relatórios, dentro do prazo e no prazo. Pense no lead como um gerente de projetos de baixa renda.
  3. Prepare-se para delegar com eficácia . Este OMI será o mais difícil para se ajustar. Como desenvolvedor, você está acostumado a sujar as mãos, fazer as coisas acontecerem. Fazendo todo o encanamento e pesquisa. Isso vai ter que parar ou ser reduzido. Os shows chegam, você distribui para a equipe. Você terá um pedaço da ação, não tanto quanto você está acostumado. E você morderá a língua para resistir à tentação de conseguir mais ação por si mesmo.

  4. Ao longo da linha mais profissional, considere um treinamento que não apenas aumentará sua capacidade, mas também alterará seu ponto de vista . Um curso intensivo em, digamos, gerenciamento de projetos de software não vai doer. O Lean Six Sigma também é um programa de treinamento muito bom (posso comprovar sua eficácia) que ajudará a analisar a solução de problemas de um ângulo mais lógico. Sem mencionar que, da posição de liderança, você está pronto para funções ainda mais avançadas que exigirão menos habilidade técnica prática e mais capacidade de gerenciamento.

  5. Aprimore suas habilidades de comunicação e interpessoais . Você será o principal ponto de entrada para sua equipe do mundo exterior. Seu gerente ou outro supervisor irá até você primeiro. Outras unidades / equipes em sua organização irão interagir com você em qualquer coisa relacionada à equipe primeiro. Você vai administrar o recurso mais difícil e imprevisível de todos: as pessoas. Você precisa criar uma pele grossa, aprender a engolir grandes quantidades de orgulho e assumir a responsabilidade pela falha de sua equipe.

por 19.03.2013 / 02:26
fonte
14

Coisas que Sam não disse também são importantes:

  • Como especificar coisas e dar trabalho a outros desenvolvedores. Parte do seu trabalho é manter os outros desenvolvedores 100% utilizados. Escrever especificações que não sejam ambíguas é muito importante.

  • Como criar um aplicativo de esqueleto / protótipo que todos os outros devem seguir

  • Como fomentar a boa moral da equipe

  • Como participar, conduzir e liderar reuniões, como documentar itens de ação

  • Como estimar, redigir um plano de projeto e atualizar o plano do projeto

  • Como investigar o futuro - se um problema acontecer em 3 meses, você quer tentar desativá-lo o mais cedo possível. Se um desenvolvedor sair de férias por sete semanas, você precisa começar a planejá-lo agora.

  • Como falar com a gerência. Eles falam uma língua diferente para nós. Dê-lhes soluções, não problemas. Diga-lhes o que o material técnico significa para eles.

E enquanto Sam já disse isso, uma das coisas mais importantes é aprender a dizer não . Você estará fazendo isso um lote . A outra maneira de olhar para isso é dizer sim , mas "somente se conseguirmos mais dinheiro / tempo / recursos" - ou "para a segunda versão":)

    
por 19.03.2013 / 01:54
fonte
11

Todos estes são pelo livro e boas respostas. Permita-me bater em você pela realidade.
Acredite ou não, a maior parte do tempo você gastará explicando os gerentes

  • como um problema é difícil de resolver ou
  • por que não pode ser resolvido em uma determinada linha do tempo ou
  • até quão menos importante é resolver.

Para isso, você precisa das habilidades de explicar coisas técnicas para pessoas não técnicas, em termos não técnicos. E é muito difícil. por exemplo. considere explicar P = NP a 6 anos de idade. Infelizmente não há treinamento formal para isso, e você tem que aprender por conta própria.

Além disso, esta é a posição em que a política começa a bater em você. O gerente lhe dirá para favorecer uma pessoa porque ela segue o processo, mas você sabe que a pessoa não tem utilidade em sua equipe por vários motivos, desde falta de habilidades técnicas até não um bom membro da equipe. Então, você ainda precisa não apenas trabalhar com essa pessoa, mas também dar boas avaliações a essa pessoa. O oposto é a pessoa que tem boas habilidades e um membro da equipe muito eficaz, mas que não sabe como agradar a administração e, portanto, recebe menos avaliações.
Em seguida, há reuniões inúteis em alto nível, em locais remotos, palestras sobre os processos eficazes e como a sua mais recente variação no processo vai aumentar a produtividade. Você deve saber como esconder seu rosto chato e parecer enérgico.

    
por 19.03.2013 / 05:31
fonte