37
http://blog.lorival.com - [email protected] Aplicando Princípios Ágeis Coding Dojo Lorival Smolski Chapuis MCP, 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

Coding Dojo - Aplicando Princípios Ágeis

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Coding Dojo - Aplicando Princípios Ágeis

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

Page 2: Coding Dojo - Aplicando Princípios Ágeis

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

Page 3: Coding Dojo - Aplicando Princípios Ágeis

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

Page 4: Coding Dojo - Aplicando Princípios Ágeis

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

Page 5: Coding Dojo - Aplicando Princípios Ágeis

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

Page 6: Coding Dojo - Aplicando Princípios Ágeis

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

Page 7: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Dojo

7

Page 8: Coding Dojo - Aplicando Princípios Ágeis

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.

Page 9: Coding Dojo - Aplicando Princípios Ágeis

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.

Page 10: Coding Dojo - Aplicando Princípios Ágeis

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.

Page 11: Coding Dojo - Aplicando Princípios Ágeis

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.

Page 12: Coding Dojo - Aplicando Princípios Ágeis

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.

Page 13: Coding Dojo - Aplicando Princípios Ágeis

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.

Page 14: Coding Dojo - Aplicando Princípios Ágeis

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.

Page 15: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

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

Page 16: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Entrada

Saída

Verificação

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

Page 17: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Feedback Instantâneo

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

Page 18: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

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

Page 19: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Segurança

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

Page 20: Coding Dojo - Aplicando Princípios Ágeis

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

Page 21: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Escreverum teste

Ver elefalhar

Fazer elepassar

Ver elepassar

RefatorarDiversas

iterações parauma única

funcionalidade.

Cenário com TDD

Page 22: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Page 23: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Refactoring

A história do apartamento sujo...

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

Page 24: Coding Dojo - Aplicando Princípios Ágeis

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.

Page 25: Coding Dojo - Aplicando Princípios Ágeis

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

Page 26: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Requisitos dos participantes

• Desejo de aprender e compartilhar conhecimento

• Respeito ao próximo

• Mente sempre aberta

• Disciplina

• Comprometimento

Page 27: Coding Dojo - Aplicando Princípios Ágeis

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

Page 28: Coding Dojo - Aplicando Princípios Ágeis

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)

Page 29: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Joinville Dojo

29

Page 30: Coding Dojo - Aplicando Princípios Ágeis

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

Page 31: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Fotos

31

Page 32: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Fotos

32

Page 33: Coding Dojo - Aplicando Princípios Ágeis

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)

Page 34: Coding Dojo - Aplicando Princípios Ágeis

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

Page 35: Coding Dojo - Aplicando Princípios Ágeis

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

Page 36: Coding Dojo - Aplicando Princípios Ágeis

http://blog.lorival.com - [email protected]

Considerações finais

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

Page 37: Coding Dojo - Aplicando Princípios Ágeis

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