Os contextos e condições onde as práticas de XP entregam mais valor.
XP foi projetado para projetos onde os requisitos mudam com frequência. Se você não sabe exatamente o que construir, XP ajuda você a descobrir.
Sinais de alta incerteza:
Nesses ambientes, abordagens tradicionais falham. Design detalhado antecipado se torna obsoleto antes da implementação. Grandes lançamentos erram o alvo porque os requisitos mudaram.
XP abraça a mudança. Pequenos lançamentos obtêm feedback rápido. Design simples evita investimento excessivo. O jogo de planejamento se ajusta continuamente. Incerteza não é um problema—é esperada.
Se seus requisitos são realmente estáveis e bem compreendidos, XP ainda funciona, mas a proposta de valor é diferente. Você ganha qualidade e saúde da equipe, mas os benefícios de adaptabilidade são menos pronunciados.
XP assume que você está construindo algo que ainda não compreende totalmente. As práticas são projetadas para ajudá-lo a aprender o caminho até a solução certa.
XP brilha quando o código viverá por anos. O investimento em práticas técnicas compensa ao longo do tempo.
Por que sistemas de longa duração se beneficiam de XP:
Se você está construindo um protótipo que será descartado, o investimento de XP em qualidade pode não compensar. Mas a maioria dos "protótipos" se tornam sistemas de produção. A maioria do código "temporário" vive por anos.
A aposta: Assuma que seu código viverá mais do que você pensa. Invista em qualidade desde o início. Se você estiver errado, perdeu um pouco de tempo. Se estiver certo (e geralmente está), economizou anos de sofrimento.
XP requer colaboração próxima. Programação em par, jogos de planejamento e propriedade coletiva só funcionam quando as pessoas trabalham bem juntas.
Sinais de que sua equipe está pronta:
Se sua equipe não tem essas qualidades, as práticas de XP parecerão forçadas e desconfortáveis. Você pode precisar construir a saúde da equipe antes de adotar XP—ou usar práticas de XP para construir saúde da equipe gradualmente.
XP pode melhorar a colaboração, mas não pode forçá-la. Uma equipe de pessoas que não compartilham código não abraçará subitamente a propriedade coletiva. Uma equipe com medo de admitir erros não se beneficiará da transparência.
A cultura precisa apoiar as práticas—ou pelo menos estar disposta a mudar.
Desenvolvedores regularmente se ajudam. Eles admitem quando estão travados. Eles alternam pela base de código voluntariamente. Eles celebram o sucesso da equipe, não heroísmos individuais.
Desenvolvedores protegem 'seu' código. Eles escondem problemas até serem forçados a revelá-los. Há competição em vez de colaboração. Culpa é comum quando as coisas dão errado.
XP requer um cliente disponível—alguém que possa responder perguntas, tomar decisões de prioridade e fornecer feedback.
Sem disponibilidade do cliente:
Disponibilidade do cliente significa:
Se seus clientes não estão disponíveis, XP se torna difícil. Você pode usar um proprietário de produto como proxy, mas alguém deve desempenhar o papel de cliente efetivamente.
Disfunção organizacional frequentemente impede a disponibilidade do cliente. O cliente está muito ocupado, muito político ou muito distante. Esses são problemas organizacionais a resolver, não problemas de XP.
Algumas práticas de XP assumem contextos modernos de desenvolvimento de software. Elas podem precisar de adaptação em outros ambientes.
TDD assume:
CI assume:
Programação em par assume:
Na maioria do desenvolvimento de software, essas suposições se mantêm. Mas sistemas embarcados, código dependente de hardware ou ambientes altamente regulados podem precisar de adaptação de práticas.
Os princípios permanecem. As práticas específicas podem mudar.
Se TDD parece impossível no seu ambiente, pergunte por quê. Frequentemente a 'impossibilidade' revela problemas de design que TDD ajudaria você a corrigir.