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.

Navegue pelo índice

    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.