Pratique Coding Dojo com sua equipe

21jul10

Recentemente participei de algumas sessões de coding dojo e achei muito interessante. O coding dojo é sem dúvida a nova mania do momento. O mais legal de tudo são os seus princípios, que promovem a troca de experiências entre toda equipe, não discriminando o menos experiente do mais experiente. Existem algumas regras a serem seguidas para fazer uma sessão de coding dojo ser realmente efetiva. Não tenho a pretensão de detalhar a técnica em um só post, mas já me darei por satisfeito caso você sinta vontade de experimentar dojo após ler esta matéria. Acredite, vale à pena!

O que é?

Bem objetivamente, é uma técnica de treinamento onde há um encontro de codificadores e um desafio. O termo dojo, que tem origem japonesa, representa um espaço para treinamento de artes marciais. O coding dojo é uma metáfora do dojo japonês, mas tem o mesmo significado: um lugar propício para treino, neste caso treino de programadores. Numa seção de coding dojo o que vale mesmo é o aprendizado. Motivados em resolver o problema-desafio, os programadores alternam-se em um teclado, tendo o vídeo projetado na parede para que todos acompanhem os detalhes do que está sendo construído.

Sessão de coding dojo no SERPRO (regional Salvador)

Não pense em coding dojo como um combate entre os programadores. A técnica condena a prática de competição. Caso você pretenda se exibir, mostrar que você é o cara, não vá para uma sessão de coding dojo, o objetivo definitivamente não é esse. Além do mais, não deve-se restringir a participação de programadores menos experientes. O dojo é um lugar para treinar, trocar experiências e se aperfeiçoar, não faz sentido algum podar a participação de interessados. Por mais que você se sinta o rei da cocada preta, você sempre aprenderá numa sessão de coding dojo.

Para mais detalhes acesse o site CodingDojo.org, lá você encontrará mais informações sobre a técnica e referências para outros materiais.

Princípios

Para praticar coding dojo é fundamental o conhecimento dos seus princípios. Aviso com antecedência que você enfrentará uma quebra de paradigma, por isso é preciso ter a mente aberta. Antes de mais nada, no dojo não se discute projeto técnico nem arquitetura da solução, já vai logo metendo a mão no código. No início achei isso muito estranho, mas percebi que, se fóssemos discutir a solução antes de codificar, iríamos perder mais tempo do que ir direto à prática. Esta abordagem conflita com o que eu aprendi na faculdade e no dia-a-dia no trabalho. Pois é, esta sensação ocorre justamente porque pulamos uma etapa da escala evolutiva: o treino! Não esqueça que o coding dojo é para fins de treino, então não saia por aí aplicando nos projetos dos clientes.

fonte da imagem: http://wellington.pm.org

No coding dojo não existe código-fonte sem teste. Uma prática muito utilizada nas sessões de dojo é o TDD (Test-Driven Development), onde os testes são criados antes do código-fonte, em um ciclo contínuo até que o problema seja resolvido. Os programadores não devem pensar numa solução complexa, o problema deve ser resolvido com baby steps (à passos de bebê). Soluções complexas podem também atrapalhar o aprendizado dos outros participantes. Chegar à solução do problema não é o foco do dojo, e sim proporcionar o aprendizado e a troca de experiências.

Quando você estiver codificando numa sessão de dojo, explique tudo que você estiver fazendo. É muito importante a compreensão geral, afinal todos colaborarão ativamente com a solução. É o momento para você compartilhar experiências, mas lembre: nada de exibicionismo! É fundamental que não se tenha pressa.

Como funciona?

Para começar, apresenta-se o planejamento do treinamento para todos os participantes. Dedica-se um tempo para explicar os princípios do coding dojo mesmo que a equipe já conheça a técnica, não custa nada investir 10 minutos de flashback (sugiro este material). O maior tempo do treinamento deve ser dedicado à fase de codificação, onde os participantes irão alternar no desenvolvimento da solução. Por último, reserva-se um tempo para discutir as lições aprendidas.

A fase de codificação deve utilizar apenas um computador, porém a tela deve ser vista por todos os participantes. Geralmente usa-se um projetor, mas fique à vontade para usar sua criatividade. Dois participantes iniciam a codificação aplicando a técnica de programação em pares: um assumirá o papel de piloto, enquanto o outro será o co-piloto. A dupla terá um curto intervalo de tempo predeterminado para consolidar suas idéias, usando TDD e baby steps, explicando tudo que está sendo feito. O piloto e o co-piloto atuarão por 5 minutos, por exemplo. Passado o tempo, o piloto volta para a platéia, cedendo o lugar para o ex-co-piloto. Alguém da platéia assume o papel do co-piloto, e assim por diante.

Ao final da fase de programação em pares, todos os participantes devem tomar nota dos pontos positivos e negativos. As opiniões devem ser lidas pelo organizador em voz alta para que todos discutam à respeito. Esta é uma das etapas mais importantes da técnica: o compartilhamento, o debate e a consolidação das lições aprendidas. Mais uma vez, o que vale é o aprendizado!

O que aprendi com tudo isso?

Segue uma listagem do que eu aprendi nas sessões de coding dojo até agora:

  1. A solução do problema não é o foco;
  2. Dê apenas um pequeno passo de cada vez;
  3. O importante é a troca de experiências e o aprendizado de todos;
  4. Você não precisa conhecer a ferramenta/tecnologia/desafio previamente, no decorrer da sessão você aprende;
  5. Discutir o projeto técnico no início das sessões leva mais tempo do que ir direto ao código;
  6. A solução final é de todos, e não apenas de uma pessoa;
  7. Veja a programação em pares funcionando na prática;
  8. Coding dojo é para treino, não para produção;
  9. É uma forma divertida de aprender!

Existem sites que disponibilizam sugestões de problemas-desafio, tais como o TDD Problems e o CondigDojo.org. É fácil encontrar listas de discussão que compartilham experiências sobre o assunto, tal como a Dojo Bahia. O que você está esperando para praticar coding dojo na sua empresa? Tenho certeza que sua equipe vai adorar!