O coaching técnico tem a ver com ajudar os desenvolvedores a crescer, encontrando maneiras de aumentar sua excelência técnica e trabalhar com soft skills, como a capacidade de se comunicar e ouvir outros desenvolvedores, argumentou Tobias Modig no GrowIT 2018. A parte mais superficial está intimamente conectada ao coaching tradicional, mas também vem com um toque técnico.
Modig afirmou que, ao melhorar a capacidade de falar códigos e soluções, e encontrar as respostas para perguntas como "como você explica uma solução de uma forma que todos entendam?" e "em que nível de abstração técnica sou capaz de falar com a equipe?", podemos reduzir muito a frustração e ser muito mais eficientes quando trabalhamos juntos.
Suas duas abordagens favoritas são o mentoring e mob programming coding dojos. Também mencionou a programação em pares, clube do livro, assistir apresentações, educação "tradicional" e almoços com colegas de trabalho para discussões como outras formas de fazer coaching técnico.
O coaching técnico deve ser um processo contínuo e de retorno, argumentou a Modig. "Eu ainda não vi um desenvolvedor que é totalmente treinado, então no mundo perfeito a mentoria seria algo que todos os desenvolvedores tiveram a oportunidade de fazer regularmente", disse ele.
Tobias Modig, consultor de desenvolvimento de software na Citerus, fez uma palestra sobre coaching técnico na GrowIT 2018. O InfoQ conversou com a Modig depois de sua palestra.
InfoQ: Como você define coaching técnico?
Tobias Modig: "Isso" ajuda os desenvolvedores a se tornarem incríveis? Então eu chamaria de "coaching técnico". Esta pode ser uma definição bastante ampla, mas acho que devemos nos concentrar no objetivo aqui.
Meu primeiro objetivo ao ajudar mais desenvolvedores juniores é familiarizá-los com os doze princípios da Extreme Programming e torná-los uma parte natural da vida de seus desenvolvedores. Kent Beck declarou certa vez: "Eu não sou um ótimo programador, sou apenas um bom programador com ótimos hábitos". E eu realmente acredito que criar esses grandes hábitos é um ótimo lugar para começar.
InfoQ: O que torna o coaching técnico tão importante?
Modig: Com a nossa sociedade digital, onde há software em todos os lugares, a qualidade e manutenção do código é, na verdade, uma questão de vida ou morte. Ao longo dos anos, consultei mais de 50 clientes diferentes em seis países e lamento dizer que poucas dessas empresas levam o treinamento técnico a sério. Há tanto foco em liberar recursos e tão pouco foco no desenvolvimento das habilidades dos funcionários. No entanto, o fator de sucesso das equipes de desenvolvimento nessas empresas tem sido mais ou menos fortemente ligado à habilidade dos desenvolvedores, então é um paradoxo real que as empresas não invistam mais em seus talentos técnicos.
Se eu olhar para os primeiros anos da minha carreira, foi uma bagunça. Eu não tinha ideia sobre coisas básicas como controle de versão, padrões de design ou princípios SOLID. Pior ainda, não havia ninguém para me orientar, então continuei escrevendo código realmente ruim por anos e eu posso lhe assegurar isso. Não quero uma versão de 25 anos de mim para escrever o software do meu próximo marcapasso.
Na verdade, foi quando eu me deparei com o livro Pragmatic Programmer que cheguei à conclusão sobre o quão pouco eu sabia e como eu era um desenvolvedor ruim.
Quando falo com as pessoas hoje, ainda ouço muitas pessoas que compartilham minha própria história. São 20 anos com pouquíssimo progresso e isso me deixa triste.
InfoQ: Como o coaching técnico se aplica no trabalho diário?
Modig: Durante os anos tive meus próprios mentores, e o que realmente apreciei foi quando trabalhamos juntos. Ao fazer isso, passamos a confiar um no outro e é aí que a mágica real começa a acontecer. Então, o que eu recomendo é que o mentor trabalhe junto com o mentorado, por exemplo, um dia por semana durante um período de tempo. E com o trabalho em conjunto, quero dizer que eles devem passar o tempo todo juntos. Se o mentorado tiver uma reunião, o mentor deve participar, eles devem almoçar juntos e devem, é claro, programar em pares o máximo possível. O mentor precisa estar presente para que o feedback instantâneo seja sempre fornecido. Lembre-se de que a troca de informações é vital aqui, por isso deve estar fluindo nas duas direções.
InfoQ: Como podemos fazer coaching técnico através da mob programming?
Modig: Eu me deparei com isso há alguns anos quando conheci o Llewellyn Falco durante o almoço em Helsinque. Essas idéias que estou seguindo são dele, e geralmente funcionam muito bem.
Então, comece pegando uma configuração de mob programming tradicional como Woody Zuill geralmente descreve, "todas as pessoas brilhantes, trabalhando na mesma coisa, ao mesmo tempo, no mesmo espaço e no mesmo computador", combine-as com o driver/navegador padrão, e adicione um coach que facilite o trabalho e se concentre na parte de aprendizado em vez de construir coisas.
Isso é mais ou menos o que é preciso.
Posso ver alguns pontos-chave quando se trata de coaching técnico através de mob programming coding dojos, e o primeiro é o propósito. Isso difere bastante do mob programming tradicional. O objetivo aqui é aprender, então é totalmente bom terminar uma sessão de coaching sem criar nada e sem commitar nenhum código, contanto que a maioria dos participantes tenha aprendido alguma coisa durante a sessão.
Inicialmente, também sugiro definir um navegador e usá-lo, ao invés vez de usar toda a multidão como navegadores. Isto é então rodado com o mesmo ritmo que a rotação do motorista, que dá a todos na multidão a chance de praticar a comunicação em seu próprio ritmo. A desvantagem é, claro, que perdemos as discussões naturais que vêm com uma multidão, mas acho que o benefício de dar a todos a chance de falar é maior do que a desvantagem. Podemos, então, aumentar lentamente a comunicação adicionando maneiras para todos adicionem informações. Por exemplo, levantando a mão se você quiser ajudar ou usar algum tipo de "sinal de fala" que você precisa possuir antes de ter permissão para falar. Depois de algumas sessões, geralmente podemos remover todas as limitações de conversação e ainda ter um bom clima de discussão.
Definir o palco é outra chave importante. É difícil ouvir as pessoas discutirem e talvez até criticar o que você criou. Portanto, devemos ter certeza de que todos os participantes entendem que estamos lá para aprender uns com os outros.
O que me ajudou muito é terminar cada sessão de coaching com uma mini retrospectiva. Não precisa ser algo chique, mas apenas respondendo algumas perguntas simples, como "o que aprendemos hoje?", "O que foi bom?", "O que foi ruim?" e "o que devemos fazer de forma diferente da próxima vez?", podemos realmente garantir que essas sessões estejam na direção certa.
InfoQ: Se os leitores do InfoQ quiserem aprender mais sobre coaching técnico, onde eles podem ir?
Modig: Bem, existem mais ou menos duas partes para isso. A primeira parte é aprender sobre as habilidades técnicas, e aqui é fácil encontrar boas fontes de conhecimento. Há muita leitura em livros e blogs, muitas contas no Twitter e dezenas de vídeos para assistir. Apenas procure por desenvolvedores conhecidos como Kent Beck, Uncle Bob, Martin Fowler, David Thomas e Michael Feathers e comece por lá.
A segunda parte, o aprendizado sobre a parte de coaching, é muito mais difícil. Naturalmente, muito sobre coaching "tradicional" também é aplicável aqui, mas não há muito material escrito sobre coaching técnico. Felizmente, acredito que a maioria de nós tenha feito isso de uma forma ou de outra. Por exemplo, ao apresentar um colega mais júnior. Então, apenas começando a falar sobre isso, podemos aprender muito uns com os outros. Se também começarmos com coaching técnico e fizermos essas mini retrospectivas, aprenderemos apenas pela prática, experimentação e adaptação.
No artigo do InfoQ, práticas técnicas de coaching, Pedro Santos compartilhou suas experiências de desenvolvedores de coaching para melhorar suas práticas técnicas.