Em 1996 num projeto para a Chrysler Kent Beck criou a metodologia, a partir daí começou a refiná-la e em 1999 foi lançado o primeiro livro.
Principais características: TDD, Pair Programming, Continuous Integration, Continous Delivery, Daily Standing Meetings, Collective code ownership.
É uma metodologia de desenvolvimento de software.
Para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança.
Com XP há bastante enfoque na refatoração de código, sempre objetivando o Clean Code.
Requisitos são expressos como testes de aceitação automatizados ao invés de especificação com documentação.
Codificação é a atividade central do projeto. Testes também são código.
Procura levar ao extremo a simplicidade em muitos aspectos do desenvolvimento de software.
Também procura levar ao extremo um conjunto de boas práticas de engenharia de software.
Melhorias contínuas: Teste contínuo, Revisão contínua, Refatoramento contínuo, Integração contínua.
Com iterações curtas: Defeitos terão custo baixo, pequenas entregas e com isso rápido feedback.
Com XP a documentação tende a ser mínima, apenas o que realmente pode agregar valor para o desenvolvimento nas iterações, geralmente utiliza-se os: Épicos. Estórias de Usuário. Tarefas.
Não é muito incentivado, mas Diagramas UML e Modelos ER também podem ser utilizados.
Semana de 40 horas. O XP prega que horas extras a médio e longo prazo defasam o desempenho da equipe e o ganho do começo torna-se prejuízo com o tempo.
Metáforas
Simple Design
Coding Standards (Padrões de código)
Coding Dojo (Programação em Par).
O XP não procura adiantar as mudanças desenvolvendo algo que não foi pedido. Elas podem nunca vigorar. É um dinheiro e tempo que muitas vezes é desperdiçado.
O XP foca em adaptar a mudanças rapidamente com ciclos curtos o que dá previsibilidade, redução de riscos, simplicidade.
Jogo do planejamento:
O jogo é uma reunião que ocorre uma vez por iteração, normalmente uma vez por semana. O processo de planejamento é dividido em duas partes:
- Planejameto de release
- Planejamento de iteração
No planejamento da-se enfoque à priorização de funcionalidades que representem maior valor possível para o negócio. Desta forma, caso seja necessário a diminuição de escopo, as funcionalidades menos valiosas serão adiadas ou canceladas.
Mantras:
- Escute: Conversar bastante com o cliente.
- Planeje: Planejar o tempo todo.
- Codifique: XP é contra a documentação que não agrega valor. Enquanto um documento não é codificado, ele é apenas um documento. O documento mais importante é o código.
- Teste: Senão não se saberá se realmente está funcionando.
- Refatore: Senão o código vai ficar tão ruim que será impossível dar manutenção.
Valores:
- Comunicação: A comunicação ajuda na eliminação de documentos e favorece a comunicação face a face.
- Simplicidade: Fazer o mais simples possível e caso necessário fazer mais complexo amanhã. Muitas vezes algo é feito de forma completa e depois nem é usado ou nem é necessário.
- Feedback: Devemos sempre perguntar ao software e não a um documento. Isso é feito com testes automatizados.
- Coragem: Jogar fora código ruim, protótipos, spikes.
Scrum e XP compartilham valores e princípios de desenvolvimento de software.
Eles são complementares. Podendo ser utilizados em conjunto.
Scrum é mais um framework gerencial. XP é mais técnico.
XP foca mais em práticas de engenharia de software.
Requer muita mudança cultural
Requer reuniões em intervalos muito frequentes o que é um enorme gasto para o cliente
Só funciona com desenvolvedores sêniors
Código coletivo pode acabar sendo usado de uma forma "comunista" demais, trazendo muitos prejuízos.
As práticas do XP são interdependentes, e é difícil uma empresa conseguir adotar todas, assim a metodologia pode fracassar.