Agile e Waterfall (também chamada de tradicional) são duas metodologias de desenvolvimento. Agile usa uma abordagem iterativa, enquanto Waterfall é sequencial.
Ao abordar um novo projeto, programa ou produto, os gerentes de projeto se deparam com a decisão de que tipo de metodologia de entrega usar. Um método de entrega é basicamente uma estrutura: um processo ou uma série de processos usados para facilitar o planejamento organizado, o desenvolvimento, a execução, a correção, o monitoramento e a análise do trabalho. E duas das metodologias mais amplamente usadas atualmente são a estrutura tradicional Waterfall e a abordagem Agile mais recente. Uma terceira abordagem, que combina métodos de trabalho ágeis e tradicionais, também está observando uma adoção generalizada.
O Agile é uma metodologia de desenvolvimento de software iterativa com um objetivo centralizado em torno da colaboração entre equipes auto-organizáveis e interdisciplinares. Saiba mais sobre a metodologia Agile.
A metodologia Agile evita a abordagem tradicional de uma etapa por vez em que os recursos alocados realizarão tarefas atribuídas específicas e, em seguida, moverão o projeto para a próxima fase ou para os recursos atribuídos. Em vez disso, ela conta com equipes dedicadas que podem operar de forma colaborativa e simultânea. Essas equipes realizam tarefas simultaneamente, o que elimina a necessidade de aguardar a conclusão das tarefas, e podem se ajustar facilmente para atender às necessidades em constante mudança ou aos problemas emergentes.
Como mencionado acima, a metodologia Agile é iterativa, oferece suporte a versões contínuas; ela divide o trabalho em várias sequências de ciclos repetidos, chamadas de iterações. Isso agrega valor ao usuário final de modo contínuo, e não totalmente de uma só vez na conclusão do projeto. A metodologia Agile desempenha uma função fundamental na entrega contínua e na melhoria contínua.
Embora equipes diferentes possam abordar a metodologia Agile de várias maneiras diferentes, ela sempre segue os seguintes princípios fundamentais:
- Adaptabilidade
Os projetos Agile devem ter a flexibilidade para mudar a arquitetura, o design, os produtos finais, os requisitos e outros elementos durante o projeto. - Desenvolvimento Lean
A metodologia Agile adota a abordagem mais simples de desenvolvimento, eliminando etapas desnecessárias ou redundantes. - Trabalho em equipe
A abordagem Agile depende de um trabalho em equipe e de uma comunicação eficazes, permitindo a conclusão de várias tarefas de uma só vez. - Envolvimento do cliente
As iterações Agile agregam valor em incrementos, possibilitando a colaboração com os clientes na introdução de novas ideias e na realização de revisões de produtos. - Sustentabilidade
A metodologia Agile enfatiza a criação de um ritmo de desenvolvimento sustentável e constante para agregar valor ao cliente com base nos resultados, em vez de pressionar as equipes concentradas em resultados. - Tempo
O tempo gasto em projetos Agile é dividido em sprints: pequenas unidades de tempo em que tarefas específicas são concluídas e, em seguida, revisadas. - Testes
Os testes ocorrem durante todas as fases do projeto Agile, em vez de esperar a conclusão de todo o projeto.
Desde sua introdução no início da década de 2000, a metodologia Agile ganhou uma popularidade significativa. Alguns dos benefícios dela são:
Sprints predefinidos permitem a entrega de novos recursos de forma rápida e previsível. Também é possível realizar os testes beta antes do que seria possível.
O foco da metodologia Agile na simplicidade e na colaboração proporciona às equipes liberdade inigualável para se auto-organizar e tomar decisões cruciais.
A autonomia da equipe na metodologia Agile oferece às equipes a flexibilidade de escolher os métodos e as técnicas que se adaptam melhor ao resultado desejado. Ao mesmo tempo, os próprios projetos se tornam mais adaptáveis, com itens de backlog novos ou alterados que podem ser introduzidos durante o desenvolvimento. Os testes beta iniciais também dão um feedback essencial que os desenvolvedores podem usar para fazer mudanças importantes.
A metodologia Agile depende da capacidade de uma equipe de se comunicar de forma eficaz, interna e externamente. Ela enfatiza a direção e a clareza e garante que uma comunicação regular e direta esteja ocorrendo.
Na metodologia Agile, é o cliente ou o usuário final que determina a prioridade dos recursos. Isso proporciona às equipes de desenvolvimento informações claras sobre quais recursos oferecem o melhor valor para a empresa.
Ao enfrentar prazos apertados e objetivos difíceis e de longo prazo, os desenvolvedores podem facilmente perder de vista a importância do cliente. A metodologia Agile realinha esse foco, usando as necessidades do cliente e outros feedbacks do usuário como base para produtos aprimorados. Isso resulta não apenas no aumento da satisfação do cliente, mas também em maiores retornos.
Embora a abordagem Agile muitas vezes seja considerada a melhor escolha de metodologia, ela traz consigo algumas desvantagens das quais nós devemos estar cientes antes de nos comprometer totalmente. Alguns deles são:
Se os clientes não tiverem tempo nem interesse em trabalhar em estreita colaboração com a equipe de desenvolvimento, o projeto não terá o feedback nem as informações de que precisa para avançar.
Se os membros da equipe não estiverem totalmente comprometidos em concluir o projeto de modo eficaz e eficiente, o aspecto de autogestão da metodologia Agile fracassará.
Algumas tarefas, ou até mesmo determinadas subtarefas, podem exigir muito tempo para serem concluídas durante um só sprint. Para resolver esses problemas, as equipes precisam mudar as prioridades ou introduzir sprints adicionais dispendiosos.
A natureza iterativa e incremental da metodologia Agile não é tão compatível com a governança ou a supervisão de projetos. As equipes que não conseguem se autogerenciar são menos propensas a serem gerenciadas de forma eficaz.
O fato de que a metodologia Agile prioriza o software de trabalho em vez da documentação às vezes significa que a notação essencial fica para trás. Isso pode ser um problema, pois a documentação abrangente ajuda a tornar as implementações mais compartilháveis, identifica a lógica por trás de decisões específicas e permite que as equipes retornem mais facilmente às fases anteriores.
Muitas vezes, processos corporativos, conjuntos de ferramentas, políticas, estruturas organizacionais e controles enraizados não são favoráveis à metodologia Agile. Dessa forma, a implementação Agile eficaz exige uma mudança cultural disseminada em toda a organização. Isso pode gerar resistência em indivíduos ou departamentos que estão acostumados a práticas mais tradicionais.
A abordagem mais tradicional de desenvolvimento, a metodologia Waterfall é linear e sequencial e divide o ciclo de vida de desenvolvimento de software em fases distintas nas quais a próxima fase só poderá avançar se a anterior tiver sido concluída.
A metodologia de desenvolvimento mais antiga, Waterfall, é simples de usar e entender e depende muito da carga inicial de trabalho, pesquisa, documentação e planejamento. Trata-se de uma abordagem de dupla verificação e execução única: todos os requisitos do projeto são claramente definidos no início, e um plano detalhado é criado para acomodar essas necessidades.
A metodologia de desenvolvimento tradicional divide os projetos em sete fases distintas. Cada uma dessas fases é independente das outras; uma nova fase geralmente não pode começar antes da conclusão da anterior. Além disso, a maioria das fases é separada por um "marco da fase", que representa um conjunto de requisitos que devem ser atendidos e decisões de gestão que devem ser tomadas antes de ser possível fazer a transição do projeto para a próxima fase. Estas são as fases:
- Concepção
As equipes de desenvolvimento começam avaliando o futuro projeto, inclusive seus benefícios e possíveis custos. - Documentação
Os requisitos do sistema e do software, além de outros recursos do projeto, são coletados e documentados. - Análise e design
As equipes analisam o projeto e determinam como desejam que o produto ou serviço funcione; o trabalho essencial é identificado e planejado. - Testes de códigos e unidades
A codificação começa para cada unidade do software, e os testes ocorrem ao longo do caminho. As unidades são integradas à arquitetura de software definida nas fases anteriores. - Testes de todo o sistema
Testes são realizados em todo o sistema; isso inclui testes de erros e UAT (User Acceptance Testing, testes de aceitação do usuário), além de quaisquer outros testes essenciais. - Resolução de problemas
Os erros, as ineficiências e os problemas identificados na fase anterior são resolvidos e corrigidos. - Entrega
O produto ou o serviço acabado é implementado para o usuário final.
Descrita pela primeira vez em 1970, a metodologia Waterfall tem visto um uso consistente entre as equipes de desenvolvimento por aproximadamente meio século. Isso ocorre porque ela oferece certos benefícios, como:
A metodologia Waterfall talvez seja a mais fácil de gerenciar, em que cada fase é conectada a produtos finais específicos e a um claro processo de revisão.
Em projetos em que vários componentes precisam ser projetados para permitir a integração a sistemas externos, a abordagem da metodologia Waterfall (em que o design é concluído no início do processo) é uma vantagem clara.
Os requisitos de produto são documentados e acordados antes do início do desenvolvimento, estabelecendo um conjunto previsível e concreto de recursos.
O aumento do planejamento e da documentação inicial criam uma visão geral clara dos possíveis custos. Isso permite um orçamento preciso.
Como o escopo completo do trabalho é conhecido antecipadamente, a medição do andamento se torna simples e precisa. Geralmente, o andamento é medido no "relatório de status", onde os itens de trabalho são definidos como verde, amarelo ou vermelho em termos de programação, orçamento e recursos.
Os objetivos são identificados e estabelecidos antes do início do trabalho de desenvolvimento, em vez de permanecerem fluidos para atender às necessidades dinâmicas.
Os membros da equipe têm largura de banda para trabalhar em outros projetos, precisando comprometer seu tempo apenas durante as fases designadas.
As metodologias Waterfall criam uma experiência mais fácil e mais prática para os clientes; o envolvimento dos usuários finais não é necessário, exceto durante as fases de requisitos e revisão.
Com um foco mais claro no planejamento e na documentação, os projetos seguem um caminho estabelecido, são mais fáceis de revisar e os resultados são mais claramente identificáveis.
A ascensão da abordagem Agile comprova certas desvantagens da tradicional metodologia Waterfall. Algumas dessas desvantagens incluem:
Como a metodologia Waterfall depende do planejamento detalhado das fases iniciais, os projetos que enfrentam problemas inesperados, obstáculos ou necessidades em constante mudança podem não conseguir se adaptar. Da mesma forma, os projetos Waterfall fluem em apenas uma direção; pode ser impossível ou muito difícil retornar às fases anteriores para fazer mudanças.
Os requisitos rigidamente definidos deixam muito pouco espaço para inspiração, inovação ou criatividade e podem impedir que os desenvolvedores aproveitem oportunidades inesperadas durante o desenvolvimento.
Por estarem menos envolvidos nos processos de desenvolvimento, os clientes podem se sentir deixados de fora do ciclo. Talvez ainda mais problemático seja o fato de que os clientes só saberão o que será entregue após a conclusão do projeto. Por outro lado, os próprios desenvolvedores podem não saber qual é o resultado esperado pelo cliente, o que amplia ainda mais a lacuna. Além disso, como os testes ocorrem apenas ao final do projeto, é maior a probabilidade de deixar passar erros e problemas de UX.
Prazos incertos para fases específicas podem resultar em projetos que ultrapassam o cronograma. Para compensar isso, as equipes às vezes se apressarão nas últimas fases, inclusive nos testes. Isso pode levar a produtos inferiores.
É necessário identificar claramente e aprovar os requisitos antes de iniciar qualquer trabalho. Caso contrário, os membros individuais da equipe podem interpretar os requisitos de forma diferente, o que gera uma desconexão.
Com tanto esforço gasto no planejamento e na documentação, há menos recursos disponíveis para a criação real de produtos.
As metodologias Agile e Waterfall oferecem suas próprias vantagens e desvantagens. Com isso em mente, entender os casos de uso específicos das duas opções pode ajudar as organizações a escolher as abordagens que funcionarão melhor por projeto.
Ao tomar essas decisões, considere os seguintes aspectos:
Requisitos de projeto mais rigorosos são mais adequados para a metodologia Waterfall, enquanto um menor número de requisitos e regulamentos permite que a criatividade e a liberdade da metodologia Agile se destaquem.
Requisitos de projeto mais rigorosos são mais adequados para a metodologia Waterfall, enquanto um menor número de requisitos e regulamentos permite que a criatividade e a liberdade da metodologia Agile se destaquem.
Processos rigorosos tornam a implantação da metodologia Agile muito difícil e se beneficiam mais de uma abordagem Waterfall tradicional. A metodologia Agile é mais eficaz quando os processos são mais flexíveis.
A metodologia Waterfall é eficaz quando clientes, usuários finais e proprietários de produtos não estão interessados em trabalhar em estreita colaboração com a equipe de desenvolvimento. Esses usuários que desejam maior envolvimento se beneficiam mais da abordagem Agile.
O aprimoramento dos projetos legados existentes, onde os recursos já estão bem definidos e as integrações estão estabelecidas, se beneficia da abordagem Waterfall. Se o projeto for pioneiro e estiver tentando algo que ainda não foi feito, a abordagem iterativa da Agile permite que as equipes aprendam e se adaptem durante o processo.
A metodologia Waterfall estabelece um resultado previsível e funciona bem com prazos claramente definidos e projetos de longa duração. Prazos mais curtos que são mais flexíveis funcionam melhor na abordagem Agile.
A previsibilidade da metodologia Waterfall também é adequada a orçamentos inflexíveis, em que é necessário documentar previamente cada ação e despesa no início do processo. A abordagem Agile exige menos rigidez no orçamento, concentrando-se em recursos e na velocidade de desenvolvimento, em vez de adotar uma postura tão rigorosa quanto aos custos.
Projetos menores e bem definidos geralmente são mais adequados para a metodologia Waterfall. Projetos maiores e mais complexos se beneficiam da abordagem Agile.
Ao se coordenar com funcionários remotos ou fazer parcerias com outras organizações, a menor necessidade de colaboração presencial da metodologia Waterfall a torna uma escolha melhor. Se um só departamento ou membros de uma equipe em que todos trabalham no mesmo local forem os únicos responsáveis pelo projeto, a abordagem Agile será mais eficaz.
Como as metodologias Agile e Waterfall oferecem benefícios significativos, empresas do mundo todo estão buscando maneiras de combinar essas vantagens e, ao mesmo tempo, limitar as desvantagens. O resultado é a gestão híbrida de projetos.
A gestão de projetos híbrida reúne as metodologias Agile e Waterfall para criar uma solução que otimiza o tempo, os recursos e a satisfação do usuário.