O que você deve fazer se o seu filho mais novo não adotar a sua sugestão? [fechadas]


30

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.


9
Programadores são arrogantes. Você está confiante de que sua solução é superior porque é ou porque você a desenvolveu? Se você realmente superou a razão dos desenvolvedores juniores por seu método, ele provavelmente deve se tornar um cenário "faça do meu jeito".
Rig

6
Olá, Graviton, problemas gerais no local de trabalho como este não estão no tópico aqui: você pode estar interessado em uma proposta futura do site, Professional Matters , onde essas questões profissionais gerais estariam no tópico.

27
@ MarkTrapp: Você se importaria de expandir seu raciocínio por que considera a liderança de equipe de programadores fora do tópico? Talvez, em vez de fechar esta questão, se houver um consenso, seja melhor movido para o StackOverflow ou deixado em aberto e migrado posteriormente para o Professional quando ele estiver disponível. IMHO, acho que esse é um tópico de interesse como desenvolvedor de software e, dado que o gerenciamento de programadores é exclusivo da programação, considero isso definitivamente no tópico. Obrigado.
precisa saber é o seguinte

35
Por que as perguntas mais interessantes são fechadas?
ThomasX

11
Eu posso concordar em encerrar isso se for uma pergunta sobre simplesmente gerenciar pessoas que trabalham com você, mas a pergunta é sobre como gerenciar o código de pessoas que trabalham com você, o que eu acho perfeitamente adequado para este site. Votou para reabrir.
Rachel

Respostas:


28

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:

  • Você deseja que eles estejam fazendo a alteração por motivos comerciais / técnicos sólidos. É importante esclarecer o que são (lembre-se de que você também pode estar errado, então seja humilde ...).
  • Você realmente deseja transmitir o raciocínio por trás de sua sugestão - dessa forma, o destinatário aprenderá a resolver problemas semelhantes no futuro. Você também terá um relacionamento melhor se seus juniores sentirem que estão aprendendo algumas boas idéias com você.
  • Você não será respeitado se usar sua antiguidade e não puder demonstrar que realmente tem boas razões.
  • Presumivelmente, seu chefe gostaria de ter certeza de que você está usando o tempo dos juniores de maneira eficaz em coisas que criam valor real, não apenas "fazendo do meu jeito" por causa disso.

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:

  • Seu código pressupõe acesso ao banco de dados de produção. Como podemos mudar isso para que ainda funcione e possa ser testado corretamente pelo JUnit em um ambiente de desenvolvimento desconectado? (resposta potencial: ah! devemos usar injeção de dependência ....)
  • O que acontecerá se um invasor enviar deliberadamente algum SQL inteligentemente construído em seu formulário de entrada de dados online? (resposta em potencial: ah! talvez não devamos construir instruções SQL concatenando texto não verificado das internets)

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:

  • Explore por que eles estão relutantes. É possível que eles precisem chegar a uma conclusão pessoal de que não importa se você joga fora o código, desde que obtenha o resultado. Ou pode ser que eles se sintam sob pressão do tempo por causa de algum prazo. Você precisa saber, caso contrário você não pode ajudá-los ...
  • Você pode argumentar que eles podem tratar a mudança como uma maneira de melhorar suas habilidades de refatoração. Depois que as habilidades de refatoração forem boas o suficiente, você poderá reutilizar até mesmo uma base de código bastante grande e complexa com relativa rapidez.
  • Você deve enfatizar que tudo estará no controle de origem, para que eles sempre possam voltar para uma versão antiga, se necessário.

Não vi sua resposta quando comecei a digitar a minha! Então, +1 de mim, porque você capturou a essência do que eu estava escrevendo, apenas de maneira mais elegante e sucinta. ;-)
S.Robins

@mikera, eles concordam que minha solução é melhor, mas relutam em abandonar o código antigo e investir em novo código.
Graviton

não há preto ou branco. as pessoas podem se deixar levar por coisas menores. eles são humanos, não robôs. portanto, embora eu concorde que é importante transmitir de maneira clara e objetiva seu ponto de vista, tente ser diplomático. há toda uma literatura sobre como persuadir as pessoas. é uma ciência em si mesma. consulte um pt.wikipedia.org/wiki/How_to_Win_Friends_and_Influence_People
siamii

8

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.


5

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:

  • Você tem autoridade para pressionar por soluções específicas?
  • Qual é a extensão dessa autoridade?
  • Existe solução ruim ou apenas diferente?

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".


Eu tenho a autoridade, mas eu prefiro não usá-lo
Graviton

A autoridade é definitivamente uma espada de dois gumes. É melhor ter o apoio de seus colegas do que o ressentimento deles. O fracasso em se envolver em um processo inclusivo geralmente leva a desafios de sua autoridade mais tarde e, se você precisar incluir seu próprio gerente para apoiar sua afirmação de autoridade, você perderá qualquer chance futura de se envolver com sucesso com seus juniores em circunstâncias semelhantes.
precisa saber é o seguinte

11
"A resposta a seguir". Não se pode esperar que as respostas sejam mostradas em qualquer ordem específica. Use o link "link" para obter um URL que você pode consultar na sua resposta.

4

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.


4

Gostaria de perguntar se você está realmente apresentando sua sugestão de uma maneira que não seja condescendente. Quando você usa frases como:

minha solução é muito superior à deles

e

No fundo do meu coração, sei muito bem que meu algoritmo é muito melhor que o deles e eles deveriam adotá-lo.

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.


3

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.


2

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.


2

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.


2

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.


2

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:

  • Controle sua terminologia, fazer uma sugestão não é o mesmo que fazer uma recomendação que definitivamente não é o mesmo que fornecer orientação . Use a terminologia de acordo para entender seu ponto de vista e se você acha que sua maneira de fazer algo é a melhor maneira de fazê-lo, diga a eles que é sua recomendação fazê-lo. Da mesma forma, se for absolutamente crítico que as coisas sejam feitas de uma determinada maneira (ou seja, não possa suportar um atraso de tempo), basta ser franco e dar a elas instruções sobre como devem ser feitas.
  • Os desenvolvedores juniores ainda estão passando pelo processo de aprendizado, independentemente de como você está expressando as coisas, sempre forneça algum tipo de raciocínio por trás do que você está dizendo a eles, a menos que haja um motivo específico que você não possa. Mesmo nesse caso, a maioria das pessoas entenderá se você disser algo como "Tem que ser feito assim, eu não ligo para mim, mas a decisão já foi tomada". eles tendem a ser razoavelmente razoáveis.
  • Se é realmente apenas uma sugestão, certifique-se de que sua ideia seja realmente melhor do que como a fez. Se você não acha que é esse o caso, sente-se com o desenvolvedor e faça uma revisão de código e conceito para que eles possam justificar sua solução. Pode ser que, uma vez que eles comecem a explicar a outra pessoa - e você faça as perguntas certas -, eles verão uma maneira melhor e desejem recodificar as coisas por conta própria.
  • Não discorde dos detalhes se a solução deles for semelhante à que você sugeriu originalmente; pode ser que eles levem em conta o que você lhes disse e tenham feito as coisas de maneira ligeiramente diferente ou que tenham mudado o conceito original com base na sua sugestão.

2

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.


2

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.


Eu voto isso um milhão de vezes.
HLGEM
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.