Como você ajuda seus colegas programadores a crescer?


20

Como líder de equipe, como você pode ajudar seus programadores a crescer?

A razão pela qual pergunto isso é porque existem alguns programadores trabalhando comigo e eu realmente quero "deixá-los à solta", realizar seu potencial máximo e mantê-los felizes.

Mas não sei bem como fazer isso, tenho que

  1. Interaja com eles com frequência ou deixe-os descansar, deixe-os imperturbáveis?
  2. Peça que eles sigam as diretrizes de codificação, como impor testes de unidade, estilos de codificação ou deixe-os fazer o que bem entenderem?
  3. Seja indulgente com eles. Pessoas que realmente não se importam se realmente assumem o cargo por 8 horas ou 4 horas ou precisam impor algumas "disciplinas" no local de trabalho?

Adivinhe, cada posição tem seus próprios pontos, e pessoas diferentes argumentariam por coisas diferentes. Tais confusões tornam o gerenciamento de pessoas indefinidamente mais difícil.

O que você acha?


21
Alimente-os com rosquinhas.
SK-logic,

1
Cada programador trabalha de maneira diferente. Você realmente deve nos dizer mais sobre o que eles querem alcançar. Se você sabe disso, tudo o que você precisa fazer é oferecer a eles as ferramentas necessárias, conversar sobre o que eles trabalham com outras equipes e incentivar todos a se ajudarem. Isso é verdade mesmo que o objetivo de sua equipe já esteja definido, pois, mesmo nesse caso, eles mantêm a liberdade de como alcançam esse objetivo. Por outro lado, Scrum não joga bem com esse tipo de comportamento.
Thaddee Tyl

@ SK-logic: Rodada onde trabalho, a pizza é o método preferido.
Donal Fellows

Respostas:


9

É uma linha muito fina que você tem que andar.

No final, todas as decisões técnicas que você toma são decisões com as quais você não terá que conviver. Portanto, faça o menor número possível deles, deixe que as pessoas que vivem com eles façam suas próprias escolhas. Mas guie-os se você acha que eles estão seguindo um caminho ruim.

Por outro lado, as opções de processo são suas. Nessas decisões, deixe a equipe guiá-lo, mas, em última análise, você precisa tomá-las. Pelo menos a princípio.

Leia as três fases da maturidade de uma equipe de software de Roy Osherove e veja se você consegue descobrir em que estágio sua equipe está atualmente. Isso deve afetar a maneira como você age. Quanto mais caótico, mais você precisa colocar os controles no lugar. por exemplo. Em uma equipe extremamente caótica, você precisa começar revisando todo o código confirmado. Mas enquanto você faz isso, reserve um tempo para ensiná-los a revisar o código um do outro.

E se você conseguir puxar uma equipe do Caos para a Meia-Idade, mude seu comportamento nesse ponto, caso contrário, eles não se moverão mais (esse último por experiência pessoal).


6

Sim, gerenciar pessoas é indefinidamente mais difícil do que gerenciar computadores ou software, precisamente porque cada pessoa é diferente, e podemos mudar mesmo dia a dia. Portanto, não há resposta universal. Eu acredito que você só precisa se comunicar muito com seus desenvolvedores para conhecê-los e entender seus pontos fortes / fracos, sua atitude em relação ao trabalho e ao aprendizado, etc. Você pode aprender sobre cada um deles, se ele prefere muita comunicação e workshops, ou aprendendo sozinho em um canto tranquilo.

Os desenvolvedores do IMHO, em circunstâncias normais, têm um desejo natural de aprender (a menos que tenham sido esgotados ou desgastados por uma má experiência anterior). Então, tudo que você precisa fazer é entender o que e como eles gostariam de aprender e fornecer a eles as ferramentas e o tempo para fazê-lo (dentro dos limites razoáveis, é claro).

Por exemplo, em nossa equipe, podemos definir livremente tarefas de aprendizado para nós mesmos, desde que de alguma forma (direta ou indiretamente) estejam relacionadas ao projeto. Essas tarefas são geralmente de algumas horas a um dia por sprint (embora não em todos os sprints). (Um exemplo recente: recebi uma tarefa de aprender e experimentar o Scala aceito, com base em que isso - e uma abordagem funcional em geral - pode ajudar a simplificar uma parte complexa do nosso código Java.) Estes são priorizados e agendados em um Sprint, assim como tarefas regulares. Também é incentivado e deve-se realizar demonstrações / palestras sobre o que aprendemos, transferir conhecimento para outros membros da equipe (e potencialmente até para desenvolvedores em equipes diferentes).

Peça que eles sigam as diretrizes de codificação, como impor testes de unidade, estilos de codificação ou deixe-os fazer o que bem entenderem?

Ao trabalhar em equipe, é necessário seguir o mesmo processo de desenvolvimento. Obviamente, esse processo deve ser a coisa mais simples que pode funcionar, não algo descrito em um manual de 600 páginas. E o processo deve ser definido e continuamente adaptado à situação pela própria equipe . Portanto, se a equipe concordou com um padrão de codificação e com o TDD, eles devem segui-lo.

Seja indulgente com eles. Pessoas que realmente não se importam se realmente assumem o cargo por 8 horas ou 4 horas ou precisam impor algumas "disciplinas" no local de trabalho?

Se você não conhece um desenvolvedor, é normal acompanhar mais de perto o que ele está fazendo, as entregas, o ritmo de trabalho dela etc. Também é bom revisar o código dela (você ou uma equipe experiente e confiável) membro). Depois de conquistar a confiança, ela pode gradualmente obter mais liberdade. Mas essa confiança deve ser conquistada primeiro. Sobre o horário de trabalho, na minha experiência, o horário flexível é ótimo até um limite, ou seja, é bom ter um mínimo comum acordado, como diariamente entre as 11h e as 14h, quando os desenvolvedores (geralmente) são encontrados em seu local de trabalho, para que eles pode ser abordado com perguntas ou convidado para reuniões. Mas, além disso, não adianta ser rigoroso.


3

OK como líder, é seu trabalho divulgar os projetos. Então você tem que ser quem impõe padrões, revisões de código, solicita relatórios de progresso e todas essas coisas quando os desenvolvedores preferem que você os deixe em paz. Essas são apenas exigências da gerência e, exceto pelas revisões de código, não aumentam realmente as habilidades dos funcionários.

No entanto, você deseja ajudá-los a crescer, o que é um ótimo atributo em um líder.

As revisões de código são certamente um primeiro passo, elas ajudarão você a ver quem tem menos do que habilidades estelares e precisa de melhorias para ter um desempenho satisfatório. Eles ajudarão os desenvolvedores a ver outras maneiras de fazer as coisas e a entender partes diferentes da base de código que não aquelas em que eles trabalharam pessoalmente. Na minha opinião, a melhor revisão de código é feita pessoalmente em uma sala de conferência com o desenvolvedor e o revisor (que deve ser outro desenvolvedor sempre que possível, nem sempre o líder, revisar o código de outros também é uma habilidade que precisa ser desenvolvida) e você como um moderador. Você deve fazer anotações sobre o que precisava ser alterado para identificar tendências. O que você realmente procura não são erros ou alterações (o código de todos pode ser aprimorado), mas falha consistente em aprender com os erros. Não diga à gerência superior que você está mantendo essas anotações ou você será forçado a usá-las como medidas no processo de análise de desempenho, o que frustra francamente o objetivo. Se vários desenvolvedores estão cometendo os mesmos erros, uma sessão de treinamento ou uma entrada no wiki sobre como fazer o X pode estar em ordem.

Agora vamos ao vício crescente, chegando ao nível mínimo. Primeiro, você precisa saber quais conjuntos de habilidades os desenvolvedores têm e quais seriam úteis que eles tivessem e o que eles poderiam estar interessados ​​em obter conhecimento. Você precisa conversar com eles, revisar seus currículos e entender o que eles mentem e não gosto de fazer.

Não dê todas as tarefas interessantes apenas aos mais habilidosos. Isso não ajuda os outros a se familiarizarem com novos problemas e tecnologias. Você não pode deixar de ser o cara mais novo, recebendo apenas as tarefas menores e menos importantes para o cara mais velho, a menos que alguém se arrisque e atribua um trabalho mais difícil a você. Dito isto, os menos experientes podem precisar ser designados primeiro para emparelhar o programa com um sênior para obter habilidades mais avançadas. Incluir os juniores nas revisões de código também os expõe a técnicas mais avançadas.

Primeiro, dê a eles a chance de descobrir o problema eles mesmos. Mas, às vezes, as pessoas ficam presas e não sabem por onde começar (uma habilidade que você também precisa desenvolver, especialmente em novos programadores) ou o que fazer para resolver um problema.

Se você lhes der alguns dias para pesquisar algo e eles ainda não tiverem uma orientação sobre como vão fazer algo, talvez seja necessário intervir com algumas sugestões. Se você é técnico, pode dar algumas idéias sobre como resolver o problema. Caso contrário, uma reunião com várias pessoas em que você debata idéias pode ajudar se a pessoa estiver presa. Ou pedir a uma pessoa mais experiente que dê algumas sugestões. O que você não quer fazer é tirar o problema deles e resolvê-lo você mesmo. Mas você precisa equilibrar a conclusão do projeto com o ego do programador e, às vezes, precisa enviá-lo em uma direção específica. Se ele tem uma solução ruim e precisa ser corrigida, a pior coisa que você pode fazer é entregá-la a outra pessoa, a menos que você pretenda acionar o programador.

Vi programadores ruins mimados, onde outra pessoa precisa consertar quase tudo o que faz. Os outros programadores se ressentem disso e querem apenas a pessoa fora de suas vidas. Mimar um programador ruim leva à saída de bons programadores. Você tem que encontrar a linha entre as habilidades de mimar e devloping. Se você der a alguém várias chances e ele nunca melhorar, então solte-o.

Para os idosos que já são competentes em seus conjuntos de habilidades atuais, as coisas são mais fáceis. Normalmente, você só precisa dar a eles a oportunidade de fazer algo novo e eles entram e aprendem. Apenas garanta que as oportunidades interessantes se espalhem e nem todos procurem Joe, o Programador Maravilha, que pode consertar qualquer coisa. Você quer acabar com dez Joes e não apenas um.

Outra maneira de desenvolver habilidades é ter uma sessão semanal de treinamento de 1 hora. Torne cada devloper responsável por um tópico específico. Isso os ajudará a melhorar a comunicação, fará com que eles pesquisem algo em profundidade e traga a todos os benefícios de suas pesquisas. Alguns tópicos devem ser atribuídos a pessoas que não são familiares com o tópico para forçá-los a desenvolver algum conhecimento e outros devem ser atribuídos a pessoas que você conhece como especialistas locais nesse tópico. Os tópicos devem ser uma combinação de coisas nas quais você precisa que as pessoas sejam boas no futuro ou agora, e alguma cobertura das novas tecnologias que você não usa no momento, mas as pessoas estão interessadas em aprender a ver se elas podem ser úteis. Mas todo mundo, incluindo o mais jovem, deve receber um tópico.

Dependendo de como o tempo dos seus desenvolvedores é cobrado (isso é mais difícil em uma situação de cobrança do cliente), geralmente vale a pena que os desenvolvedores tenham de 4 a 8 horas por semana para trabalhar em projetos pessoais. Eles ficarão animados para fazer isso. As melhores pessoas vão querer trabalhar lá e aprenderão muito que se tornarão úteis para o futuro. É difícil para os contadores de feijão entenderem a necessidade disso, mas esse tempo será recompensado muitas vezes em satisfação dos funcionários, novos recursos ou software que ninguém exigia (ou que ajudaria a automatizar parte da labuta) e desenvolvimento mais rápido devido a novas técnicas aprendidas. Alguns desenvolvedores usarão esse tempo estritamente para projetos pessoais não relacionados ao que você faz (e isso é bom, eles ainda estarão adquirindo habilidades e felizes com a oportunidade), mas muitos outros o usarão para resolver problemas persistentes que, devido à natureza de como os projetos são gerenciados, ninguém teve tempo de corrigir previamente. Portanto, você pode obter refatorações que beneficiam a todos; algumas pessoas podem escrever testes para melhorar a cobertura dos testes e facilitar a refatoração; alguns outros podem explorar alguns novos recursos que podem tornar seu software mais útil para seus clientes. Em geral, se você pode convencer os contadores de feijão, não há como perder, permitindo-lhes essa liberdade.

Você precisa aprender a equilibrar, permitindo que as pessoas se esforcem por suas habilidades e mantendo o projeto nos trilhos. Quanto menos experiente o desenvolvedor, mais alguém precisa verificar o progresso, especialmente nos estágios iniciais, quando mudar de direção é mais fácil. Os inexperientes podem lutar e ter medo de falar. Essas pessoas tendem a sair um pouco antes do lançamento e você acha que a parte do projeto não está nem perto de ser concluída. Seja especialmente cuidadoso ao verificar o progresso de qualquer pessoa que tenha trocado de emprego com freqüência (a menos que seja um contratado, pois essa é a natureza da contratação).

Geralmente, os mais experientes podem contar quando estão com problemas para encontrar a solução e precisam de ajuda de alguém com mais conhecimento na área ou então procurarão essa pessoa e obterão a transferência de conhecimento. Portanto, eles não precisam ser monitorados tão de perto nas fases iniciais de aprendizado de um novo conjunto de habilidades para um projeto. Eles encontrarão uma maneira de entregar o projeto. Aqueles que têm um histórico de entrega geralmente podem ser deixados em paz, exceto por relatórios de progresso mínimos (geralmente você também precisa se reportar à sua gerência e, portanto, precisa de algumas informações).


1
+1 em fazer uma distinção entre fazer um bom trabalho como líder de equipe e ajudar uma equipe a crescer. A única coisa que gostaria de acrescentar é garantir que cada membro tenha oportunidades de interagir com outros profissionais FORA da organização. Isso pode ser feito por meio de oficinas ou conferências ou outros encontros. Um líder de equipe pode não ser capaz de fazer isso acontecer diretamente, mas certamente pode influenciar quem tem o poder de permitir isso.
Angelo

2
  1. Dê à sua equipe um trabalho desafiador e as ferramentas para resolvê-los. Mesmo que você veja seu trabalho como mundano porque está apenas apoiando um sistema legado, incentive todos a melhorar.
  2. Sua equipe deve desenvolver padrões de codificação. Seu trabalho é ajudá-los a aplicar e adaptar os padrões.
  3. Trabalhe com sua equipe para desenvolver um sistema de estimativa. Seu trabalho é ajudar a coordenar esse esforço com a equipe e fornecer execução. As forças externas esperam um código de qualidade em tempo hábil e nem sempre têm uma lógica razoável para suas solicitações. Você não pode escapar disso, mas precisa gerenciar os dois lados. Depois que sua equipe criar uma reputação de realizar as tarefas, todos aceitarão melhor suas estimativas de tempo. Eles precisam saber que você os apoiará se eles estiverem se esforçando.

Quando digo que seu trabalho é fazer cumprir, não pretendo assumir algum tipo de estilo de liderança draconiano. Quando um grupo de indivíduos capazes tem opiniões sobre como se comportará, também deve concordar com as consequências por não seguir as regras. Alguém está no comando e, como você é o líder da equipe, é você.


1

Interaja com eles com frequência ou deixe-os descansar, deixe-os imperturbáveis?

Interaja com eles com frequência. Obviamente, não é o ponto de incomodá-los, mas como gerente, você deve ter conversas regulares com eles sobre como as coisas estão indo e um bate-papo mais genial. Aproximadamente uma vez a cada poucas horas soa a frequência certa, mas reproduza-a de ouvido.

Peça que eles sigam as diretrizes de codificação, como impor testes de unidade, estilos de codificação ou deixe-os fazer o que bem entenderem?

Você deve esperar que eles estejam trabalhando exatamente com os mesmos padrões que você. Se você faz testes de unidade e segue as diretrizes, eles devem. Eles precisam aprender a codificar bem e é sua a responsabilidade de ensinar isso a eles.

Seja indulgente com eles. Pessoas que realmente não se importam se realmente assumem o cargo por 8 horas ou 4 horas ou precisam impor algumas "disciplinas" no local de trabalho?

Eu ficaria mais diciplinado no começo, mas ficaria mais tranquilo quando eles provarem que podem ser confiáveis. Dar às pessoas a confiança necessária para trabalhar um dia de 4 horas desde o início está causando problemas, no entanto, é bom deixar um funcionário valioso que trabalha regularmente até tarde ter alguma folga entre os projetos.


5
"Cerca de uma vez a cada poucas horas soa a freqüência correta" - Eu, pessoalmente, odeio isso, se o meu gerente me manteve incomodando que muitas vezes ...
Péter Török

1
@ Péter Török É por isso que eu disse: toque de ouvido. Isso é o nível certo para mim, mas im certeza de que muitas pessoas preferem menos
Tom Squires

0

Relacionado aos seus três pontos:

Interaja com eles com frequência ou deixe-os descansar, deixe-os imperturbáveis?

Eu direi que realmente depende do tipo de pessoa com quem você trabalha. Alguns preferem discutir no horário fixo do café (por volta das 10h) e trabalhar sozinhos, sem perturbações. Com eles (ok, admito que sou exatamente assim), geralmente envio e-mails (mesmo quando estão perto de mim, a 2 ou 3 metros de distância), para que você possa escolher quando lerem suas informações. . E, a propósito, não pergunte se eles "receberam seu memorando" :-) E, é claro, alguns "precisam" de mais orientação, mais interação.

Peça que eles sigam as diretrizes de codificação, como impor testes de unidade, estilos de codificação ou deixe-os fazer o que bem entenderem?

Quanto a seguir as orientações, é bastante claro para mim. Se você definir diretrizes relacionadas ao estilo de codificação, sempre fornecer regra de caso de teste, etc, será necessário aplicá-las se você for o desenvolvedor líder. Para o projeto que você está gerenciando, todo desenvolvedor deve seguir suas diretrizes, sem exceção, mesmo para as " superestrelas ".

Seja indulgente com eles. Pessoas que realmente não se importam se realmente assumem o cargo por 8 horas ou 4 horas ou precisam impor algumas "disciplinas" no local de trabalho?

Se você já sabe como as pessoas trabalham e estão confiantes do que elas não quebram sua confiança, você pode relaxar a disciplina. Mas acho que, nesse ponto, a regra (ou não regra) que você define deve ser aplicada a todos. O importante é que não deve haver exceção. Atualmente, estou muito feliz em trabalhar para um gerente de projeto que simplesmente diz "contanto que você faça seus 40 trabalhos por semana e o trabalho esteja feito, tudo bem". Dessa forma, você pode chegar atrasado uma manhã, trabalhar apenas 6 horas e os próximos dois dias trabalharem por 9 horas. Não importa "enquanto o trabalho estiver concluído". Eu gosto dessa regra.


0

Eu diria que a quantidade de experiência (não apenas de programação, mas também em ambientes de negócios) que seus desenvolvedores têm é um elemento-chave em quanto tempo você gasta com eles. Atualmente, estou trabalhando com alguns desenvolvedores que estão fora da escola e estou descobrindo que eles precisam de mais orientação sobre como trabalhar com outras pessoas, não apenas na documentação / testes / padrões, mas também nas formas interpessoais (quando ligue ao telefone ou encontre-se pessoalmente, em vez de apenas enviar e-mails). O conhecimento de nossos negócios também é uma coisa importante a se aprender, pois muitas das mesmas palavras são usadas de maneira muito diferente em nosso contexto de negócios e em um contexto de desenvolvimento de software. E isso é antes de chegarmos às siglas ...


0

Mas não sei bem como fazer isso, tenho que

  1. Interaja com eles com frequência ou deixe-os descansar, deixe-os imperturbáveis?
  2. Peça que eles sigam as diretrizes de codificação, como impor testes de unidade, estilos de codificação ou deixe-os fazer o que bem entenderem?
  3. Seja indulgente com eles. Pessoas que realmente não se importam se realmente assumem o cargo por 8 horas ou 4 horas ou precisam impor algumas "disciplinas" no local de trabalho?

Minha sugestão é ter algumas conversas sobre qual estilo funciona melhor para esse indivíduo e ajustar com o tempo. Algumas pessoas podem querer se encontrar uma vez por dia para revisar como estão as coisas, enquanto outras podem achar excessivas uma vez por trimestre. Algumas pessoas podem querer uma revisão formal do desempenho por escrito todos os meses e outras apenas um bate-papo sobre desempenho. A chave é levar o relacionamento ao estágio em que você pode ser honesto sobre o que funciona e o que não funciona para alguém.

O outro lado disso seria estudar as filosofias de desenvolvimento pessoal, embora isso possa ser um caminho complicado se alguém for analisado incorretamente. Se você quiser alguns exemplos dessas filosofias, pode consultar alguns exemplos de Myers-Briggs, Eneagrama e Strengths Finder 2.0.


0

Você pergunta a eles como eles preferem trabalhar.
O que eles gostariam de mudar e assim por diante.

Nem tudo de uma vez. Apenas ... como as coisas aparecem.
Mantenha-se natural. (ou sentirão cheiro de medo)

E então ... você pode até aprender coisas com eles . Se você acha que esse nunca seria o caso (muita distância na educação e na experiência) não se importa em tentar fazê-los crescer, isso apenas os confunde.

(Nesse caso especial, desista e governe com mão de ferro , é mais honesto do que fingir interesse que você não tem neles)

Estabeleça um processo democrático , vote as coisas, discuta questões.

Como todo presidente lá fora, você mantém a palavra final: o veto .
O resto é com o grupo.


0

Uma maneira de ajudar seu pessoal a crescer é deixá-lo fazer o que faz de melhor.

Se você tiver sorte, terá um ou dois programadores cujos padrões pessoais de "teste" são mais rigorosos que os do departamento como um todo. Nesse caso, você pode colocá-los no "sistema de honra" para essas questões ou até adotar seus métodos.

Com o "horário flexível", você pode dar mais liberdade aos seus trabalhadores mais produtivos. Enquanto eles estão fazendo o trabalho, eu me preocupo menos com o horário deles. Algumas pessoas entram, fazem de 5 a 6 horas "sem parar" e alcançam mais do que outras que passam 10 horas em ritmo lento.

Mas um de seus trabalhos como gerente é corrigir as Fraquezas. Ou seja, você precisará se preocupar com programadores desleixados cujos padrões de teste são inadequados ou pessoas que não são produtivas o suficiente - porque eles não estão perdendo tempo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.