Skip to content

Instantly share code, notes, and snippets.

@ruyjfs
Last active December 30, 2018 17:21
Show Gist options
  • Save ruyjfs/8608f06bb1e3cdc533427b8cc55612ba to your computer and use it in GitHub Desktop.
Save ruyjfs/8608f06bb1e3cdc533427b8cc55612ba to your computer and use it in GitHub Desktop.
Coding Dojo

Coding DOJO

"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.

Requirements

  • Aproximar a equipe.
  • Encontrar um lugar agradável à todos.
  • Obter um projetor digital.
  • Definir uma data para a próxima sessão.

Objetivo

  • Adiquirir novas habilidades.
  • Alinhar conhecimentos.
  • Criar uma interação melhor com a equipe.

Promissas

  • 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.

Rituais 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.

Randori Kata:

É 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.

Ritual

  • É 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.
Há outras regras importantes a serem seguidas:
  • É 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

Mecanismos de turnos ao fazer o Randori Kata

  • 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.

Kata preparado

  • 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.

Randori Kata - I

Estamos cadastrando alguns gastos da DevSquad em um excel, nós somos uma elite de programadores, devemos resolver esse problema tranformando em uma solução intuitiva e dinâmica.

Sistema Financeiro (Laravel)

  • Install and configure environment

The goal of this program is to model a game of bowling. Given a series of input the program should output the players final score.

Regras

Participantes no tatame
  • 2 (Piloto e Copiloto)
Mecanismo de turno
  • Timebox de 7 minutes.

Regras gerais do Randori Kata

  • À cada turno, o piloto volta para platéia o copiloto vai para piloto e alguém da platéia vai para copiloto.
  • 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 que for feito no dojo já deve ser um MVP.
  • 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment