"Dojo" (pronuncia-se dojô) é uma palavra japonesa originada das artes marciais. Os dojos são locais onde estudantes de luta se reúnem para treinamentos e atividades relacionadas (como desafios ou testes para mudança de faixa). Como parte do treinamento, são realizados vários tipos de "Kata", que são sequências precisas de movimentos de luta, usadas geralmente para exercitar técnicas de defesa.
- Aproximar a equipe.
- Encontrar um lugar agradável à todos.
- Obter um projetor digital.
- Definir uma data para a próxima sessão.
- Adiquirir novas habilidades.
- Alinhar conhecimentos.
- Criar uma interação melhor com a equipe.
- Ambiente não competitivo, colaborativo e divertido.
- Todas os niveis de habilidades são bem vindos.
- É sempre seguro para se tentar novas idéias.
- Usar sempre BabySteps para os turnos.
- 0 Randatori Kata deve ser sempre um MVP
- Usar sempre TDD
- Publicar retrospectivas e o código depois no final do dojo.
- 40 minutos ou mais para preparar RandoriKata.
- 10 minutos: decidir sobre possíveis tópicos para o próximo Dojo.
- 5-10 minutos: pausa no meio da sessão para discutir como as coisas estão indo.
- 25-30 minutos: retrospectiva rápida da sessão anterior; o que correu bem, o que foi interessante, o que foi frustrante.
É estabelecido um problema a ser solucionado durante o dojo. Uma dupla de programadores resolve uma parte do problema programando em par, utilizando o desenvolvimento orientado a testes (TDD) e Baby Steps. Os componentes do par são chamados "piloto" e "copiloto". Ao final do período, o par interrompe seu trabalho onde estava e o copiloto assume o teclado. O piloto volta à plateia e alguém da plateia assume o posto de copiloto, para mais um turno de programação.
- É exposto um problema a ser solucionado.
- É escolhido algum mecanismo para a troca de turnos (por exemplo, TimeBox, PingPong, MicroPairing, NTests, ShoutLouder)
- Duas pessoas se aproximam do teclado e começam a resolver o Kata.
- Usar sempre TDD e BabySteps.
- Mudar o par no teclado de acordo com o mecanismo escolhido.
- É definido as duplas e a ordem delas ao começar o Dojo.
- O par decide o que vai ser feito para solucionar o problema; o próximo par continua a implementação.
- A plateia só pode dar sugestões para modificar ou melhorar o código quando todos os testes estiverem passando. E quando a implementação estiver pela metade, não é permitido atrapalhar o par.
- O dojo é considerado como um sucesso se o problema proposto for resolvido dentro do tempo predefinido e todos os presentes tiverem aprendido o suficiente para duplicar a solução em casa. Para quem vai pela primeira vez a um dojo, pode ser difícil não oferecer opiniões constantes sobre como resolver o problema, mas – e talvez por isso mesmo – trata-se de uma experiência
- TimeBox - Cada par tem um pequeno timebox (5 ou 7 minutos). À cada turno, o piloto volta para platéia o copiloto vai para piloto e alguém da platéia vai para copiloto.
- PingPong - O piloto escreve o primeiro teste e depois entrega o teclado ao copiloto o novo driver faz o teste passar e faz a refatoração necessária. Eles então escrevem o próximo teste e passam o teclado de volta. O driver original agora implementa código para fazer o teste passar aos refatoradores. Um novo par se aproxima do teclado e o par atual se senta na platéia.
- MicroParing - Esta é uma variante do PingPong que funciona bem com o TimeBox. A ideia é que você troque pares usando TimeBox. Mas enquanto um par estiver dentro de seu timebox, você passará o teclado toda vez que uma das seguintes coisas acontecer:
- O piloto escreve um teste com falha.
- O piloto faz um teste de falha.
- NTests - O par escreve e implementa entre 1 à 3 testes por turno, no caso N testes onde o N é definido pela equipe.
- ShoutLouder - O par está dirigindo, procurando uma solução, qualquer pessoa na platéia pode interromper se ele souber a solução o interruptor assume a direção, o motorista se torna co-piloto. Isso só é permitido se o motorista estiver perdido e alguém souber de uma boa solução. A decisão deve ser feita pelo piloto atual, não se passa o teclado se o piloto não quiser.
- Alguém fez alguma preparação antes da reunião e está pronto para apresentar uma solução completa para o Kata em questão.
- Definir um limite de tempo
- Cada passo deve ser explicado para que todos os presentes possam seguir.
- As pessoas devem interromper apenas se não entenderem o que está acontecendo.