A Iteração 0 é quando uma equipe de desenvolvimento de software vai iniciar um novo produto/serviço/projeto e para isso será necessário um tempo para setup. Este setup pode envolver mudanças de infraestrutura, sessões de arquitetura, configurar servidores de integração contínua, entre muitas outras atividades. O importante é que como resultado final, a equipe esteja pronta para iniciar o trabalho.
É comum, após uma etapa de concepção (inception) ou pré-game, o time iniciar com uma iteração 0 de duas semanas.
Atividades comuns em Iterações 0:
- Definições relacionadas a SCM.
- O time irá trabalhar com git? SVN?
- O time irá trabalhar com trunk-based development e feature toggles?
- O time irá trabalhar com merge requests e code reviews?
- …
- Infraestrutura
- O time possui ambientes específicos como por exemplo: ambiente para testes de performance dedicado? ambiente de aceite para os usuários e clientes?
- Os servidores de Integração Continua e os agentes estão configurados e instalados? Ferramentas de análise de código (a la SonarQube) estão instaladas e configuradas?
- …
- Build & deploy
- O time consegue buildar a aplicação localmente em ambiente de desenvolvimento da mesma forma que o faz em outros ambientes? (repetível e automatizado?)
- …
- Arquitetura de Solução
- O time tem uma visão sobre como este novo produto/serviço/projeto se encaixara com as dependências e outras aplicações que eventualmente podem estar integradas com esta nova solução?
- Existem padrões e soluções que devem ser considerados ou reavaliados?
- Spikes ou PoCs (Provas de Conceito, do inglês Proof of Concept)
- …
- Requisitos não funcionais
- Existem requisitos ou necessidades específicas relacionadas a performance do produto/serviço/projeto? Tempo de resposta? Tempo de carregamento?
- Existem requisitos ou necessidades de segurança da informação?
- …
Questões relacionadas ao processo e ao ciclo de desenvolvimento também são interessantes de serem discutidas durante uma iteração 0. Por exemplo, se a equipe irá trabalhar utilizando o framework Scrum, qual será a duração da sprint? Quais dias e horários fazem mais sentido para as cerimônias?
Atividades de team building também podem ser úteis, especialmente se houver modificações nos integrantes da equipe. Entender os valores individuais e coletivos e os motivadores intrínsecos, são dois exemplos que eu acredito que agregam valor (ambos descritos em outros posts deste blog).
Muito mais importante do que a lista acima, é ter clareza sobre quais objetivos e metas, o que o time quer completar e entregar na Iteração 0 e o que vai permitir que o time inicie o desenvolvimento.