44
JoinvilleDojo http://www.joinvilledojo.com.br Coding Dojo Guilherme Oenning @oenning http://blog.oenning.eti.br Lorival Smolski Chapuis @lorivalsc http://blog.lorival.com SOCIESC – Sociedade Educacional de Santa Catarina Professor Msc Luiz Carlos Camargo http://luizcamargo.com.br/

Joinville Dojo 2010

Embed Size (px)

Citation preview

Page 1: Joinville Dojo   2010

JoinvilleDojo http://www.joinvilledojo.com.br

Coding Dojo

Guilherme Oenning@oenning

http://blog.oenning.eti.br

Lorival Smolski Chapuis@lorivalschttp://blog.lorival.com

SOCIESC – Sociedade Educacional de Santa Catarina

Professor Msc Luiz Carlos Camargohttp://luizcamargo.com.br/

Page 2: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

• Coding Dojo

• Joinville Dojo

• Testes

• Test Driven Development – TDD

• Sessão de coding dojo

• Retrospectiva

• Dúvidas

Agenda do evento

Page 3: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brO que é um Dojo?

Page 4: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brDojo

• O dojo ou dojô (pronuncia-se DÔ-JÔ) é o local onde se treinam artes marciais, especialmente as nipônicas. Muito mais do que uma simples área, o dojo deve ser respeitado como se fosse a casa dos praticantes. Por isso, é comum ver o praticante fazendo uma reverência antes de adentrar, tal como se faz nos lares japoneses.

• Judô, Jiu-Jitsu, Ninjutsu, Karatê, Taekwondo...

Page 5: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brE o Coding Dojo?

Page 6: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brCoding Dojo

• Um Coding Dojo é uma reunião para estudar e praticar desenvolvimento de software.

• Eles estão lá para se divertir e para participar em prática expontânea de forma a melhorar suas habilidades.

• Em um ambiente não competivivo e colaborativo, todos os participantes possuem um objetivo em comum: resolver o problema que foi proposto no início da sessão.

• Para tanto, é utilizado algumas práticas ágeis como o TDD (Test Driven Development), Pair Programming e Refactoring.

Page 7: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brPorque fazer um Dojo?

• Desenvolvedores não treinam.

• Como seria um jogo de tênis sem treino dos seus competidores

• Aquisições fazendo Coding Dojo:– Conhecimento– Habilidades técnicas e humanas– Prática– Network

• Estar sempre preparado

Page 8: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brRequisitos dos participantes

• Desejo de aprender e compartilhar conhecimento

• Respeito ao próximo

• Mente sempre aberta

• Disciplina

• Comprometimento

Page 9: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brRequisitos para o Coding Dojo

• No mínimo 5 participantes

• Uma sala

• Um computador com projetor (apenas um)

• Um problema

• Um contador de tempo

Page 10: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brComo funciona?

Passado, Presente FuturoDefine o Kata (problema)

Sessão

Retrospectiva

Utiliza-se de uma modalidade

Page 11: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brModalidade Randori - Regras

Piloto: Escreve o códigoCo-piloto: Explica o que o Piloto está fazendo e o ajuda

Rodada:Dura 7 minutosPiloto se une ao grupo, Co-piloto vira piloto e alguêm

do grupo vira Co-piloto.

Grupo só fala:Teste está verde (passou)Antes de escrever um teste (para decidir o que será

feito)

Page 12: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brModalidade Randori - Práticas

Test Driven Development (TDD)

Pair Programming

Baby Steps

Refactory

Oriented Object Programming (OOP)

Page 13: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brJoinvilleDojo

Page 14: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brJoinvilleDojo

Fundadores: Guilherme Oenning e Lorival Chapuis

Objetivo: Criar um grupo de estudos para praticar técnicas de desenvolvimento de sistema em Joinville

Ocorreu em 2009 na Sociesc

Retrospectiva 2009

Page 15: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brJoinvilleDojo

Blog: http://www.joinvilledojo.com.br/

Twitter: www.twitter.com/joinvilledojo (92 seguidores)

Grupo: http://groups.google.com.br/group/joinville-dojo

Page 16: Joinville Dojo   2010

Introdução à testes automatizados e Test-Driven

Development

Page 17: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

São programas de computador escritos para executar e validar diversas funcionalidades de um sistema.

Testes Automatizados

Page 18: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

Page 19: Joinville Dojo   2010

Entrada

Saída

Verificação

Page 20: Joinville Dojo   2010

Feedback Instantâneo

Page 21: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

Hotkey: CTRL + R, AResultado: Feedback Instantâneo

Page 22: Joinville Dojo   2010

Segurança

Page 23: Joinville Dojo   2010
Page 24: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

Hotkey: CTRL + R, AResultado: Segurança

Page 25: Joinville Dojo   2010

Rápido e Barato

Page 26: Joinville Dojo   2010
Page 27: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

Test Driven Development

Page 28: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brCenário comum

Escreve o código de produção

Executa testes manuais para

garantir o funcionamento

Escreve testes automatizados

(ou não)

Page 29: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

Cenário com TDDEscreva

um teste

Veja ele falhar

Faça-o passar

Veja ele passar

Refatore Diversas iterações para

uma única funcionalidad

e.

Page 30: Joinville Dojo   2010
Page 31: Joinville Dojo   2010

Concluindo...

Page 32: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

• “Mas até ontem funcionava.” – Cliente reclamando no suporte após uma atualização de versão.

• “Compilou, está funcionando!” – Desenvolvedor sem noção.

Frases Comuns

Page 33: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

“Ta pronto, só falta testar!”

Page 34: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

• Behaviour-Driven Development;

• Mocks;

• Stub;

• Teste unitários e Teste integrado;

• Integração Contínua;

• Code Coverage;

Apenas uma introdução...

Page 35: Joinville Dojo   2010

Não entendi nada, e agora?

Page 36: Joinville Dojo   2010

Só se aprende TDD com prática.

Page 37: Joinville Dojo   2010

Coding Dojo é uma atividade 100%

prática.

Page 38: Joinville Dojo   2010

Quem quer programar, testar, e comer

chocolate?

Page 39: Joinville Dojo   2010

Katas

Page 40: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brFizzBuzz

Drinking Game

Page 41: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

1) Forme um círculo;2) O primeiro jogador fala o número “1”;3) O próximo jogador continua a sequência, 2, 3,

4 etc...4) Porém, caso o número seja divisível por 3, o

jogador deve falar “Fizz” ao invés do número. Caso o número seja divisível por 5, deverá ser falado “Buzz”. E caso o número seja divisível por 3 e por 5, deverá ser falado “FizzBuzz”.

5) O Jogador que errar, deve beber um copo.

Como funciona o jogo?

Page 42: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

• Um software que, dado um número, seja capaz de me dizer o que eu deveria falar.

• Ex.:– Se eu passar o número 1 para o sistema,

deverá retornar “1”.– Se eu passar o número 3, deverá retornar

“Fizz”.– ...

O que faremos?

Page 43: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.brEfeito Magnético

Tela de Desenho do AutoCADTamanho: 200px x 100px

Raio do efeito magnético: 5px

Page 44: Joinville Dojo   2010

Joinville Dojohttp://joinvilledojo.com.br

• Um software que simula o efeito magnético do AutoCAD;

• Será possível adicionar retas na tela de desenho dado um ponto inicial e um ponto final;

• Se, ao desenhar uma reta um dos pontos estiver dentro de um campo magnético, este ponto deverá ser puxado para cima do outro ponto;

• Se ao desenhar um ponto ele estiver dentro de dois ou mais campos magnéticos, ele deverá ser puxado para o mais próximo;

O que faremos?

44