Desenvolver, em uma equipe ágil, não se trata apenas de programar de forma mais eficiente, mas de perceber se os outros integrantes estão avançando em suas tarefas e até se você mesmo precisa de ajuda! As dificuldade existentes não são pontuais, mas envolvem conceitos e passos mais complexos: desde arquitetura, passando pela lógica e visão global dos pontos em questão.
Numa equipe ágil, a responsabilidade de um desenvolvedor é, acima de tudo, promover comunicação, colaboração e equilíbrio de competência entre os integrantes do time de desenvolvimento. Existem diversas técnicas que podem ser implementadas para melhorar a integração e o nivelamento técnico da equipe de forma que as tarefas sejam organizadas de modo mais igualitário e não haja saturação de apenas um integrante. Entre essas técnicas, estão o Pair Programming, o Coding Dojo e o Mentoring.
Pair Programming
Pair Programming é um dos elementos difundidos pela metodologia de desenvolvimento de software conhecida como Extremming Programming (XP). O objetivo dessa prática é que a equipe (no caso, a dupla) troque técnicas e ideias para a resolução de problemas. O feedback durante a interação garante que um desenvolvedor entenda o raciocínio e as decisões do outro. Apenas um computador é usado e a dupla fica isolada do ambiente comum de trabalho para que não haja o risco de dispersões.
O ideal é que ambos os desenvolvedores estejam em níveis técnicos semelhantes para que um deles não siga apenas o caminho do outro ou fique alheio ao processo no momento do desenvolvimento. Durante a prática, é necessário alterar piloto e copiloto a cada 25 minutos, seguindo a sugestão de tempo do Pomodoro. A prática não deve durar mais de 2 horas para que o foco não seja perdido com o tempo prolongado.
Apesar de haver muitas críticas ao Pair Programming, diversos estudos comprovam sua eficácia.
Coding Dojo
O objetivo do Coding Dojo é treinar o desenvolvimento e a excelência técnica com foco no que será aprendido. O desafio proposto não pode ser um tarefa real a ser implementada em algum software em desenvolvimento.
O Coding Dojo é realizado em uma sala com diversos desenvolvedores e os turnos podem variar de 5 a 7 minutos seguindo as seguintes modalidades:
- Kata.
Nessa modalidade, a solução para o desafio proposto é conhecida pelo desenvolvedor que a apresenta. As soluções e problemas que vão surgindo podem indicar caminhos para alguns desses desafios. Há apenas um computador e existe alternância entre quem pilota, copilota e volta para a plateia. Vale observar que a plateia não pode sugerir soluções. A interação deve ser apenas entre o piloto e copiloto.
- Randori.
A diferença básica entre o Randori e o Kata é que no Randori a solução do problema proposto não é conhecida por nenhum dos integrantes. Os turnos e as duplas autônomas permanecem como no Kata.
- Kake.
Neste caso, há diversas estações de trabalhos e um integrante, por turno, muda de dupla, alternando entre quem chegou e quem já estava. Essa modalidade pode ser mais complexa, podendo ocorrer de a linguagem e o framework serem totalmente diferentes em cada máquina, focando apenas na solução do desafio, independente da tecnologia.
Mentoring
O Mentoring utiliza Pair Programming e Coding Dojo para transmitir conhecimento. Pode haver troca de turnos entre o mentor e o aprendiz, mas sempre com foco no ensino e no aprendizado. O ideal é ensinar a pescar em vez de entregar a resposta pronta. É uma técnica muito válida também para o mentor que consegue resolver a tarefa, mas tem dificuldade em explicar o passo a passo, ou seja, só consegue resolver na prática. Essa separação entre quem coordena e quem pilota é fundamental para solidificar o conhecimento.
Para um bom Mentoring, é importante querer aprender, ensinar e reconhecer o valor nesse processo. O mentor precisa saber ouvir e entender o raciocínio do aprendiz e o aprendiz deve se sentir aberto para tirar suas dúvida, sem medo de errar.
Antes da prática, independentemente da técnica, é interessante preparar o material e traçar os objetivos para depois validar o que foi realizado, colhendo os pontos abordados e os feedbacks para melhorar constantemente.
Nivelar o conhecimento da equipe e difundir as boas práticas é a meta do mentoring. Com este objetivo alcançado as distribuições das tarefas serão feitas de modo igualitário sem sobrecarregar nenhum integrante tornando o time mais eficiente.
Empresas que utilizam essas técnicas só tem a ganhar, pois além de entregar produtos com maior qualidade, motivam os desenvolvedores a melhorar de forma contínua com a troca de experiências e integração dos membros.