Estou liderando uma equipe de 3-4 desenvolvedores juniores. Meu trabalho - além de escrever código - é fornecer supervisão e orientação para os juniores.
Mas entendo perfeitamente o quanto os desenvolvedores valorizam a autonomia em seu trabalho e não quero destruir sua motivação intrínseca alimentando-os com meus pensamentos e algoritmos; Quero que eles explorem o problema à sua maneira, e pensem sobre eles mesmos e só venham a mim quando estiverem realmente enfrentando problemas intransponíveis.
Quando eles me procuram, às vezes eu teria que propor um algoritmo completamente diferente para resolver o problema, porque o algoritmo deles não é suficientemente robusto (lembre-se, eu sou o mais velho e já vi mais do que eles). É claro que eu explicaria isso de uma maneira agradável, para não magoar os sentimentos deles, e descreveria gentilmente como minha solução é muito superior à deles, nenhum tom condescendente ou palavras condenadoras.
Mas, ainda assim, às vezes relutam em aceitar minha sugestão, em parte porque investiram muito em seu próprio algoritmo ou em parte por causa do medo de que o uso de um novo método implique em mais tempo de aprendizado e faça com que pareçam à gerência como se estão indo a lugar nenhum. Mas no fundo do meu coração eu sei muito bem que meu algoritmo é muito melhor que o deles e eles deveriam adotá-lo.
O que devo fazer se eles não adotarem minha sugestão? Devo apenas pedir que eles sigam o meu caminho, ou devo deixá-los bater com a cabeça na parede muitas mais vezes e esperar que eles voltem para mim? Fazer o primeiro me torna um ditador, mas fazer o mais tarde nos custaria um precioso tempo de desenvolvimento e um custo de correção de bugs. Estou realmente em um dilema aqui.
fonte
Respostas:
Ajude-os a entender por que eles devem fazer a alteração sugerida. E ouça-os se eles tiverem um bom motivo para não fazer a alteração. Discuta e chegue a um acordo com base no que é a melhor coisa a fazer.
Essa abordagem é importante pelos seguintes motivos:
Se você é esperto, também pode fazer com que eles cheguem à resposta apenas fazendo perguntas . Feito corretamente, seu filho mais novo chegará à conclusão correta (e, portanto, estará muito mais disposto a implementá-la). Exemplos de perguntas:
EDIT : Se você conseguir convencer o seu filho mais novo que a coisa certa a fazer é seguir a sua sugestão, mas eles ainda estão relutantes que aqui estão alguns conselhos adicionais:
fonte
Eu odiava a atitude dominante do meu último líder de equipe, mas o respeitava pelo fato de ele ter um conhecimento técnico superior e ele me ensinou muito sem me ensinar. Mais importante ainda, ele nunca me forçou a seguir seu plano. Ele interpretaria o advogado de Devil com meu plano, forçando-me a provar que meu plano era perfeito. Ele procurava brechas e esperava minha explicação sobre por que não é uma brecha ou uma solução menos cara. Ele me perguntava se existem soluções alternativas e propunha algumas idéias, se eu não tivesse nenhuma. Eu teria que avaliar suas idéias e que seu plano não era o ideal ou, se ele estivesse convencido de que meu plano estava certo ou pelo menos tivesse a mesma relação risco-recompensa que a dele, ele daria o aval. Se eu falhasse com a minha ideia, teria que tentar a solução dele.
Tem que haver uma troca entre liberdade e prazos. Você não tem o luxo de estender o prazo e não pode deixar que seus juniores o violem. Você deve ser educado, mas firme com eles, uma vez que eles tentaram seu algoritmo e não o funcionaram, eles têm o dever de ouvi-lo. Prove pelo exemplo que você conhece suas coisas. Mas, igualmente importante fazê-los aprender, não os ensine.
fonte
Se for um requisito, observe-o assim. Se for apenas uma sugestão, como você observa, eles devem ser livres para fazer o contrário. Algumas perguntas que eu faria:
Estou certo de que você poderia pedir mais, mas os dois primeiros se concentram em sua autoridade e o último em se vale a pena insistir na questão.
A resposta a seguir tem alguns pontos adicionais excelentes e eu acrescentaria aqui que você precisa tratá-la mais como um processo colaborativo, no qual você trabalha com pelo menos alguns deles com sua "equipe", em vez de apenas emitir ordens. Eles aprenderão ao resolver os problemas com você mais do que apenas lhe disseram: "considere fazê-lo dessa maneira".
fonte
O aprendizado realmente acontece apenas onde ocorrem falhas, porque a falha é um motivador e fornece pistas de memória para recall no futuro. Isso é essencialmente o que chamamos de experiência, e a boa experiência no local de trabalho virá de ter falhado e aprendido com as falhas. Se seus juniores fossem capazes de acertar tudo da primeira vez, eles não aprenderiam nada ou não seriam juniores.
Se você tem muitos juniores atrapalhando as coisas, talvez sua empresa tenha trabalhado incorretamente, com muitos desenvolvedores de nível júnior, onde as restrições de tempo exigem pessoas com melhor experiência para minimizar seus riscos, mas mesmo assim você pode ter problemas e atrasos, pois os desenvolvedores seniores cometem erros para aprender também.
Seus juniores precisarão aprender e ganhar experiência para poder lidar com um ambiente em que os prazos são apertados. Como líder de equipe, é seu trabalho dar um exemplo e inspirar seus juniores a trabalharem de maneira eficiente; no entanto, a realidade é que você deve deixar de lado preocupações de orgulho pessoal e preocupações com seus horários apertados, se quiser que seus juniores aprendam algo. e, portanto, você precisa permitir que eles falhem. Portanto, é seu trabalho fazer uma ligação. Às vezes, você precisa dar ao aluno o espaço para fracassar e levá-lo pacientemente ao longo de um processo de revisão para mostrar a eles onde eles poderiam melhorar suas idéias. Em outras ocasiões, você precisa colocar o pé no chão, mas faça-o de uma maneira que lhe permita mostrar que isso está fora de uma necessidade genuína que não reflete mal as habilidades dos seus juniores.
Quanto à questão de prazos apertados, é aqui que você precisa agendar e alocar seu trabalho de acordo com os pontos fortes e fracos da equipe. Em última análise, o dinheiro acaba com você. Quando você está no comando de outras pessoas, não existe para ser amigo de todos, mas para conseguir um trabalho difícil em circunstâncias difíceis. O modo como você mantém todos do seu lado se resume a conversar com as pessoas sobre suas preocupações e questões, justificando o motivo pelo qual você precisa que os membros da sua equipe façam algo de uma maneira específica.
De minhas próprias experiências pessoais, você precisa reservar um período de tempo definido com o júnior para discutir os pontos fortes e fracos de ambas as idéias e, em seguida, procurar colaborativamente a melhor solução que resolverá o problema em questão - mesmo com o risco de se permitir se provar errado - e depois seguir em frente. Se vocês dois não conseguirem chegar a um consenso até o final do tempo alocado, então nesse ponto você precisará encerrar a reunião com um resumo que leve em consideração as preocupações discutidas e observe que nenhum consenso foi alcançado. Independentemente do resultado da sua reunião, agradeça ao seu aluno pelo tempo gasto e indique que retornará com sua decisãoEm breve. Após uma análise cuidadosa da sua discussão, você terá a opção de alocar tempo adicional para uma discussão mais aprofundada ou instruir o júnior a seguir em frente com o plano em que você tiver decidido, sujeito ao resultado da sua reunião.
Sim, às vezes o tempo é precioso; no entanto, quando você escolhe os juniores, você precisa aceitar que está assumindo a responsabilidade de investir e nutrir o desenvolvimento profissional deles, e você precisa aceitar que, como resultado, será por um tempo pelo menos custar-lhe tempo.
fonte
Gostaria de perguntar se você está realmente apresentando sua sugestão de uma maneira que não seja condescendente. Quando você usa frases como:
e
isso me faz pensar que você poderia se deparar com uma atitude de "meu caminho é superior". Ninguém gosta de receber essa atitude. Quando o recebi no passado, saí ativamente do meu caminho para usar um algoritmo diferente para provar que a pessoa estava errada. Pode ser que seus juniores estejam fazendo o mesmo.
Uma maneira melhor deve ser sentar com a pessoa e discutir seu algoritmo. Indique por que você acha que não funcionará e ouça as respostas que elas lhe derem com a mente aberta. Veja se o algoritmo deles pode ser modificado para funcionar corretamente.
Se o que você júnior definitivamente não vai funcionar, explique a eles por que não vai funcionar. Quais partes estão incorretas ou envolverão reescritas posteriormente ou não se encaixam no modelo de negócios. Certifique-se de que eles tenham um bom entendimento de seus motivos. Em seguida, explique seu algoritmo para eles, apontando as partes em que ele funcionaria e seu código falharia.
fonte
Primeiro de tudo, você sabe a verdadeira razão pela qual o seu aluno não adotou sua sugestão?
Às vezes, você sabe que um júnior pode, na verdade, escrever algo melhor que o sénior, devido a perspectivas mais novas e a uma educação mais atualizada em CS. Embora no último ano você tenha visto mais exemplos do mundo real. Mas uma armadilha ruim em que frequentemente vejo meus idosos às vezes cai é esquecer que as melhores práticas podem mudar com o tempo. Tenho certeza de que isso não se aplica a você, pois você está se atualizando em sites como esses. ;)
Eu sugeriria tentar se aproximar de seus juniores sem nenhuma (ou pequena) "aura" de um sénior, tentar falar em termos uniformes com eles, mostrar curiosidade no código que eles escreveram. Faça perguntas, ouça suas respostas. Não pergunte de maneira acusadora, como:
"Seu código é bastante inflexível, você precisa alterá-lo para isso ..."
em vez perguntar
"Eu só estou pensando, e se alguém o fizesse ... seu código consegue lidar com isso? ... Eu acho que um padrão de estratégia pode ajudar aqui. O que você acha?"
Acredito que isso o ajudará a se engajar em conversas mais saudáveis com eles do que como um professor / conferencista olhando para eles como se soubesse de tudo. Também o ajudará a ver melhor seus raciocínios e perspectivas.
fonte
Você controla o acesso push ao repositório?
No código aberto, o acesso por push é sempre controlado por um gatekeeper encarregado de reforçar a qualidade. Se você estiver monitorando ativamente os commits que eles estão enviando, esteja ciente de onde eles podem melhorar.
Eles conseguem invadir ou melhorar seu código. Se eles tiverem a chance de ver os internos sobre como seu código funciona, eles poderão aprender a se adaptar melhor ao seu estilo. Se você está enviando suas sugestões sem aceitar sugestões com a mente aberta, elas estarão menos inclinadas a ouvir sua opinião.
Há algumas circunstâncias em que não há resposta certa (como preferências de estilo de codificação). Nesse caso, tente estabelecer (ou impor) uma política para toda a empresa, para que eles entendam que o estilo do código deve ser orientado para ser consistente com a principal base de código. Usar uma diretriz de estilo já estabelecida (como o guia de estilo Microsofts para C #) é o melhor caminho a percorrer, especialmente para novos desenvolvedores da equipe.
Se você está fazendo declarações gerais sobre suas técnicas de codificação, há uma boa chance de você não entender completamente o raciocínio por trás de suas escolhas. Apenas o tom da sua pergunta faz você parecer arrogante. O que você ganha / sacrifica empurrando sua abordagem para os desenvolvedores mais jovens?
A principal pergunta que você precisa se perguntar é : suas sugestões são voltadas para manter / melhorar a qualidade da base de código ou para afirmar sua dominância / superioridade em relação a seus pares? O primeiro é um controle de qualidade simples e pode ser justificado como tal; a escada é prejudicial para a dinâmica da equipe, esteja você certo ou não.
De qualquer forma, se você deseja colocar sua solução em seus pares, deve ter uma prova concreta de que é, de fato, superior. Um aumento de magnitude no desempenho deve ser fácil de melhorar, qualquer coisa menos não vale o esforço (exceto aplicativos críticos para o desempenho). Forçar o seu trabalho com os outros para justificar seu senso pessoal de superioridade terminará com você ser apontado como o "velho maluco".
Nota: Os melhores e mais talentosos programadores que encontrei ao longo dos anos sempre pareciam estar dispostos a parar e explicar a história por trás de onde eles originaram sua abordagem.
fonte
Bem, isso parece interessante e muito natural, com jovens programadores muito apegados ao código que escreveram, talvez tenham passado algum tempo chegando ao mesmo idioma ou o tenham escolhido em algum site bom (SO, de fato, Hey Jon skeet escreveu isso cara ! !).
No entanto, a cadeia básica anexada aqui é anexada ao código, onde é necessário se concentrar e acho que seria necessário fazer um esforço considerável para fazê-las entender que a execução e o resultado esperado são mais significativos do que o nome deles. gravado nos repositórios de origem para inserir este código. Você terá que desenhar linhas, porque o seu código é melhor e também é bom em termos de manutenção para futuros trabalhos.
Leve em consideração que algumas falhas são eminentes (preciso de algumas quebras de coração para qualquer apego), mas com um esforço gradual, acho que elas apareceriam e seriam capazes de apreciar melhor seus esforços. Um pouco de tempo e poucas falhas é o que eu acho que você precisaria. Forçá-lo a eles seria o contrário de poucas histórias de sucesso e, em seguida, dia do juízo final e revolta.
fonte
Todo mundo tem um estilo diferente. Se você encontrar 10 pessoas diferentes e apresentar um problema não trivial, elas fornecerão 10 abordagens diferentes usando 10 estilos "padrões de codificação" diferentes.
O ponto é: escolha as coisas que importam. Se alguma coisa lhe for apresentada por um júnior que não produz a solução correta, ela é ineficiente (+1 ordem de magnitude, não é uma instrução aqui ou ali) ou cria uma brecha na segurança, explique seu problema e por quê. Se é um comentário "eu teria feito isso", isso é ótimo, você teria feito "isso" e ela fez "outra coisa", mas o problema ainda está resolvido o suficiente (veja os pontos acima). Vá para o próximo recurso ou correção.
Parte de aprender a ser um bom líder é aprender a reconhecer o que realmente importa e o que realmente não importa. Além disso, você se remove como um gargalo em potencial para o desempenho do seu grupo, caso ele precise verificar tudo através de você.
EDIT: verifique se suas sugestões são genuínas e não ocultas. Uma sugestão é apenas isso - uma sugestão que é livre para seguir ou não. Se for um requisito, declare-o como tal.
fonte
Como alguns dos outros apontaram, se você realmente está apenas dando sugestões aos desenvolvedores juniores e eles são redigidos como tal, então você realmente não tem muitos motivos para se irritar com eles, se não o seguirem, porque podem não vejo muitas razões para fazê-lo. Da mesma forma, você realmente não pode censurá-los por não seguirem sua sugestão, porque eles não são uma orientação real para fazer as coisas de uma certa maneira.
No que diz respeito a tentar fazer com que os desenvolvedores juniores façam as coisas como você prefere:
fonte
Esta é uma introdução perfeita ao teste de unidade. Se seus desenvolvedores juniores tiverem uma solução, ela deverá ser testável. Peça que eles produzam um teste de unidade para enfatizar seu código. Em seguida, revise o teste de unidade . Se você pode mostrar furos no teste, é fácil fazê-los executar novamente o teste e ver sua solução quebrar sob pressão.
Isso permite que você mostre a eles por que sua solução é melhor, oferece um teste de unidade que você pode reutilizar quando o código é alterado e oferece aos desenvolvedores juniores uma valiosa experiência de aprendizado. E quem sabe, você pode descobrir que a solução deles é boa.
fonte
Em algum momento você tem que estar no comando. Parece que você está se esforçando para que eles expressem suas opiniões. Suas sugestões podem não ser perfeitas. Os outros desenvolvedores podem não entender / concordar com você. Eles provavelmente não concordam um com o outro. Se você está no comando, não é uma democracia. Eles sabiam disso quando aceitaram o trabalho.
Se não houver situações em que eles devam segui-lo, você não merece e não serve para nada como chefe deles. Mude seu papel na equipe para ser um recurso e não uma autoridade, se você não planeja usá-lo. Em algum momento, você deve enviar o melhor código possível, de acordo com as restrições de tempo disponíveis e que não podem debater, pesquisar e debater novamente todas as linhas de código até o final dos tempos.
Dê as ordens. Viva com as consequências. Aprenda com a experiência. O respeito é uma via de mão dupla. Você está demonstrando isso e eles não estão.
fonte