A programação é uma arte que requer aprendizado constante e a melhor forma de aprender é praticando.
Coding Dojo é uma técnica que surgiu com o objetivo de aprimorar as práticas de programação. Foi conceitualmente inspirada na palavra japonesa Dojo, que significa um local de muito respeito para o treinamento de artes marciais.
O Coding Dojo permite que todos os participantes pratiquem, aprendam e ensinem. Para isso, dois princípios básicos devem ser seguidos:
- Promover o aprendizado contínuo no qual todos os envolvidos devem entender e participar;
- Realizar trocas constantes de experiências sem a distinção entre os mais e menos experientes, em um ambiente colaborativo, não competitivo e inclusivo.
Existem 3 formatos de realização de um Coding Dojo:
- Kata: técnica em que um apresentador deve demonstrar uma solução previamente desenvolvida. O objetivo é ensinar aos participantes todos os passos necessários e permitir que todos possam reproduzir o mesmo resultado. Nesse formato é permitido realizar interrupções para tirar dúvidas a qualquer momento.
- Randori: formato que promove a participação de todos. O desenvolvimento da solução é feita orientada à testes e com programação em par. A cada turno de aproximadamente 5 minutos, o piloto volta para a platéia, o co-piloto vira piloto e um participante da platéia vira co-piloto. Os comentários são permitidos somente quando os testes estiverem em verde e, enquanto estiverem no vermelho, a platéia deve permanecer em silêncio.
- Kake: técnica semelhante ao Randori, porém no desenvolvimento há vários pares trabalhando em soluções diferentes simultaneamente e a cada turno a troca é feita entre os pares. Esse formato necessita de um conhecimento mais avançado dos participantes.
O Coding Dojo proporciona um ambiente onde todos podem estudar e aprender novas técnicas e ferramentas, uma vez que elas devem ser praticadas em grupo. Diversos benefícios podem ser percebidos em um time praticante de Coding Dojo:
- Bom relacionamento entre as pessoas;
- Troca de experiências;
- Todos evoluem seus conhecimentos;
- Realização de tarefas diferentes do cotidiano de um projeto.
