Esta frase, de "Beautiful Boy", mostra que John Lennon sabia muito bem que é inútil tentar planejar nossas vidas em cada mínimo detalhe. No máximo poderíamos ter um plano básico, do tipo que diria que faculdade cursar ou quando seria a melhor hora para financiar uma casa bacana. A vida é muitíssimo mais poderosa que os nossos planos, várias vezes modificando o rumo que pensávamos ser o mais correto a tomar.
Uma oportunidade de emprego inesperada, um filho não planejado, um romance casual que se transforma em casamento, um hobby que vira profissão, tudo pode acontecer num instante e nos desviar de nossa "infalível" rota, tão meticulosamente traçada...
Sim, o controle é uma ilusão!
Mas o que Lennon não sabia é que essa ideia poderosa também é válida para o mundo do software. Há um processo de desenvolvimento que foca exageradamente na ideia do "plano perfeito", no detalhamento precoce da solução antes de qualquer codificação, de modo a termos maior "controle" sobre o que será desenvolvido, após extenso período de reflexão e análise.
Esse processo ficou conhecido como
waterfall (cascata) e é representado graficamente assim:
Parece fazer sentido, não? Planejar tudo
antes e implentar com segurança
depois... Entretanto, o tempo mostrou que a adoção desse processo foi toda baseada em
boatos e
suposições, em vez de evidências claras da eficácia do método. As pessoas adotaram essa visão achando que era a "coisa certa a fazer" e não mediram os resultados que estavam obtendo. Conclusão: vários projetos engordando as estatísticas já obesas de fracassos empresariais em TI.
Contrapondo essa visão surgiram os métodos
iterativos e evolutivos.
RUP,
OpenUP,
Scrum,
eXtreme Programming, são alguns exemplos de métodos que adotam o modulo
iterativo de desenvolvimento. Em vez de fases passamos a trabalhar com pequenas
iterações curtas (2-4 semanas, em média), agindo de forma
adaptativa e sempre produzindo software com qualidade de
release final.
A cada dia, inspecionamos o trabalho para termos a certeza de que o objetivo da iteração será alcançado.
Esse modelo, graficamente, pode ser representado (resumidamente) da seguinte forma:
Cada release da iteração é software potencialmente entregável. Passou pelas etapas de análise, planejamento, construção e testes e está pronto para ser integrado às outras partes já produzidas do sistema. Os insights adquiridos são debatidos nas retrospectivas e servem de baseline para as próximas iterações, um processo que se retro-alimenta todo o tempo.
O Cliente, presente em todas as etapas do projeto - em pessoa ou como um papel específico, ajuda a refinar o entendimento do negócio, apoiando para que o desenvolvimento agregue o máximo valor à empresa e acelere o ROI. O feedback é obtido cedo e ajuda a corrigir a rota para que esteja de acordo com as necessidades dos stakeholders.
Esse fluxo se repete por várias vezes, fazendo a equipe evoluir e aprender com erros e acertos...
É provável que você hoje trabalhe em uma empresa que utilize o modelo
waterfall de desenvolvimento. Caso os projetos estejam sendo entregues no
prazo, satisfazendo os clientes e gerando grande
valor ao negócio não há nenhuma razão para mudar. Caso contrário, considere a adoção do modelo iterativo de desenvolvimento
na empresa em que você trabalha.
Seja uma empresa privada ou
empresa pública certamente haverá desafios para mudar a cultura como um todo. Não desanime, pois o processo é lento. É necessário tempo para que as pessoas - clientes e fornecedores - aprendam a trabalhar de uma maneira totalmente diferente do que estão acostumadas.
Be patient!
"All you need is love."