Por que desenvolver iterativamente?
Se o processo de desenvolvimento fosse um filme, o modelo iterativo ganharia prêmio de melhor prática
A qualidade do time de desenvolvimento pode determinar o sucesso ou o fracasso de um software. Sim, isso é muito verdade. Mas também é fato que um projeto pode nunca chegar a ser um software se o processo de desenvolvimento não for bem definido.
Se seu produto fosse um filme, o processo de desenvolvimento seria o script. Afinal, ele é o responsável por guiar o time e mostrar o papel que cada um deve desempenhar. E se eu tenho um script bem elaborado e trabalho com o melhor elenco, as chances de o meu filme ser um sucesso de bilheteria são bem maiores, não é mesmo?
Quando se fala em modelos de desenvolvimento, o waterfall — ou modelo cascata — ainda é o mais abordado. A maioria das vezes para criticar, muito raramente para citar como exemplo de boa prática e menos ainda para tecer elogios emocionados.
Depois que as metodologias ágeis viraram tendência, o método cascata ficou tão ultrapassado quanto as fitas K7.
Os motivos não são poucos, mas vamos nos ater ao principal: quando utilizamos o modelo cascata e ocorrem falhas nas etapas iniciais ou intermediárias do processo, esses erros são replicados e ampliados para as fases seguintes. E quando isso acontece, nem Penélope Cruz como protagonista consegue desviar a atenção do estrago.
Além disso, seguir o modelo cascata significa demorar para validar uma aplicação com o cliente, demorar para receber feedback e demorar para descobrir se o que foi entregue atende ou não as necessidades do cliente. Esse conjunto de fatores pode levar esforços e horas de trabalho direto para o lixo.
Por isso, quem adotou o desenvolvimento iterativo e incremental como processo enche a boca para contar vantagem. Este tipo de desenvolvimento é bastante utilizado em metodologias ágeis.
Por que o modelo iterativo merece o Oscar?
O desenvolvimento iterativo existe há mais de 14 anos e é uma das bases do Manifesto para Desenvolvimento Ágil de Software.
A gente já destrinchou os valores do Manifesto Ágil e abordou que é o documento, de onde veio e o que você tem a ver com isso. Mas vale repetir que o manifesto criou um novo jeito de entender os projetos que lidam com imprevisibilidade e garantiu o maior envolvimento das pessoas que definem como será o software a ser desenvolvido.
Enxergar essa evolução fica mais fácil quando analisamos modelos mais ultrapassados.
Enquanto o modelo cascata é visto como um projeto sequencial, com começo, meio e fim, no desenvolvimento iterativo e incremental o ciclo “requisitos — desenvolvimento — testes — implantação” é reduzido ao menor tamanho possível e repetido várias vezes com entregas pequenas de software. Essa repetição cíclica e contínua é chamada de iteração. E os pequenos pedaços entregues a cada ciclo são os incrementos.
Na prática, cada iteração deve entregar uma parte funcional do software, que passará por todas as etapas de desenvolvimento, desde a elaboração dos requisitos até a implantação. Como a cada incremento é possível gerar uma versão praticável do software para o cliente, fica mais fácil e mais rápido obter feedbacks constantes.
Além disso, esse modelo de desenvolvimento permite o conserto de falhas mais rapidamente e incentiva o aperfeiçoamento dos ciclos seguintes, tomando como referência os aprendizados e feedbacks recebidos nos ciclos anteriores. Só este parágrafo já seria o suficiente para mostrar que o desenvolvimento iterativo merece o prêmio de melhor ator.
Mas, como dizem por aí, uma imagem fala mais do que mil palavras. Duas imagens, então, são capazes de resumir este texto inteiro sem muito esforço.
O consultor e desenvolvedor de software, Jeff Patton, fez uma analogia com o processo de pintar um quadro para explicar a diferença entre o modelo cascata e o desenvolvimento iterativo.
Qual desses modelos você acha que flui de forma mais natural?
Quanto mais você se aprofunda nos métodos ágeis, mais o modelo cascata se parece com aqueles filmes de época que duram três horas e, apesar de seguir o script, não fazem sentido.
Antes de dar tchau, vale esclarecer uma dúvida recorrente…
Iteração não é interação
Se eu falar “desenvolvimento interativo de software”, está correto? Não. Apesar de serem palavras parecidas, seus significados são completamente diferentes. Quando falamos em interação, nos referimos a uma espécie de relacionamento, de comunicação entre pessoas e pessoas ou entre pessoas e máquinas.