Publicité
Publicité

Contenu connexe

Publicité

Similaire à XP - Extreme Programming(20)

Publicité

Dernier(20)

XP - Extreme Programming

  1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br Extreme Programming
  2. @rodrigobranas rodrigo.branas@gmail.com Formação Acadêmica Ciências da Computação – UFSC Gerenciamento de Projetos - FGV Certificações SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM
  3. Rodrigo Branas – rodrigo.branas@gmail.com 10 anos de experiência na plataforma Java 1000 horas em sala de aula Mais de 50 palestras em eventos Líder da área de desenvolvimento na Gennera Autor da revista Java Magazine Palestrante Instrutor da Academia Java e Agile da Globalcode Criador dos treinamentos de Clean Code, Selenium e Maven da Agile Code Trabalhou com as empresas: EDS, HP, GM, Citibank, OnCast, Globalcode, V.Office, Dígitr o, Softplan, Unimed, Suntech, Vale do Rio
  4. 1995 – Projeto C3 Chrysler Comprehensive Compensation
  5. Payroll System
  6. Migrar a base de código legada escrita em COBOL e integrar com outros sistemas
  7. Com a complexidade, a situação ficou caótica e o software instável
  8. Kent Beck (Criador do Extreme Programming) É chamado para ajudar a salvar o projeto!
  9. Parando de cavar...
  10. Praticamente todo o código foi jogado fora!
  11. Reescrever tudo em menos tempo e com metade da equipe trabalhando de forma diferente!
  12. O conjunto de práticas propostas por Kent para escrever o código deram origem ao Extreme Programming
  13. Entre as principais práticas utilizadas estão: Pair Programming
  14. Entre as principais práticas utilizadas estão: Pair Programming TDD
  15. Entre as principais práticas utilizadas estão: Pair Programming TDD Refactoring
  16. Entre as principais práticas utilizadas estão: Pair Programming TDD Refactoring Build automatizado
  17. Entre as principais práticas utilizadas estão: Pair Programming TDD Refactoring Build automatizado Integração contínua
  18. Em 1997 o Projeto C3 foi para produção! Mais de 10.000 funcionários foram pagos por meio do novo software!
  19. Extreme Programming é uma mudança social!
  20. Abandonar velhos hábitos
  21. Foco em técnicas de programação
  22. Na comunicação aberta e direta!
  23. Muito trabalho em equipe!
  24. Buscando a excelência em desenvolvimento de software
  25. Como fica o Extreme Programming no contexto da agilidade em geral?
  26. Valores do Extreme Programming
  27. Comunicação
  28. Face-a-face
  29. Simplicidade
  30. YAGNI (You Ain’t Gonna Need It)
  31. YAGNI (You Ain’t Gonna Need It) Tempo gasto adicionando, testando e corrigindo novas funcionalidades.
  32. Tempo gasto adicionando novas funcionalidades são apenas a ponta do iceberg!
  33. YAGNI (You Ain’t Gonna Need It) Tempo gasto adicionando, testando e corrigindo novas funcionalidades. Novas funcionalidades precisam ser debugadas, documentadas e suportadas.
  34. YAGNI (You Ain’t Gonna Need It) Tempo gasto adicionando, testando e corrigindo novas funcionalidades. Novas funcionalidades precisam ser debugadas, documentadas e suportadas. Seu código ocupa espaço e aumenta a complexidade do software como um todo.
  35. YAGNI (You Ain’t Gonna Need It) Tempo gasto adicionando, testando e corrigindo novas funcionalidades. Novas funcionalidades precisam ser debugadas, documentadas e suportadas. Seu código ocupa espaço e aumenta a complexidade do software como um todo. Novas funcionalidades geram novas necessidades e o Snowball Effect.
  36. Cuidado com o Snowball Effect
  37. O caso da Agenda Telefônica
  38. Feedback
  39. Fail Fast
  40. Perdendo as chaves...
  41. Coragem
  42. Assumir responsabilidades
  43. Trabalhar de formas diferentes
  44. Se adaptar as mudanças
  45. Reconhecer as falhas
  46. “Não importa o quão longe você andou na direção errada, volte imediatamente.” (Provérbio turco)
  47. Primary Practices
  48. Sit Together
  49. Desenvolver software envolve o aprendizado
  50. Compartilhar o conhecimento
  51. Barreiras na comunicação
  52. Times distribuidos podem ser ágeis?
  53. Whole Team
  54. Que tipo de profissionais são necessários?
  55. Problemas na comunicação entre diferentes setores
  56. Teoria das restrições
  57. Equipes multi-disciplinares!
  58. Diferença entre equipes e pessoas multi-disciplinares
  59. Informative Workspace
  60. Irradiadores de informação
  61. Ferramentas Eletrônicas x Físicas
  62. Energized Work
  63. Desenvolvimento envolve estimular a criatividade, idéias e o raciocínio
  64. Condições ideais de trabalho
  65. Produtividade x Carga Horária
  66. Horário fixo para entrar e sair
  67. Baixa motivação com o trabalho
  68. Ficou doente?
  69. Pair Programming
  70. Piloto + Copiloto
  71. Será que a velocidade do projeto será reduzida?
  72. Era uma vez um cliente: “Sem pair programming por favor!”
  73. Onde está o gargalo no desenvolvimento de software?
  74. O caso dos digitadores
  75. Vantagens do Pair Programming: Código de melhor qualidade
  76. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco
  77. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco Disseminação de conhecimento na equipe
  78. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco Disseminação de conhecimento na equipe Melhora na produtividade
  79. É obrigatório trabalhar em par durante todo o dia?
  80. Técnica do Pomodoro!
  81. Escolha a tarefa
  82. Acerte o seu Pomodoro para 25 minutos
  83. Trabalhe até o fim do Pomodoro
  84. Faça um intervalo de 5 minutos
  85. A cada 4 Pomodoros faça um intervalo longo de 15 a 20 minutos
  86. A importância da rotação dos pares
  87. Dica: Não se apaixone pelo seu par!
  88. Slack
  89. “Aliviar a tensão” (Babylon)
  90. Problemas com o overcommitment
  91. Frustração por não atingir a meta!
  92. Atolado?
  93. É necessário finalizar todas as user stories para atingir uma meta?
  94. Decompor as user stories deixando os detalhes menos importantes para o final
  95. Incluir tarefas técnicas importantes mas que possam ser canceladas
  96. Reservar um tempo livre caso seja necessário utilizá-lo
  97. Ten-Minute Build
  98. Ainda existe build manual?
  99. Tarefas mecânicas e repetitivas são desperdício puro!
  100. Desperdício Puro Desperdício Incidental Valor
  101. Gestão de dependências
  102. Ao baixar o código do repositório pela primeira vez, funciona?
  103. Por que realizar o build em no máximo “10 minutos”?
  104. Se demorar demais o build começará a ser evitado
  105. Perda da oportunidade de feedback
  106. Exercício: Quanto tempo dura o build em seu ambiente atual? O que pode ser feito para melhorá-lo?
  107. Estratégias para reduzir a demora no processo de build: Modularizar o build
  108. Estratégias para reduzir a demora no processo de build: Modularizar o build Distribuir ou delegar a execução do build (CI)
  109. Estratégias para reduzir a demora no processo de build: Modularizar o build Distribuir ou delegar a execução do build (CI) Otimizar os testes
  110. Estratégias para reduzir a demora no processo de build: Modularizar o build Distribuir ou delegar a execução do build (CI) Otimizar os testes Utilizar a base se possível em memória
  111. Continuous Integration
  112. Feedback integrado e instantâneo!
  113. Desenvolvendo uma cultura “Stop-the-line”
  114. Por que eu não realizo esse processo apenas na minha própria maquina?
  115. Evitando a síndrome do...
  116. Última versão sempre pronta para o cliente!
  117. Ferramentas para integração contínua
  118. Test-First Programming
  119. Qual é a vantagem de escrever o teste antes?
  120. Escopo limitado evita escrever código além do necessário
  121. Acoplamento e coesão
  122. Confiança no código
  123. Ganhando ritmo Teste, Código e Refactoring
  124. Métricas
  125. Como é a cobertura de testes dos softwares em que vocês trabalham atualmente?
  126. Incremental Design
  127. Investir apenas o necessário para implementar as funcionalidades
  128. Como evitar que o projeto da aplicação vire uma bagunça?
  129. Refactoring
  130. As práticas primárias são responsáveis pela base da comunicação e feedback. Os times podem usá-las para aumentar a confiança e a competência para construir relacionamentos dentro e fora do time.
  131. Corollary Practices
  132. O que aconteceria se você começasse a realizar o Daily Deployment tendo uma taxa de defeitos ainda alta? As práticas a seguir devem ser utilizadas quando a confiança estiver consolidada.
  133. Real customer involvement
  134. Metáfora do Alfaiate
  135. O que são clientes reais?
  136. Agile Anti-Pattern: Customer Proxy
  137. Fábrica de salsichas
  138. Beta testers
  139. Incremental Deployment
  140. Antecipar o ROI
  141. Guiar o desenvolvimento do produto com base em feedbacks
  142. Mitigar riscos na hora de virar a chave
  143. Definindo uma versão mínima para colocar em produção
  144. Cuidado com o resultado caso o produto esteja muito crú