63
Coding Dojo Aprendendo a programar programando

Coding Dojo - Aprendendo a programar programando

Embed Size (px)

DESCRIPTION

Saiba o que é o Dojo e como ele pode te ajudar no seu aprendizado.

Citation preview

Page 1: Coding Dojo - Aprendendo a programar programando

Coding DojoAprendendo a programar programando

Page 2: Coding Dojo - Aprendendo a programar programando

Coding DojoAprendendo a programar programando

Page 3: Coding Dojo - Aprendendo a programar programando

Mauricio Matsuda

[email protected]

Page 4: Coding Dojo - Aprendendo a programar programando

Agenda

● O que é o Dojo● Os principais tipos● Benefícios e dicas● Dojo na Prática

Page 5: Coding Dojo - Aprendendo a programar programando

Agenda

● O que é o Dojo○ Práticas essenciais○ O que é?○ Como surgiu?

● Os principais tipos● Benefícios e Dicas● Dojo na Prática

Page 6: Coding Dojo - Aprendendo a programar programando

Práticas essenciais

Coding Dojo

Page 7: Coding Dojo - Aprendendo a programar programando

● 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

Page 8: Coding Dojo - Aprendendo a programar programando

● 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

Page 9: Coding Dojo - Aprendendo a programar programando
Page 10: Coding Dojo - Aprendendo a programar programando

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

Page 11: Coding Dojo - Aprendendo a programar programando

Classe TesteCalculadora função testar_soma testar se Calculadora.soma(1,2) igual 3 fimfim

TDDExemplo

Page 12: Coding Dojo - Aprendendo a programar programando

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

Page 13: Coding Dojo - Aprendendo a programar programando

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

Page 14: Coding Dojo - Aprendendo a programar programando

TDDCiclo

Criar teste

Page 15: Coding Dojo - Aprendendo a programar programando

TDDCiclo

Criar teste

Fazer teste

passar

Page 16: Coding Dojo - Aprendendo a programar programando

TDDCiclo

Criar teste

Fazer teste

passarRefatorar

Page 17: Coding Dojo - Aprendendo a programar programando

● 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

Page 18: Coding Dojo - Aprendendo a programar programando

● 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

Page 19: Coding Dojo - Aprendendo a programar programando
Page 20: Coding Dojo - Aprendendo a programar programando

O que é?

Coding Dojo

Page 21: Coding Dojo - Aprendendo a programar programando

Coding Dojo ou Dojo, ambiente para treinar e aprimorar as práticas de programação

Page 22: Coding Dojo - Aprendendo a programar programando

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

Page 23: Coding Dojo - Aprendendo a programar programando

Como surgiu?

Coding Dojo

Page 24: Coding Dojo - Aprendendo a programar programando

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

Page 25: Coding Dojo - Aprendendo a programar programando

● 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

Page 26: Coding Dojo - Aprendendo a programar programando

● 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

Page 27: Coding Dojo - Aprendendo a programar programando

Agenda

● O que é o Dojo● Os principais tipos

○ Dojo Kata○ Dojo Randori○ Dojo Kake

● Benefícios e Dicas● Dojo na Prática

Page 28: Coding Dojo - Aprendendo a programar programando

principais tipos

Coding Dojo

Page 29: Coding Dojo - Aprendendo a programar programando

Dojo Kata

Page 30: Coding Dojo - Aprendendo a programar programando

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

Page 31: Coding Dojo - Aprendendo a programar programando

Dojo Kata

Page 32: Coding Dojo - Aprendendo a programar programando

Dojo Kata

● Equipamentos○ Um computador com o ambiente de programação

configurado

○ Uma tela de projeção ou uma TV grande

Como fazer

Page 33: Coding Dojo - Aprendendo a programar programando

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

Page 34: Coding Dojo - Aprendendo a programar programando

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

Page 35: Coding Dojo - Aprendendo a programar programando

Dojo Kata

● Plateia○ Não interage diretamente com o código

desenvolvido

○ É livre para tirar dúvidas durante a apresentação

Como fazer

Page 36: Coding Dojo - Aprendendo a programar programando

Dojo Randori

Page 37: Coding Dojo - Aprendendo a programar programando

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

Page 38: Coding Dojo - Aprendendo a programar programando

Dojo Randori

Page 39: Coding Dojo - Aprendendo a programar programando

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

Page 40: Coding Dojo - Aprendendo a programar programando

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

Page 41: Coding Dojo - Aprendendo a programar programando

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

Page 42: Coding Dojo - Aprendendo a programar programando

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

Page 43: Coding Dojo - Aprendendo a programar programando

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

Page 44: Coding Dojo - Aprendendo a programar programando

Dojo Kake

Page 45: Coding Dojo - Aprendendo a programar programando

Dojo Kake

● Formato indicado para programadores mais experientes

● Muita troca de experiências entre os participantes

Características

Page 46: Coding Dojo - Aprendendo a programar programando

Dojo Kake

Page 47: Coding Dojo - Aprendendo a programar programando

Dojo Kake

● Equipamentos○ Um computador com o ambiente de programação

configurado por dupla

Como fazer

Page 48: Coding Dojo - Aprendendo a programar programando

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

Page 49: Coding Dojo - Aprendendo a programar programando

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

Page 50: Coding Dojo - Aprendendo a programar programando

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

Page 51: Coding Dojo - Aprendendo a programar programando

Dojo Kake

● Plateia○ Não interage diretamente com o código

desenvolvido

○ É livre para observar a programação de cada dupla

Como fazer

Page 52: Coding Dojo - Aprendendo a programar programando

Agenda

● O que é o Dojo● Os principais tipos● Benefícios e Dicas

○ Benefícios○ Dicas e experiências

● Dojo na Prática

Page 53: Coding Dojo - Aprendendo a programar programando

Benefícios

Coding Dojo

Page 54: Coding Dojo - Aprendendo a programar programando

● 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

Page 55: Coding Dojo - Aprendendo a programar programando

Dicas e experiências

Coding Dojo

Page 56: Coding Dojo - Aprendendo a programar programando

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

Page 57: Coding Dojo - Aprendendo a programar programando

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

Page 58: Coding Dojo - Aprendendo a programar programando

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

Page 59: Coding Dojo - Aprendendo a programar programando

Coding Dojo

● Aproveite ao máximo, é a oportunidade de todos aprenderem e evoluirem juntos

Dicas

Page 60: Coding Dojo - Aprendendo a programar programando

Agenda

● O que é o Dojo● Os principais tipos● Benefícios e Dicas● Dojo na Prática

○ Dojo Kata○ Dojo Randori

Page 61: Coding Dojo - Aprendendo a programar programando

Vamos programar!

Page 62: Coding Dojo - Aprendendo a programar programando

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

Page 63: Coding Dojo - Aprendendo a programar programando

Referências

● Sites com sugestões de problemas○ http://dojopuzzles.com/problemas○ http://dojorio.org/problemas/○ http://apoie.org/Dojo.html