O documento discute práticas ágeis em consultorias, como pair programming, código compartilhado, histórias de usuário informativas e deploy contínuo. Também aborda desafios como merges complexos e dependência de dados, e como automatizar fluxos de trabalho para superá-los.
1. Agilidade no Mundo Real
O que funcionou nos
últimos 2 anos em
consultorias da Milfont
Consulting... e como
melhorar!
Christiano Milfont
2010, João Pessoa-PB
Copyleft 2010 Milfont.org
2. Milfont Consulting
2006 - 2008
Desenvolvimento – Treinamento - Mentoring
Resgate de Projetos - Code Review
3. O que é agilidade?
Estamos descobrindo maneiras
melhores de desenvolver software
fazendo-o nós mesmos e ajudando
outros a fazê-lo.
5. O que é agilidade?
Ciclo de vida de um Software
Desenvolvimento Manutenção
6. O que é agilidade?
Ciclo de vida de um Software
Desenvolvimento Manutenção
1º Deploy - Transição
7. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Business Modeling
Requirements
Analysis & Design
Implementation
Test
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
8. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Business Modeling
Requirements
Analysis & Design
Implementation
Test
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
Business Requirements Analysis Design Implementation Test Deployment
9. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Business Modeling
Requirements
Analysis & Design
Implementation
Test
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
Business Requirements Analysis Design Implementation Test Deployment
10. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Business Modeling
Requirements
Analysis & Design
Implementation
Test
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
Business Requirements Analysis Design Implementation Test Deployment
Se mudar ou o processo for compreendido de forma errada?
11. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Business Modeling
Requirements
Analysis & Design
Implementation
Test
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
Business Requirements Analysis Design Implementation Test Deployment
Nunca há tempo suficiente ou está funcionando!
12. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Business Modeling
Requirements
Analysis & Design
Implementation
Test
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
13. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Business Modeling
Requirements
Analysis & Design
Implementation
Test
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
14. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Test
Business Modeling
Requirements
Analysis & Design
Implementation
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
15. O que é agilidade?
Ciclo de vida de um Software
Desenvolvimento Manutenção
Deploy Deploy Deploy
Deploy Deploy Deploy
Deploy Deploy
Fronteira de
Transição não faz
mais sentido
16. O que é agilidade?
Process Disciplines Inception Elaboration Construction Transition
Requirements
Test
Analysis & Design
Business Modeling
Implementation
Deployment
Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
18. O que é difícil?
Pair Programming
Energized
Work
Single Code BaseWhole Team
Share Code Move People
Sit Together Around
Stories
Informative
Worspace
36. Perdedores de tempo
Não consigo
reproduzir, me passa o
banco!
Ok, vou colocar na
pasta X
[cmilfont] /projetos/agilidadenomundoreal (master)
$ pg_restore -h localhost -p 5432 -U postgres -d agilidade_development -l
"/home/cmilfont/agilidade.backup"
codificando...
37. Ganhadores de tempo
Não consigo
reproduzir, me passa o
banco!
Faz pull, roda o seed
pois atualizei os dados
[cmilfont] /projetos/agilidadenomundoreal (master)
$ sink && rake db:reset && rake db:seed
45. Trabalhos repetitivos, aonde?
U need tests
Development
Commit
Merge from Hell i h8 SQL Feedback
Deploy
Push Create,
Insert...
46. Se você não testa, está errado em
todas as metodologias conhecidas
47. TDD aumenta o tempo de entrega
e o time tende a se desmotivar
Testa
Codifica Refatora
48. BDD facilita o Test First
mas não faz milagres
Teste de Aceitação
Testa
Codifica Refatora
Codifica Refatora
49. BDD é fácil de adotar mas ...
# language: pt
Funcionalidade: Selecionar curriculo
Como um empregador
Eu quero selecionar um curriculo
Para que eu possa organizar e listar os currículos recebidos que preferi
Contexto:
Dado um curriculo enviado de "Christiano Milfont"
Cenário: Selecionar currículos
Dado que eu estou logado como empregador
E eu clicar em "Vagas abertas"
E eu clicar em "Programador Rails"
E eu clicar em "Currículos encaminhados"
Quando eu selecionar o curriculo de "Christiano Milfont"
Então o curriculo de "Christiano Milfont" deve estar na lista de
selecionados
50. Test First continua
difícil
Teste de Aceitação
Fosso
Testa
Codifica Refatora
Codifica Refatora
51. Test First continua
difícil
Imanutenível
Teste de Aceitação
Fosso
Testa
Codifica Refatora
Codifica Refatora
62. PMBOK de Jeans
CMMi
PMBOK
Rup / XP / Scrum / Whatever
Rup / XP / Scrum / Whatever
63. Release e Iteration Planning
Release
Condições de
satisfação (user
stories, budget,
schedule)
Release
Planning
Iteração
Condições de
satisfação (user
stories + Acceptance
Tests)
Iteration Incremento
Desenvolvimento
Planning no produto
64. Release e Iteration Planning
# language: pt
Funcionalidade: Selecionar curriculo
Como um empregador
Eu quero selecionar um curriculo
Para que eu possa organizar e listar os currículos recebidos que preferi
Contexto:
Dado um curriculo enviado de "Christiano Milfont"
Cenário: Selecionar currículos
Dado que eu estou logado como empregador
E eu clicar em "Vagas abertas"
E eu clicar em "Programador Rails"
E eu clicar em "Currículos encaminhados"
Quando eu selecionar o curriculo de "Christiano Milfont"
Então o curriculo de "Christiano Milfont" deve estar na lista de
selecionados