Upload
mauricio-matsuda
View
362
Download
0
Embed Size (px)
DESCRIPTION
Saiba o que é o Dojo e como ele pode te ajudar no seu aprendizado.
Citation preview
Coding DojoAprendendo a programar programando
Coding DojoAprendendo a programar programando
Mauricio Matsuda
Agenda
● O que é o Dojo● Os principais tipos● Benefícios e dicas● Dojo na Prática
Agenda
● O que é o Dojo○ Práticas essenciais○ O que é?○ Como surgiu?
● Os principais tipos● Benefícios e Dicas● Dojo na Prática
Práticas essenciais
Coding Dojo
● 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
Coding DojoPráticas
● 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
Programação em parDefiniçã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.
TDDDefinição
fonte: Agile Alliance
Classe TesteCalculadora função testar_soma testar se Calculadora.soma(1,2) igual 3 fimfim
TDDExemplo
Classe TesteCalculadora função testar_soma testar se Calculadora.soma(1,2) igual 3 fimfim
TDDExemplo
Classe Calculadora função soma(<num1>, <num2>) resultado = num1 + num2 retorna resultado fimfim
Classe TesteCalculadora função testar_soma testar se Calculadora.soma(1,2) igual 3 fimfim
TDDExemplo
Classe Calculadora função soma(<num1>, <num2>) retorna num1 + num2 fimfim
Classe Calculadora função soma(<num1>, <num2>) resultado = num1 + num2 retorna resultado fimfim
TDDCiclo
Criar teste
TDDCiclo
Criar teste
Fazer teste
passar
TDDCiclo
Criar teste
Fazer teste
passarRefatorar
● 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
Design incrementalDefiniçã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
Reunião de RetrospectivaDefinição
O que é?
Coding Dojo
Coding Dojo ou Dojo, ambiente para treinar e aprimorar as práticas de programação
Coding Dojo
● 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
Definição
Como surgiu?
Coding Dojo
Coding Dojo
● 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
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
Coding DojoHistó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
Coding DojoHistórico
Agenda
● O que é o Dojo● Os principais tipos
○ Dojo Kata○ Dojo Randori○ Dojo Kake
● Benefícios e Dicas● Dojo na Prática
principais tipos
Coding Dojo
Dojo Kata
Dojo Kata
● Formato indicado para introduzir novos conhecimento de programação
● Um apresentador com o domínio do conhecimento
● A plateia tem uma participação passiva
Características
Dojo Kata
Dojo Kata
● Equipamentos○ Um computador com o ambiente de programação
configurado
○ Uma tela de projeção ou uma TV grande
Como fazer
Dojo Kata
● 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
Como fazer
Dojo Kata
● 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
Como fazer
Dojo Kata
● Plateia○ Não interage diretamente com o código
desenvolvido
○ É livre para tirar dúvidas durante a apresentação
Como fazer
Dojo Randori
Dojo Randori
● Formato indicado para praticar conhecimentos já aprendidos
● Todos participam ativamente na programação
● Há muita troca de conhecimento entre os participantes
Características
Dojo Randori
Dojo Randori
● Equipamentos○ Um computador com o ambiente de programação
configurado
○ Uma tela de projeção ou uma TV grande
○ Uma lousa ou flip-chart
Como fazer
Dojo Randori
● 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
Como fazer
Dojo Randori
● 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
Como fazer
Dojo Randori
● 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
Como fazer
Dojo Randori
● 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
Como fazer
Dojo Kake
Dojo Kake
● Formato indicado para programadores mais experientes
● Muita troca de experiências entre os participantes
Características
Dojo Kake
Dojo Kake
● Equipamentos○ Um computador com o ambiente de programação
configurado por dupla
Como fazer
Dojo Kake
● Moderador○ Definir o problema com os participantes
○ Controlar o intervalo de troca da dupla
○ Organizar uma retrospectiva ao final do Dojo
Como fazer
Dojo Kake
● 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
Como fazer
Dojo Kake
● 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
Como fazer
Dojo Kake
● Plateia○ Não interage diretamente com o código
desenvolvido
○ É livre para observar a programação de cada dupla
Como fazer
Agenda
● O que é o Dojo● Os principais tipos● Benefícios e Dicas
○ Benefícios○ Dicas e experiências
● Dojo na Prática
Benefícios
Coding Dojo
● 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
Coding DojoBenefícios
Dicas e experiências
Coding Dojo
Coding Dojo
● 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
Dicas
Coding Dojo
● É 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
Dicas
Coding Dojo
● 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
Dicas
Coding Dojo
● Aproveite ao máximo, é a oportunidade de todos aprenderem e evoluirem juntos
Dicas
Agenda
● O que é o Dojo● Os principais tipos● Benefícios e Dicas● Dojo na Prática
○ Dojo Kata○ Dojo Randori
Vamos programar!
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
Referências
● Sites com sugestões de problemas○ http://dojopuzzles.com/problemas○ http://dojorio.org/problemas/○ http://apoie.org/Dojo.html