http://blog.lorival.com - [email protected]
Aplicando Princípios Ágeis
Coding Dojo
Lorival Smolski ChapuisMCP, MCTS ASP.NET, MCPD ASP.NET
http://blog.lorival.com / [email protected]
XII Semana da Computação
Universidade do Estado de Santa Catarina – UDESC 2010
http://blog.lorival.com - [email protected]
Considerações iniciais
2
0% 50% 100%
1994
2000
2004
2006
2009
1994 2000 2004 2006 2009
Falha 31% 23% 18% 19% 24%
Mudança 53% 49% 53% 46% 44%
Successo 16% 28% 29% 35% 32%
Chaos Report
The Curious Case of the CHAOS Report 2009 – Standish Grouphttp://www.projectsmart.co.uk/the-curious-case-of-the-chaos-report-2009.html
http://blog.lorival.com - [email protected]
• Porque treinar?• Dojo?• O que é um Coding Dojo• Princípios ágeis:
– Pair Programming– TDD e Refactory– Baby Steps
• Como funciona um Coding Dojo• Joinville Dojo• Considerações finais• Dúvidas
Agenda
3
http://blog.lorival.com - [email protected]
O Brasil teria conseguido chegar a pentacampeão do mundo sem treino?
O dia-a-dia de um desenvolvedor são oscampeonatos. Quando são os treinos?
Um campeonato serve como treino?
Por que treinar?
4
http://blog.lorival.com - [email protected]
A expressão treinamento refere-se àaquisição de conhecimento, habilidadese competências como resultado deformação profissional ou do ensino dehabilidades práticas relacionadas àcompetências úteis específicas.
Fonte: Wikipedia
Definição de treinamento
5
http://blog.lorival.com - [email protected]
O dojo ou dojô (pronuncia-se DÔ-JÔ) é o localonde se treinam artes marciais, especialmente asnipônicas. Muito mais do que uma simplesárea, o dojo deve ser respeitado como se fosse acasa dos praticantes. Por isso, é comum ver opraticante fazendo uma reverência antes deadentrar, tal como se faz nos lares japoneses.
Artes marciais que utilizam dojo:Judô, Jiu-Jitsu, Ninjutsu, Karatê e Taekwondo.
Dojo
6
http://blog.lorival.com - [email protected]
Coding Dojo• Um Coding Dojo é uma reunião presencial para estudar e
praticar desenvolvimento de software.
• Seus praticantes estão lá para se divertir e para participar emprática expontânea de forma a melhorar suas habilidades.
• Em um ambiente não competivivo e colaborativo, todos osparticipantes possuem um objetivo em comum: resolver oproblema que foi proposto no início da sessão.
• Para tanto, é utilizado algumas práticas ágeis como PairProgramming, Test Driven Development(TDD), Refactoring e Baby Steps.
http://blog.lorival.com - [email protected]
Pair programming
Programação em par é uma das práticas maisconhecidas e mais polêmicas utilizadas pelos queadotam o Extreme Programming. Ela sugere quetodo e qualquer código produzido no projeto sejasempre implementado por duas pessoasjuntas, diante do mesmo computador, revezando-se no teclado.
http://blog.lorival.com - [email protected]
Pair programming
• Será que funciona?
• Já imaginou um avião apenas com o piloto sem umco-piloto? Você jamais voaria em um avião assim.Mesmo que você não se preocupe com isso acompanhia aérea se preocupa e muito.
• Piloto e co-piloto possuem visões diferentes.
http://blog.lorival.com - [email protected]
Pair programming
• Em 1971, em um livro chamado The Psychology ofComputer Programming (Gerald Weinberg) mostrouque o olho humano tem uma incrível capacidade de sóenxergar aquilo que deseja e, naturalmente, ignoraraquilo que não quer ver
• “Programadores, se deixados por contaprópria, ignoram os erros mais gritantes, os quaisqualquer pessoa seria capaz de detectarinstantaneamente“
• Princípio da dissonância cognitiva.
http://blog.lorival.com - [email protected]
Pair programming
• Desenvolvedores rendem mais em duplas.
• Disseminação de conhecimento é uma dasimportantes características da programação em par.
• Eleva a capacidade técnica dos desenvolvedores.
• Aumenta a confiança do desenvolvedor e nosoftware.
http://blog.lorival.com - [email protected]
Pair programming
Programar em par exige que as pessoas envolvidassejam receptivas, compreensivas umas com asoutras, engajadas e, sobretudo, humildes. Énecessário aceitar que somos falíveis para quepossamos programar em par. Weinberg criou otermo egoless programming, ou seja, programaçãosem ego.
http://blog.lorival.com - [email protected]
Test Driven Development
Desenvolvimento Guiado por Testes, ousimplesmente TDD.
Consiste numa técnica de desenvolvimento desoftware onde primeiro são criados os testes esomente depois é escrito o código necessário parapassar por eles.
http://blog.lorival.com - [email protected]
Fonte: http://www.joinvilledojo.com.br
http://blog.lorival.com - [email protected]
Entrada
Saída
Verificação
Fonte: http://www.joinvilledojo.com.br
http://blog.lorival.com - [email protected]
Feedback Instantâneo
Fonte: http://www.joinvilledojo.com.br
http://blog.lorival.com - [email protected]
Fonte: http://www.joinvilledojo.com.br
http://blog.lorival.com - [email protected]
Escrever o códigode produção
Executar testes manuais para
garantir o funcionamento
Escrever testes automatizados
(ou não)
Cenário comum
http://blog.lorival.com - [email protected]
Escreverum teste
Ver elefalhar
Fazer elepassar
Ver elepassar
RefatorarDiversas
iterações parauma única
funcionalidade.
Cenário com TDD
http://blog.lorival.com - [email protected]
http://blog.lorival.com - [email protected]
Refactoring
A história do apartamento sujo...
Revisão, simplificação e evolução do código.
http://blog.lorival.com - [email protected]
Baby Steps
• Trabalhe em passos e pense simples.
• Escreva códigos simplificados que atuem eresolvam apenas o seu respectivo teste.
• Não crie 10 testes e saia codificando. Crie um testee faça a codificação para que ele funcione.
• Não crie testes gigantes e codificações de mesmaproporção.
http://blog.lorival.com - [email protected]
Requisitos para o Coding Dojo
• No mínimo 5 participantes
• Uma sala
• Um computador com projetor (apenas um)
• Um problema
• Um contador de tempo
http://blog.lorival.com - [email protected]
Requisitos dos participantes
• Desejo de aprender e compartilhar conhecimento
• Respeito ao próximo
• Mente sempre aberta
• Disciplina
• Comprometimento
http://blog.lorival.com - [email protected]
Como funciona um encontro
Passado (30 min), Presente (10 min) e Futuro (2 min)
Retrospectiva
Define o Kata (problema)
Define data do próximo encontro
Sessão (90 min – intervalo de 10 min)
PreparedKata ou RandoriKata
Exemplo grupo ParisDojo. Fonte: http://codingdojo.org
http://blog.lorival.com - [email protected]
Como funciona um encontro
Piloto: Escreve o código
Co-piloto: Explica o que o Piloto está fazendo e o ajuda
Rodada:
Dura 7 minutos
Piloto 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)
http://blog.lorival.com - [email protected]
Surgimento
30
Fundadores: GuilhermeOenning e Lorival Chapuis
Objetivo: Criar um grupo deestudos para praticar técnicasde desenvolvimento desistema em Joinville
Iniciou em 2009 na Sociesc
http://blog.lorival.com - [email protected]
Como funciona um encontro
Passado (2 min), Presente (10 min) e Futuro (2 min)
Retrospectiva das melhorias
Define o Kata (problema)
Define data do próximo encontro
Sessão (90 min – intervalo de 10 min) RandoriKata
Retrospectiva Pontos negativos, positivos e melhorias (20 min)
http://blog.lorival.com - [email protected]
Contatos
Blog: http://www.joinvilledojo.com.br/ Posts das sessões e informações sobre o grupo
Twitter: www.twitter.com/joinvilledojo Lembretes
Grupo: http://groups.google.com.br/group/joinville-dojo Confirmação dos próximos encontros e algumas discussões
http://blog.lorival.com - [email protected]
Depoimento
35
“O Coding Dojo, além promover o aprimoramento dastécnicas de desenvolvimento, ajuda a desenvolver opensamento colaborativo, melhora a capacidade deexposição de idéias além de promover o networking entre osparticipantes.”
Igor Kondrasovas
http://blog.lorival.com - [email protected]
Considerações finais
36Não aperte o botão de desistência
http://blog.lorival.com - [email protected]
Dúvidas?Coding Dojo
Lorival Smolski ChapuisMCP, MCTS ASP.NET, MCPD ASP.NET
http://blog.lorival.com / [email protected]
XII Semana da Computação
Universidade do Estado de Santa Catarina – UDESC 2010
Top Related