Coding Dojo - Aplicando Princípios Ágeis

Preview:

DESCRIPTION

Apresentação sobre Coding Dojo realizada na XII Semana da Computação na Udesc em 2010.

Citation preview

http://blog.lorival.com - lorival@chapuis.com.br

Aplicando Princípios Ágeis

Coding Dojo

Lorival Smolski ChapuisMCP, MCTS ASP.NET, MCPD ASP.NET

http://blog.lorival.com / lorival@chapuis.com.br

XII Semana da Computação

Universidade do Estado de Santa Catarina – UDESC 2010

http://blog.lorival.com - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

• 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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

Dojo

7

http://blog.lorival.com - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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

http://blog.lorival.com - lorival@chapuis.com.br

Entrada

Saída

Verificação

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

http://blog.lorival.com - lorival@chapuis.com.br

Feedback Instantâneo

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

http://blog.lorival.com - lorival@chapuis.com.br

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

http://blog.lorival.com - lorival@chapuis.com.br

Segurança

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

http://blog.lorival.com - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

Escreverum teste

Ver elefalhar

Fazer elepassar

Ver elepassar

RefatorarDiversas

iterações parauma única

funcionalidade.

Cenário com TDD

http://blog.lorival.com - lorival@chapuis.com.br

http://blog.lorival.com - lorival@chapuis.com.br

Refactoring

A história do apartamento sujo...

Revisão, simplificação e evolução do código.

http://blog.lorival.com - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

Requisitos dos participantes

• Desejo de aprender e compartilhar conhecimento

• Respeito ao próximo

• Mente sempre aberta

• Disciplina

• Comprometimento

http://blog.lorival.com - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

Joinville Dojo

29

http://blog.lorival.com - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

Fotos

31

http://blog.lorival.com - lorival@chapuis.com.br

Fotos

32

http://blog.lorival.com - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

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 - lorival@chapuis.com.br

Considerações finais

36Não aperte o botão de desistência

http://blog.lorival.com - lorival@chapuis.com.br

Dúvidas?Coding Dojo

Lorival Smolski ChapuisMCP, MCTS ASP.NET, MCPD ASP.NET

http://blog.lorival.com / lorival@chapuis.com.br

XII Semana da Computação

Universidade do Estado de Santa Catarina – UDESC 2010

Recommended