Hoje vou falar sobre um assunto que considero especial: eXtreme Programming. Ele foi (e ainda é) responsável por grandes mudanças em minha vida profissional, me ajudando a evoluir e a repensar tudo o que achava que sabia sobre projetos e engenharia de software.
O eXtreme Programming (XP) é uma metodologia de desenvolvimento de software que se baseia na ideia de encarar projetos com escopos vagos e em constante mudança.
Aqui acreditamos que na prática não se sabe como o software poderá resolver o problema do cliente e que o andamento do projeto é um processo de descoberta constante. Com isso em mente, as iterações costumam ser bem menores do que em um Sprint de Scrum, por exemplo. Em XP trabalhamos com ciclos semanais e trimestrais.
Ciclo Trimestral
Ao começo de cada trimestre o time se reúne com o cliente presencialmente e uma lista de itens é levantada e discutida sobre o que deve existir no software para resolver o problema apresentado por ele. Após essa definição, damos início aos ciclos semanais de desenvolvimento.
Ciclo Semanal
Um dos grandes valores em XP é a comunicação, onde existe sempre a preferência por conversas presenciais e, por conta disto, a presença do cliente junto ao time semanalmente é essencial. Uma vez por semana o time se reúne com o mesmo presencialmente e, de acordo com o que que foi discutido no início do ciclo trimestral, os itens são analisados.
O time discute e busca priorizar junto ao cliente tarefas com base no que é possível desenvolver e entregar durante aquela semana.
Após esta definição, o desenvolvimento dos itens acordados são realizados durante a semana e, após aquela semana, o cliente se reúne novamente com o time para avaliar o que foi feito.
Com base no que foi entregue, o cliente consegue sentir se aquilo pode realmente resolver o seu problema e o time consegue um feedback imediato sobre o trabalho realizado. Após essa avaliação, todos o itens são revisados e uma nova priorização é feita para definir quais serão as tarefas a serem realizadas naquela semana.
Encarando as Mudanças
Por conta de suas iterações curtas, temos a vantagem de evitar ao máximo o desperdício de trabalho, pois a cada semana o cliente pode dizer se estamos no caminho certo, ou se estamos desenvolvendo algo que na prática não está resolvendo o seu problema.
Isso permite que a toda semana o planejamento do que deve ser feito possa mudar completamente, construindo assim uma solução de software baseada no constante aprendizado semanal. Porém, a possibilidade de o escopo mudar radicalmente a cada semana pode ser um grande problema, já que mudança em software é geralmente encarada como algo ruim. Devido a isso, o XP foca em diversas práticas no desenvolvimento de software que visam evitar problemas com a mudança constante de escopo.
Algumas Práticas
Para não sofrer com as constantes mudanças, diversas práticas são de extrema importância em XP, como por exemplo:
- Desenvolvimento Orientado a Testes (TDD)
- Integração Continua
- Programação em Par
- Refatoração Constante
Elas buscam garantir que o código tenha uma alta qualidade e que mudanças possam ser realizadas de forma tranquila.
Fim do Ciclo Trimestral
Após o fim de um Ciclo Trimestral, o time se reúne com o cliente para analisar o que foi desenvolvido até o momento e refletir sobre o trimestre que se encerrou para então realizar um novo planejamento a ser seguido nos próximos 3 meses.
Indo Além
Confesso que me sinto mal ao tentar resumir uma metodologia tão rica como XP em poucas palavras. Tentei passar uma visão extremamente superficial apenas para começarmos a criar uma ideia sobre como o desenvolvimento de software é encarado a partir dela.
Recomendo a qualquer interessado no assunto que busque mais sobre eXtreme Programming e procure se aprofundar em suas propostas e ensinamentos. Algumas recomendações de leitura:
- Programação Extrema (XP) Explicada: Acolha as Mudanças – Kent Beck
- Extreme Programming – Vinícius Manhães Teles
Recomendo também essa talk do TDC de 2008 feita por Vinícius Teles. E agora, ficou claro o que é eXtreme Programming (XP)? Se ainda restou alguma dúvida, comenta aqui embaixo.