O que é Agile?
Agile é um termo que descreve abordagens de desenvolvimento de software que enfatizam a entrega incremental, a colaboração em equipe, o planejamento contínuo e o aprendizado contínuo. O termo Agile foi cunhado em 2001 no Manifesto Agile. O manifesto pretendia estabelecer princípios para orientar uma melhor abordagem ao desenvolvimento de software. Em sua essência, o manifesto faz quatro declarações de valores que representam a base do movimento Agile. Conforme escrito, o manifesto afirma:
Passamos a valorizar:
- Indivíduos e interações em vez de processos e ferramentas.
- Software em funcionamento em vez de documentação abrangente.
- Colaboração com o cliente em vez de negociação de contratos.
- Responder a mudanças em vez de seguir um plano.
O manifesto não insinua que os itens do lado direito destas declarações não sejam importantes ou necessários. Em vez disso, os itens à esquerda são simplesmente mais valorizados.
Métodos e práticas Agile
É importante entender que Agile não é uma coisa. Você não faz Agile. Em vez disso, o Agile é uma mentalidade que impulsiona uma abordagem para o desenvolvimento de software. Como não há uma abordagem única que funciona para todas as situações, o termo Agile passou a representar vários métodos e práticas que se alinham com as declarações de valor no manifesto.
Os métodos Agile, que geralmente são chamados de frameworks, são abordagens abrangentes para as fases do ciclo de vida do DevOps: planejamento, desenvolvimento, entrega e operações. Eles prescrevem um método para realizar o trabalho com orientações e princípios claros.
O Scrum é o framework ágil mais comum e com o qual a maioria das pessoas começa. Já as práticas Agile são técnicas que são aplicadas durante as fases do ciclo de vida de desenvolvimento de software.
- O Planning Poker é uma prática de estimativa colaborativa projetada para incentivar os membros da equipe a compartilhar sua compreensão do que concluído significa. Muitas pessoas acham o processo divertido, e já é comprovado que ele ajuda a promover o trabalho em equipe e estimativas melhores.
- A integração contínua (CI) é uma prática comum de engenharia Agile que envolve a integração de alterações de código no branch principal com frequência. Uma compilação automatizada verifica as alterações. Como resultado, há uma redução na dívida de integração e um branch principal continuamente pronto para enviar.
Essas práticas, como todas as práticas Agile, carregam o rótulo Agile, porque são consistentes com os princípios do manifesto Agile.
O que o Agile não é
À medida que o Agile ganhou popularidade, muitos estereótipos e interpretações equivocadas lançaram uma sombra negativa sobre a sua eficácia. É fácil dizer "Sim, estamos usando o Agile" sem qualquer responsabilidade. Com esse ponto em mente, considere algumas coisas que o Agile não é.
- O Agile não é codificação de cowboy. O Agile não deve ser confundido com uma abordagem de "vamos descobrir à medida que avançamos" para o desenvolvimento de software. Essa concepção é completamente equivocada. O Agile requer uma definição de concluído e valor explícito que é entregue aos clientes em cada sprint. Enquanto o Agile valoriza a autonomia para indivíduos e equipes, ele enfatiza a autonomia alinhada para garantir que o aumento da autonomia produza maior valor.
- O Agile não dispensa rigor e planejamento. As metodologias e práticas Agile normalmente enfatizam a disciplina no planejamento. A chave é o planejamento contínuo durante todo o projeto, não apenas o planejamento antecipado. O planejamento contínuo garante que a equipe possa aprender com o trabalho que executa. Por meio dessa abordagem, a equipe maximiza o retorno sobre o investimento (ROI) do planejamento.
"Planos não valem nada, mas planejamento é tudo." — Dwight D. Eisenhower
- O Agile não é uma desculpa para a falta de um roteiro. Essa concepção equivocada provavelmente fez mais mal ao movimento Agile em geral. As organizações e equipes que seguem uma abordagem Agile sabem absolutamente para onde estão indo e os resultados que querem alcançar. Reconhecer a mudança como parte do processo é diferente de girar em uma nova direção a cada semana, sprint ou mês.
- O Agile não é desenvolvimento sem especificações. Em qualquer projeto, é necessário manter sua equipe alinhada sobre por que e como o trabalho acontece. Uma abordagem Agile para especificações inclui garantir que as especificações sejam dimensionadas corretamente e que reflitam adequadamente como a equipe sequencia e entrega o trabalho.
- O Agile não é incapaz de acomodar o trabalho não planejado e outras interrupções. É importante concluir os sprints dentro do prazo. Mas só porque surge um problema que atrapalha o desenvolvimento não significa que um sprint tenha que falhar. As equipes podem planejar interrupções designando recursos com antecedência para problemas inesperados. Elas podem então resolver essas questões, mas permanecer no caminho certo com o desenvolvimento.
- O Agile não é inadequado para grandes organizações. Uma queixa comum é que a colaboração, um componente-chave das metodologias Agile, é difícil em grandes equipes. Outro problema é que as abordagens escaláveis para o Agile introduzem estrutura e métodos que comprometem a flexibilidade. Apesar desses equívocos, é possível escalar os princípios Agile com sucesso. Para obter informações sobre como superar essas dificuldades, consulte Como escalar o Agile para grandes equipes.
- O Agile não é ineficiente. Para se adaptar às necessidades em constante mudança dos clientes, os desenvolvedores investem tempo a cada iteração para demonstrar um produto funcional e coletar feedback. É verdade que esses esforços reduzem o tempo que eles gastam no desenvolvimento. Mas incorporar as solicitações dos clientes logo no início economiza um tempo significativo depois. Quando os recursos permanecem alinhados com a visão do cliente, os desenvolvedores evitam grandes revisões no futuro.
- O Agile não é uma opção ruim para os aplicativos atuais, que geralmente se concentram no streaming de dados. Esses projetos normalmente envolvem mais cargas de trabalho de modelagem de dados e ETL (extract-transform-load) do que interfaces de usuário. Isso dificulta a demonstração de software utilizável em um cronograma consistente e apertado. Mas, ao ajustar as metas, os desenvolvedores ainda podem usar uma abordagem Agile. Em vez de trabalhar para realizar tarefas a cada iteração, os desenvolvedores podem se concentrar na execução de experimentos de dados. Em vez de apresentar um produto funcional a cada intervalo de semanas, eles podem ter como objetivo entender melhor os dados.
Por que o Agile?
E então, por que alguém consideraria uma abordagem Agile? É claro que as regras da criação de software mudaram fundamentalmente nos últimos 10 a 15 anos. Muitas das atividades são parecidas, mas o cenário e os ambientes onde as aplicamos são visivelmente diferentes.
- Compare como é comprar software hoje com o início dos anos 2000. Com que frequência as pessoas dirigem até a loja para comprar software comercial?
- Considere como o feedback é coletado dos clientes sobre os produtos. Como uma equipe entendia o que as pessoas pensavam sobre seu software antes das mídias sociais?
- Considere a frequência com que uma equipe deseja atualizar e melhorar o software que ela fornece. As atualizações anuais não são mais viáveis contra a concorrência moderna.
Diego Lo Guidice, da Forrester, diz isso melhor em seu blog, Transforming Application Delivery (outubro de 2020).
"Tudo mudou drasticamente. Sustentabilidade, além de verde e limpa, significa que aquilo que criamos hoje tem que ser fácil e rapidamente mudado amanhã. Os planos estratégicos são de curto prazo, e o planejamento e a mudança são contínuos." — Diego Lo Guidice, Forrester
As regras mudaram, e as organizações em todo o mundo agora adaptam sua abordagem ao desenvolvimento de software de acordo. Os métodos e práticas Agile não prometem resolver todos os problemas. Mas eles prometem estabelecer uma cultura e um ambiente onde as soluções surgem por meio da colaboração, planejamento e aprendizado contínuos e o desejo de lançar software de alta qualidade com mais frequência.
Próximas etapas
A decisão de seguir o caminho Agile para o desenvolvimento de software pode apresentar algumas oportunidades interessantes para aprimorar seu processo de DevOps. Algumas das considerações principais concentram-se em como o desenvolvimento Agile se compara e se diferencia da atual abordagem de uma organização.