SlideShare uma empresa Scribd logo
1 de 16
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
Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
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
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
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
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
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
Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
Show me the code!Show me the code!
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
Danilo J. S. Bellini
Leandro Facchinetti
2013-08-24 Dev Day
DojosDojos
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
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
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
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
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
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

Mais conteúdo relacionado

Destaque (8)

Docker all the things
Docker all the thingsDocker all the things
Docker all the things
 
Le journal d'Argentré-du-Plessis
Le journal d'Argentré-du-PlessisLe journal d'Argentré-du-Plessis
Le journal d'Argentré-du-Plessis
 
civil war
civil warcivil war
civil war
 
The Importance of Proper Pool Maintenance
The Importance of Proper Pool Maintenance The Importance of Proper Pool Maintenance
The Importance of Proper Pool Maintenance
 
Air Relay Switch MD series
Air Relay Switch MD seriesAir Relay Switch MD series
Air Relay Switch MD series
 
srikanthmuvvalacvone
srikanthmuvvalacvonesrikanthmuvvalacvone
srikanthmuvvalacvone
 
Interview2a
Interview2aInterview2a
Interview2a
 
Arizuma tradezone private limited
Arizuma tradezone private limitedArizuma tradezone private limited
Arizuma tradezone private limited
 

Mais de Danilo J. S. Bellini

(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da InformaçãoDanilo J. S. Bellini
 
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask AssíncronoDanilo J. S. Bellini
 
(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!Danilo J. S. Bellini
 
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)Danilo J. S. Bellini
 
(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!Danilo J. S. Bellini
 
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)Danilo J. S. Bellini
 
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0Danilo J. S. Bellini
 
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?Danilo J. S. Bellini
 
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)Danilo J. S. Bellini
 
(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e toxDanilo J. S. Bellini
 
(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazyDanilo J. S. Bellini
 
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!Danilo J. S. Bellini
 
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...Danilo J. S. Bellini
 
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)Danilo J. S. Bellini
 
(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em PythonDanilo J. S. Bellini
 
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...Danilo J. S. Bellini
 
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazyDanilo J. S. Bellini
 

Mais de Danilo J. S. Bellini (20)

(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação
 
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
 
(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!
 
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
 
(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!
 
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
 
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
 
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
 
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
 
(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox
 
(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy
 
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
 
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
 
(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy
 
(2013-12-18) [Garoa HC] AudioLazy
(2013-12-18) [Garoa HC] AudioLazy(2013-12-18) [Garoa HC] AudioLazy
(2013-12-18) [Garoa HC] AudioLazy
 
(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy
 
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
 
(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python
 
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
 
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
 

(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