Apresentação introdutória sobre Coding Dojo, TDD e dose.py realizada em Adamantina - SP. A apresentação incluiu um curto Prepared Kata, cujo código encontra-se disponível em: https://github.com/danilobellini/fai_prepared_kata_2013 ; outros dois dojos (um Prepared Kata detalhado e um Randori Kata) foram realizados no mesmo dia.
(2013-08-24) [iMasters' Dev Day Adamantina] O que é Coding Dojo?
1. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
O que é Coding Dojo?O que é Coding Dojo?
TDD
(Desenvolvimento Orientado a Testes)
dose.py
Origem e uso do Semáforo
http://pypi.python.org/pypi/dose/
Dojos de programação
2. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
3. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
TDDTDD
Test-Driven DevelopmentTest-Driven Development
● Fazer o teste antes do código!
● Baby steps
– No vermelho:
● Menor alteração que faça passar
nos testes.
– No verde:
● Inserir teste que quebre o código
● Refatorar
Não é necessário ser
ortodoxo!
Não é problema inserir
novos testes apenas
para completar domínio,
mesmo sem quebrar
nada.
Quebrou
Passou
Refatoração
4. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
Ferramentas de auxílioFerramentas de auxílio
(CLI)(CLI)
● tdaemon
– Polling no timestamp de alteração (stat)
● Apenas realiza o resultado depois de salvar
– Feito para uso com o Python (nose, sphinx, etc.)
● watch
– Periodicamente, realiza um comando
● 2 segundos, tipicamente
– Permite visualizar o resultado depois de salvar
– Comando efetuado com sh -c ou exec
5. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
dose.pydose.py
Semáforo gráficoSemáforo gráfico
Oi! Eu sou
o dose.py
6. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
dose.pydose.py
EspecificaçãoEspecificação
● GUI de auxílio ao TDD
● Agnóstico de linguagem
– Escrito em Python
– Comandos executados em um shell (permite pipes)
● Detecta quando o arquivo é salvo
– Comunicação com o S.O. (pacote watchdog)
● Uso direto no diretório para ser monitorado
dose.py comando
– Para comandos complexos, usar aspas
7. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
dose.pydose.py
InstalaçãoInstalação
1)Instalar o Python 2.7 com o pip
sudo apt-get install python-pip
2)Instalar o wxPython
sudo apt-get install python-wxgtk2.8
3)Instalar o dose.py com o pip
sudo pip install dose
Exemplos acima para
Debian, Ubuntu e MINT
8. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
Show me the code!Show me the code!
9. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
Software, testes, treinoSoftware, testes, treino
In software we do our practicing on the job, and
that's why we make mistakes on the job. We need
to find ways of splitting the practice from the
profession. We need practice sessions.
Dave Thomas
10. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
DojosDojos
11. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
DojosDojos
● Code Kata
– Exercício com o objetivo de escrever código para
treinar (Dave Thomas)
● Coding Dojo
– Realização social do code kata (Laurent Bossavit)
– Compartilhar conhecimento
● Metodologias ágeis (XP, Scrum)
– Habilidades de projeto e escrita de código
● Sob TDD (Test-Driven Development)
Definição e
história
12. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
DojosDojos
● Prepared Kata
– Processo realizado antes
do evento
– Apresentação (em TDD)
● Randori Kata
– Pair programming
– Todos participam no código
● Revezamento
– Mais comum
Tipos
13. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
DojosDojos
● Kake
– Múltiplos katas em simultâneo
● Um único exercício, mas em diferentes condições
– e.g. Linguagens diferentes
● Mais de um exercício
– Um par (piloto-copiloto) por computador
● Revezamento, sem precisar haver “platéia”
– Incomum
● Outras propostas / hibridismos
Multi-Kata
14. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
DojosDojos
● Papéis
– Piloto: está no computador
● Todos devem ser piloto ao menos uma vez
– Co-piloto: está ao lado
– Platéia: assiste
● No verde: pode opinar, sugere refatoração
● No vermelho: mantém-se em silêncio (*)
● Periodicamente os papéis são trocados
– Tipicamente 7 minutos
Randori
(*) Dúvidas
devem
SEMPRE ser
tiradas no
instante em
que são
formuladas,
independente
do semáforo
15. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
DojosDojos
● Avaliação retrospectiva
=)
=(
● Discussão
– Como melhorar?
– O que ajudou?
– O que prejudicou?
● Meio de expressão
– Post-it
– Debate
Final
16. Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
Obrigado!Obrigado!
Perguntas?
Fork me on
https://github.com/danilobellini/dose
Twitter: @danilobellini
Facebook: www.facebook.com/djsbellini