Na minha equipe, geralmente exigimos que os programadores mais experientes treinem / mentorem os novatos programadores juniores. No entanto, esses mesmos programadores seniores são os que realizam a maior parte do trabalho real e importante.
Tentei argumentar com meu gerente que faz sentido que os programadores juniores, que estão mostrando uma grande aptidão, tomem os novos programadores sob suas asas. Primeiro, ele liberará os desenvolvedores seniores para trabalhar em iniciativas mais importantes (não que a orientação não seja importante). A seguir, os programadores juniores terão um pouco de orgulho em seu trabalho, de que eles seriam procurados por tal responsabilidade e poderão aprender algo no ensino. Por fim, economizará dinheiro da empresa, pois os desenvolvedores seniores custam muito mais do que os juniores.
Meu chefe não conseguiu ser persuadido, pois é assim que ele trabalha nesta equipe desde o início dos tempos, aparentemente. Assumindo que foi tomada a decisão de que algum tipo de treinamento / orientação é obrigatório, alguém pode me fornecer argumentos melhores ou me dizer por que estou errado? O que sua equipe faz?
** Todos podemos concordar que a antiguidade não denota necessariamente competência; portanto, apenas assuma que "programadores seniores" quero dizer "programadores de destaque".
fonte
Respostas:
Eu tive essa situação em uma empresa anterior. Os desenvolvedores seniores, que eram apenas alguns, estavam orientando um número crescente de desenvolvedores juniores, a ponto de não conseguirem realizar as outras tarefas que lhes foram atribuídas. Depois de um tempo, os desenvolvedores seniores abordaram o assunto com nosso gerente e foi decidido que os desenvolvedores que estavam entre os juniores e os seniores atuariam como mentores, mas para questões difíceis, eles poderiam pedir aos desenvolvedores seniores.
Funcionou muito bem. Antes disso, alguns dos desenvolvedores seniores estavam começando a procurar novos empregos porque não estavam sendo desafiados no trabalho. Depois, eles puderam trabalhar em novos recursos e realizar tarefas. O que seus desenvolvedores seniores pensam da situação?
Na minha opinião, ser sênior não é apenas uma experiência no domínio, o título no rodapé do email ou por quanto tempo você trabalha. Também é uma mentalidade, para ajudar e orientar desenvolvedores juniores. E que melhor maneira de obter mais desenvolvedores seniores em uma equipe do que deixar os não tão seniores fazerem a mentoria?
fonte
Nem todo programador de topo é um professor de topo. Eu recomendaria fazer o treinamento por alguém que possa explicar e que tenha uma visão geral do 'ambiente' da sua empresa (aspectos técnicos, mas também contatos organizacionais).
fonte
Estou reiterando algumas das coisas que já foram ditas, mas tenho duas visões.
Negócios: como empresa, você quer produtividade e riscos menores. Embora os desenvolvedores seniores estejam realizando a maior parte do trabalho, você deseja que eles transfiram seus conhecimentos sobre o sistema, o que reduz os riscos. A produtividade não seria afetada tanto, porque você precisa dar a esses idosos algum tempo para fazer coisas menos críticas (ensinar aos desenvolvedores juniores). Além dos sistemas, eles também têm muitas disciplinas que os desenvolvedores juniores ainda não conhecem ou compreendem.
Respeito: os juniores, que colocam novos desenvolvedores sob suas asas, são como os cegos que lideram os cegos. Os juniores ainda não estão atualizados com tudo o que se deve encarregar de ensinar aos outros. Além disso, pode não funcionar, porque o respeito pode não estar lá. O respeito ao desenvolvedor júnior está em questão, porque seu conjunto de habilidades versus o conjunto de habilidades do iniciante provavelmente não está tão distante. Enfrentar um problema juntos é uma história diferente. Não há questão de respeito em termos de desenvolvedores seniores ensinando iniciantes ou mesmo juniores. Todos sabemos que quando falta respeito em dois indivíduos ou em uma equipe, o desastre está esperando para acontecer ...
fonte
Veja isso de outro ângulo. Que tipos de habilidades e conhecimentos você deseja transferir entre os programadores daqui? Se os programadores seniores estão realizando a maior parte do trabalho real, importante isso não mantém um pouco de isolamento em termos de quem sabe qual sistema? Fazer com que os juniores conheçam o sistema para que eles possam ser backups para os idosos é uma direção bastante lógica a seguir, pois é o conhecimento mais importante de anos potencialmente acumulados de conhecimento acumulado que é o mais importante aqui. Seniors mentoring juniors parece um tipo de formação natural para minha mente.
Um programador júnior que orienta outro programador júnior não faz muito sentido para mim. O emparelhamento de alguns programadores juniores poderia fazer sentido de alguma maneira. O fato de duas pessoas trabalharem juntas em uma tarefa para que não seja apenas a ideia de uma pessoa pode ser bastante útil, além de ajudar a promover um ambiente mais colaborativo, no qual uma equipe se reúne em certo sentido. Dependendo do ambiente que você tem, isso pode ou não fazer muito sentido.
fonte
Bem, se os programadores seniores da equipe realmente não dominam seu negócio mais do que os juniores, apenas existem há mais tempo e / ou têm um status social / político mais alto dentro da equipe, então, na verdade, não faz muita diferença quem - se alguém - orienta os recém-chegados. As chances são de que todos gravitem para o mesmo nível de mediocridade de qualquer maneira ... :-(
Se, na OTOH, um sênior é realmente (pelo menos notavelmente mais próximo) um programador mestre no verdadeiro sentido do mundo, isso pode fazer uma grande diferença. Um júnior pode facilmente ensinar práticas não tão boas para o novo garoto do quarteirão. E é muito mais difícil desaprender uma abordagem abaixo do ideal ou ruim mais tarde do que começar aprendendo as melhores práticas .
Dito isto, se um júnior tiver talento e demonstrar de forma confiável que ele sabe o que está fazendo em relação a uma determinada ferramenta, técnica ou área, ele pode realmente ser um treinador útil nessa área específica .
Mas observe que - de um certo ponto de vista - todo o objetivo da orientação / treinamento é permitir que os idosos delegem algumas de suas tarefas não tão desafiadoras a outras pessoas, para que possam se concentrar nas coisas realmente difíceis. Para que isso aconteça, eles precisam realmente ensinar essas tarefas e habilidades a seus pares primeiro e ensiná-las bem, para que as tarefas sejam assumidas adequadamente, de uma vez por todas.
fonte
Resposta simples: a pessoa que faz o treinamento deve ser a melhor pessoa em treinamento e também deseja fazer o treinamento.
Algumas pessoas gostam de treinamento e orientação. Algumas pessoas odeiam isso. Você não quer que as pessoas façam coisas que odeiam - é ruim para elas, provavelmente ruim para a pessoa que está sendo treinada e provavelmente ruim para toda a equipe. Não adiciona nada. Enquanto isso, deixar as pessoas fazerem o que elas gostam é bom para eles, para a equipe e, esperançosamente, para o trainee sentir algum entusiasmo.
Da mesma forma, algumas pessoas são boas em treinamento e outras não. Existe um tipo de interação ou inteligência humana que permite que algumas pessoas sejam boas em entender como outras funcionam; um instrutor deve ser capaz de fornecer conhecimento de uma maneira que o estagiário entenda. Um bom instrutor pode fazer isso e aprender que o estagiário gosta de 'entender' as coisas, 'ver' as coisas ou 'fazer' as coisas - as várias maneiras pelas quais as pessoas aprendem. Um treinador ruim faz um discurso ensaiado e é inflexível e fica frustrado quando o aluno não entende suas maneiras idiossincráticas de aprender.
Suponho que você deseja que os estagiários recebam o melhor treinamento - completo e eficiente. Se seus 'principais programadores' desejam treinar, devem fazê-lo. Se os 'programadores juniores' estiverem de acordo, também devem tentar. Não é demais ter poucas pessoas participando do programa de treinamento - dessa forma, você pode determinar quem quer treinar e quem é bom em treinar.
Não tenho certeza da sua pergunta se você é um programador sênior que deseja sair do treinamento (sem críticas - você tem coisas mais importantes a fazer, ou simplesmente não ama), ou um programador júnior que quer entrar nisso. Mas de qualquer maneira, você está tentando fazer o que gosta - e todos nós não queremos fazer as tarefas que gostamos? Funcionários felizes levam a melhores ambientes de trabalho e melhores resultados.
fonte
Na maioria das empresas em que trabalhei, um programador júnior era alguém com menos de 3 anos de experiência. Enquanto eu ficaria feliz, como um programador experiente com experiência em aconselhamento, por indicar um novo programador a um programador júnior para treinamento em um tópico específico, eu gostaria de manter o controle, em vez de delegar toda a responsabilidade da orientação a alguém que ainda precisa de supervisão de orientação. si mesmos.
fonte
Descobri que coisas como as regras de negócios e as diretrizes de design são as coisas mais críticas que um programador mais experiente precisa ser capaz de repassar para desenvolvedores juniores ou mesmo para desenvolvedores ou contratados sênior / especialistas recém-contratados. Os problemas tendem a surgir quando essas informações importantes são armazenadas ou nunca são explicadas. Talvez seja isso que o seu gerente esteja mais preocupado do que o conhecimento real de programação.
Quanto ao conhecimento de programação em si, é melhor passar para o grupo em todos os níveis. Mesmo programadores experientes aprendem coisas novas o tempo todo, especialmente em estruturas de desenvolvimento complexas. Esse compartilhamento pode ser formal, como em uma sessão de almoço e aprendizado, ou através de discussões informais quando o tempo permitir.
fonte
Eu preferiria que os mentores estivessem basicamente um ou dois passos abaixo dos principais programadores da organização.
Embora você tenha apresentado algumas boas razões para isso, eu indicaria mais uma que considero particularmente importante: o ensino é uma das melhores maneiras de aprender, especialmente aprendendo o suficiente para fazer com que alguns desses últimos passos sejam realmente bons. à grande. Uma parte particularmente importante disso é aprender a não apenas fazer as coisas bem, mas fazer um bom trabalho de articular o que você está fazendo e por quê. Eu, por exemplo, frequentemente descobri que para fazer um bom trabalho de explicar por que estou fazendo algo de uma maneira específica, tenho que me sentar e pensar o suficiente para que 1) meu próprio entendimento melhore consideravelmente e 2) muitas vezes reavaliamos a situação o suficiente para melhorar meu próprio trabalho.
Embora possa ser mais difícil para eles fazer isso, isso pode ser particularmente útil para programadores cujas habilidades sociais podem estar um pouco ... ausentes em comparação com seus colegas. Afastá-los um pouco da sua zona de conforto, da pura codificação para aspectos mais sociais, como orientação, pode ajudá-los tanto quanto as pessoas que orientam. Obviamente, se você quiser fazer isso, precisará ter um cuidado especial ao escolher com quem deseja formar um par - o emparelhamento errado pode acabar prejudicando os dois.
fonte
Eu acho que funciona melhor quando os mentores se voluntariam para a tarefa. Por aqui, não temos um processo de orientação muito formal. Às vezes, nosso gerente tem algo específico em mente, mas outras vezes ele diz algo como: "Alguém tem uma boa idéia de um projeto para o novo cara?" e quem tiver a melhor ideia acaba fazendo a mentoria.
O que acaba acontecendo é que o novo contratado é colocado em um projeto que pode pagar o tempo da curva de aprendizado e orientado pela pessoa mais familiarizada com o projeto. Pode ser alguém que esteja aqui há 10 meses ou 10 anos. Às vezes, as pessoas acabam orientando um pouco os mentores, mas a vantagem é que as pessoas mais novas ainda se lembram de todas as dificuldades de serem novas e de como as superaram.
fonte