7. Coding Dojo
Práticas
● As práticas essenciais para fazer um Dojo foram
baseadas em conceitos descritos pelas metodologias
ágeis Scrum e Extreme Programming (XP)
○ Programação em par
○ Test Driven Development (TDD)
○ Design incremental
○ Reunião de Retrospectiva
8. Programação em par
Definição
● Um computador com duas pessoas programando
● Piloto: programador que fica com o teclado e é
responsável em codificar a lógica
● Co-piloto: auxilia o piloto a conferir o código que está
sendo escrito e como esse código pode afetar
negativamente o restante da aplicação
9.
10. TDD
Definição
Desenvolvimento Dirigido por Testes (TDD) é a capacidade de produzir
testes automatizados para código de produção, e usar este processo
para dirigir o design e a programação. Para cada pequena
funcionalidade no código de produção, você primeiro desenvolve um
teste que especifica e valida o que o código deverá fazer. Você então
produz somente o código necessário para permitir que o teste passe.
Então você refatora (simplifica e clarifica) os códigos de produção e
teste.
fonte: Agile Alliance
12. Classe TesteCalculadora
função testar_soma
testar se Calculadora.soma(1,2) igual 3
fim
fim
TDD
Exemplo
Classe Calculadora
função soma(<num1>, <num2>)
resultado = num1 + num2
retorna resultado
fim
fim
13. Classe TesteCalculadora
função testar_soma
testar se Calculadora.soma(1,2) igual 3
fim
fim
TDD
Exemplo
Classe Calculadora
função soma(<num1>, <num2>)
retorna num1 + num2
fim
fim
Classe Calculadora
função soma(<num1>, <num2>)
resultado = num1 + num2
retorna resultado
fim
fim
17. Design incremental
Definição
● Criar código aos poucos, para atender cada
funcionalidade
● O TDD ajuda bastante a guiar essa prática, pois só
haverá código para resolver se algum teste estiver
falhando
● Evita ter códigos que não são utilizados
18. Reunião de Retrospectiva
Definição
● Uma reunião realizada ao fim de uma interação
● É elencado os pontos positivos e negativos observador
pelos participantes
● E tem como objetivo extrair uma lista de ações de
melhorias para as próximas interações
21. Coding Dojo ou Dojo, ambiente para treinar e aprimorar
as práticas de programação
22. Coding Dojo
Definição
● A ideia é promover um ambiente
○ Seguro, onde todos se sintar à vontade em
programar
○ Não competitivo, pois o objetivo é que todos
pensem juntos de forma colaborativa
○ Inclusivo, programadores experientes e iniciantes
devem ensinar e aprender juntos
24. Coding Dojo
Histórico
● O Psicólogo Dr. K. Anders Ericsson na década de 70
apresentou o conceito da Prática Deliberada
● Executar tarefas específicas repetitivamente até
alcançar a excelência
● Teoria das 10 mil horas para se tornar um expert
25. Coding Dojo
Histórico
● Em 2003 o Programador Dave Thomas apresentou o
conceito Code Kata
● Espaço onde os programadores pudesse exercitar a
programação
● Inspirado em outras áreas, como na música que há um
preparo antes da apresentação em público
26. Coding Dojo
Histórico
● Em 2004 Laurent Bossavit e Emmanuel Gaillot
fundaram o primeiro Coding Dojo
● Embasados nas teorias de Ericsson e Thomas, a ideia
foi criar um cenário diferente do cotidiano de um
projeto, em um ambiente descontraído e colaborativo
● Ficou conhecido como Dojo Paris
27. Agenda
● O que é o Dojo
● Os principais tipos
○ Dojo Kata
○ Dojo Randori
○ Dojo Kake
● Benefícios e Dicas
● Dojo na Prática
30. Dojo Kata
Características
● Formato indicado para introduzir novos
conhecimento de programação
● Um apresentador com o domínio do
conhecimento
● A plateia tem uma participação passiva
32. Dojo Kata
Como fazer
● Equipamentos
○ Um computador com o ambiente de programação
configurado
○ Uma tela de projeção ou uma TV grande
33. Dojo Kata
Como fazer
● Moderador
○ Definir a melhor data e local
○ Divulgar o evento para o publico interessado
○ Preparar a infra-estrutura antes do início do Dojo
○ Organizar uma retrospectiva ao final do Dojo
34. Dojo Kata
Como fazer
● Apresentador
○ Pode ser uma dupla programando em par e
alternando entre os ciclos do TDD
○ Definir um roteiro de como será apresentado
○ Explicar para a plateia cada passo apresentado
35. Dojo Kata
Como fazer
● Plateia
○ Não interage diretamente com o código
desenvolvido
○ É livre para tirar dúvidas durante a apresentação
37. Dojo Randori
Características
● Formato indicado para praticar
conhecimentos já aprendidos
● Todos participam ativamente na
programação
● Há muita troca de conhecimento entre os
participantes
39. Dojo Randori
Como fazer
● Equipamentos
○ Um computador com o ambiente de programação
configurado
○ Uma tela de projeção ou uma TV grande
○ Uma lousa ou flip-chart
40. Dojo Randori
Como fazer
● Moderador
○ Preparar a infra-estrutura antes do início do Dojo
○ Definir o problema e a linguagem com os participantes
○ Escrever na lousa a lista dos participantes
○ Controlar o intervalo de troca da dupla
○ Organizar uma retrospectiva ao final do Dojo
41. Dojo Randori
Como fazer
● Piloto
○ Pessoa que está com o teclado programando
○ Deve seguir o ciclo de TDD
○ Explicar em voz alta cada passo executado para
que a plateia entenda o raciocínio escolhido
○ Ao fim do ciclo o piloto volta para a plateia
42. Dojo Randori
Como fazer
● Co-piloto
○ Pessoa sentada em par ao lado do Piloto
○ Ajuda o Piloto na programação, com uma análise do
código de forma ampla
○ Ajuda a explicar o que estão fazendo para a plateia
○ Ao fim do ciclo assume o posto de Piloto
43. Dojo Randori
Como fazer
● Plateia
○ Só pode falar quando os testes estiverem passando
ou quando a dupla pedir ajuda
○ Ao fim do ciclo o próximo da lista assume o posto de
Co-piloto
47. Dojo Kake
Como fazer
● Equipamentos
○ Um computador com o ambiente de programação
configurado por dupla
48. Dojo Kake
Como fazer
● Moderador
○ Definir o problema com os participantes
○ Controlar o intervalo de troca da dupla
○ Organizar uma retrospectiva ao final do Dojo
49. Dojo Kake
Como fazer
● Piloto
○ Pessoa que está com o teclado programando
○ Deve seguir o ciclo de TDD
○ Na primeira rodada escolhe junto com o Co-piloto a
linguagem que irá utilizar
○ Ao fim do ciclo assume o Co-piloto em outra dupla
50. Dojo Kake
Como fazer
● Co-piloto
○ Pessoa sentada em par ao lado do Piloto
○ Ajuda o Piloto na programação, com uma análise do
código de forma ampla
○ Ao fim do ciclo assume o posto de Piloto sem mudar
de dupla
51. Dojo Kake
Como fazer
● Plateia
○ Não interage diretamente com o código
desenvolvido
○ É livre para observar a programação de cada dupla
52. Agenda
● O que é o Dojo
● Os principais tipos
● Benefícios e Dicas
○ Benefícios
○ Dicas e experiências
● Dojo na Prática
54. Coding Dojo
Benefícios
● Aprendizado pela observação e pela ação
● Compartilhamento de conhecimento e colaboração na
resolução de um problema
● Aprendizado de novas tecnologias
● Aprimoramento das técnicas de programação
56. Coding Dojo
Dicas
● Evite utilizar notebook pois dificulta a
programação em par e o teclado pode ter um
padrão que nem todos estão acostumados
● Certifique que a imagem projetada está
legível para a platéia, tanto na nitidez da
imagem quanto no tamanho das fontes dos
códigos
57. Coding Dojo
Dicas
● É sempre bom ter pelo menos uma pessoa
experiente no assunto abordado no Dojo
Randori
● Se possível intercale pessoas experientes e
inexperientes no Dojo Randori
58. Coding Dojo
Dicas
● Seguir a risca as regras de cada tipo de
Dojo para ter um bom resultado
● Caso um problema não tenha sido
finalizado, só continue no próximo Dojo se
os participantes forem os mesmos
59. Coding Dojo
Dicas
● Aproveite ao máximo, é a oportunidade de
todos aprenderem e evoluirem juntos
60. Agenda
● O que é o Dojo
● Os principais tipos
● Benefícios e Dicas
● Dojo na Prática
○ Dojo Kata
○ Dojo Randori
62. Referências
● Biografias
○ http://www.psy.fsu.edu/faculty/ericsson.dp.html
○ http://en.wikipedia.org/wiki/Dave_Thomas_
(programmer)
● Mais informações sobre Dojo
○ http://www.webgoal.com.br/coding-dojo/
○ Edição 62, Revista Mundo J
63. Referências
● Sites com sugestões de problemas
○ http://dojopuzzles.com/problemas
○ http://dojorio.org/problemas/
○ http://apoie.org/Dojo.html