Entregue valor cedo e frequentemente. Obtenha feedback antes que seja tarde demais para mudar de rumo.
XP defende lançamentos pequenos e frequentes. Isso era radical em 1999, quando lançamentos anuais eram normais. Ainda é radical em muitas organizações.
Benefícios de lançamentos pequenos:
Feedback mais rápido: Os clientes veem software real mais cedo. Eles podem dizer o que está errado antes que você tenha construído muito da coisa errada.
Risco reduzido: Cada lançamento é uma pequena aposta. Se falhar, você perdeu semanas, não meses. Você pode corrigir o rumo rapidamente.
Entrega de valor mais rápida: Funcionalidades que estão prontas são usadas. Uma funcionalidade lançada hoje é melhor que uma funcionalidade esperando por um grande lançamento em seis meses.
Moral melhorado: A equipe vê seu trabalho sendo usado. Entregar é satisfatório. Ciclos de lançamento longos drenam a motivação.
Melhor qualidade: Lançamentos menores significam mudanças menores. Mudanças menores são mais fáceis de testar, mais fáceis de depurar e menos propensas a causar problemas.
Mínimo Viável de Tudo
XP inventou o produto mínimo viável (MVP) antes do termo existir. Kent Beck chamava de 'o menor lançamento que faz sentido.'
A frequência de lançamento certa depende do contexto, mas busque lançamentos menores e mais frequentes do que parece confortável.
Exemplos de frequência:
Cada passo menor é melhor, até o ponto em que a sobrecarga de lançamento domina. Se lançar leva um dia inteiro de trabalho manual, lançar diariamente é impraticável. Corrija o processo de lançamento primeiro.
Sinais de que você está lançando com pouca frequência:
Lançamentos pequenos exigem investimento técnico:
Testes automatizados: Você não pode lançar frequentemente se os testes levam semanas. Testes automatizados rápidos e abrangentes são essenciais.
Integração contínua: O código deve integrar suavemente. Branches de longa duração são incompatíveis com lançamentos frequentes.
Automação de implantação: Lançamentos devem ser com um clique. Etapas manuais de implantação te atrasam e introduzem erros.
Feature flags: Funcionalidades incompletas podem ser mescladas mas escondidas dos usuários. Isso permite lançamentos pequenos mesmo quando funcionalidades abrangem múltiplas iterações.
Estratégia de migração de banco de dados: Mudanças de esquema devem ser implantáveis sem quebrar o código existente. Geralmente isso significa migrações compatíveis com versões anteriores.
Monitoramento e rollback: Quando algo dá errado, você precisa saber imediatamente. E você precisa conseguir reverter rapidamente.
Essas não são práticas XP em si—são práticas modernas de DevOps que habilitam a visão original de XP de entrega contínua.
A equipe lança para produção toda terça-feira. O processo é automatizado e leva 10 minutos. Feature flags escondem trabalho incompleto. Rollback é com um clique.
Lançamentos acontecem trimestralmente. Cada lançamento é precedido por um 'congelamento de código' e 2 semanas de testes manuais. O dia de lançamento envolve 10 pessoas e leva 8 horas. Rollback requer restaurar backups de banco de dados.
O extremo lógico de lançamentos pequenos é implantação contínua: cada commit que passa nos testes vai diretamente para produção.
Isso parece aterrorizante. Mas com as práticas certas, é na verdade mais seguro que grandes lançamentos:
Implantação contínua requer:
Nem toda equipe está pronta para isso. Mas toda equipe pode caminhar em direção a lançamentos menores e mais frequentes. Comece lançando duas vezes mais frequentemente. Depois duas vezes mais frequentemente de novo. Veja até onde você pode ir.
Se implantação contínua parece impossível, pergunte por quê. Os obstáculos que você identifica geralmente são coisas que você deveria corrigir de qualquer forma: testes lentos, processos manuais, código frágil.