O que é Agile?
Agile é um termo que descreve abordagens para o 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 se propôs a estabelecer princípios para orientar uma abordagem melhor para o desenvolvimento de software. Em sua essência, o manifesto declara quatro instruções de valor que representam a base do movimento Agile. Conforme escrito, o manifesto afirma:
Chegamos ao valor:
- Indivíduos e interações sobre processos e ferramentas.
- Software em funcionamento em vez de documentação abrangente.
- Colaboração com o cliente em vez de negociação de contratos.
- Respondendo à alteração seguindo um plano.
O manifesto não implica que os itens do lado direito dessas instruçõ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, Agile é uma mentalidade que impulsiona uma abordagem para o desenvolvimento de software. Como não há uma única abordagem que funcione para todas as situações, o termo Agile passou a representar vários métodos e práticas que se alinham com as instruções de valor no manifesto.
Os métodos Agile, que geralmente são chamados de estruturas, 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 diretrizes e princípios claros.
O Scrum é a estrutura Agile mais comum e a que a maioria das pessoas começa. As práticas ágeis, por outro lado, são técnicas aplicadas durante as fases do ciclo de vida de desenvolvimento de software.
- Planejar o Poker é uma prática de estimativa colaborativa projetada para incentivar os membros da equipe a compartilhar sua compreensão do que significa feito . Muitas pessoas acham o processo divertido, e provou ajudar a promover o trabalho em equipe e melhores estimativas.
- A CI (integração contínua) é uma prática comum de engenharia Agile que envolve a integração de alterações de código ao branch principal com frequência. Um build automatizado verifica as alterações. Como resultado, há uma redução na dívida de integração e uma ramificação principal continuamente transportável.
Essas práticas, como todas as práticas agile, carregam o rótulo Agile , pois são consistentes com os princípios do manifesto agile.
O que Agile não é
Como Agile ganhou popularidade, muitos estereótipos e interpretações incorretas lançaram uma sombra negativa sobre sua eficácia. É fácil dizer "Sim, estamos fazendo Agile", sem qualquer responsabilidade. Tendo esse ponto em mente, considere algumas coisas que Agile não é.
- Agile não é codificação de cowboy. Agile não deve ser confundido com uma abordagem "vamos descobrir à medida que avançamos" para o desenvolvimento de software. Tal idéia não poderia estar mais longe da verdade. O Agile requer uma definição de valor feito e explícito que é entregue aos clientes em cada sprint. Embora o Agile valorize a autonomia para indivíduos e equipes, ele enfatiza a autonomia alinhada para garantir que o aumento da autonomia produza um valor maior.
- Agile não é sem rigor e planejamento. Pelo contrário, as metodologias e práticas agile normalmente enfatizam a disciplina no planejamento. A chave é o planejamento contínuo em todo o projeto, não apenas planejando antecipadamente. O planejamento contínuo garante que a equipe possa aprender com o trabalho executado. Por meio dessa abordagem, eles maximizam o retorno sobre o investimento (ROI) do planejamento.
"Os planos são inúteis, mas o planejamento é tudo." — Dwight D. Eisenhower
- Agile não é uma desculpa para a falta de um roteiro. Esse equívoco provavelmente fez o maior dano ao movimento Agile em geral. Organizações e equipes que seguem uma abordagem Agile sabem absolutamente para onde estão indo e os resultados que desejam alcançar. Reconhecer a alteração como parte do processo é diferente de pivotar em uma nova direção a cada semana, sprint ou mês.
- Agile não é desenvolvimento sem especificações. É necessário em qualquer projeto 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 de tamanho correto e que elas reflitam adequadamente como as sequências e entregas da equipe funcionam.
- Agile não é incapaz de acomodar trabalhos não planejados e outras interrupções. É importante concluir sprints dentro do cronograma. Mas só porque surge um problema que desvia o desenvolvimento não significa que um sprint tem que falhar. O Teams pode planejar interrupções designando recursos antecipadamente para problemas e problemas inesperados. Em seguida, eles podem resolver esses problemas, mas manter-se no caminho certo com o desenvolvimento.
- Agile não é inadequado para grandes organizações. Uma reclamação comum é que a colaboração, um componente fundamental das metodologias Agile, é difícil em grandes equipes. Outra reclamação é que abordagens escalonáveis para Agile introduzem estrutura e métodos que comprometem a flexibilidade. Apesar desses equívocos, é possível dimensionar os princípios Agile com êxito. Para obter informações sobre como superar essas dificuldades, consulte Dimensionar o Agile para grandes equipes.
- Agile não é ineficiente. Para se adaptar às necessidades de mudança dos clientes, os desenvolvedores investem tempo em cada iteração para demonstrar um produto em funcionamento e coletar comentários. É verdade que esses esforços reduzem o tempo que gastam em desenvolvimento. Mas a incorporação de solicitações de cliente no início economiza tempo significativo mais tarde. Quando os recursos permanecem alinhados com a visão do cliente, os desenvolvedores evitam grandes revisões.
- O Agile não é um ajuste ruim para os aplicativos atuais, que geralmente se concentram no streaming de dados. Esses projetos normalmente envolvem mais modelagem de dados e cargas de trabalho ETL (extração-transformação-carga) do que interfaces do usuário. Esse fato torna difícil demonstrar software utilizável em um agendamento consistente e apertado. Mas ajustando 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 em funcionamento a cada poucas semanas, eles podem ter como objetivo entender melhor os dados.
Por que Agile?
Então, por que alguém consideraria uma abordagem Agile? É claro que as regras de engajamento em torno da construção de software mudaram fundamentalmente nos últimos 10-15 anos. Muitas das atividades são semelhantes, mas a paisagem e os ambientes em que 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 para a loja para comprar software de negócios?
- Considere como os comentários são coletados dos clientes sobre produtos. Como uma equipe entendeu 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 eles fornecem. As atualizações anuais não são mais viáveis em relação à concorrência moderna.
Diego Lo Guidice, da Forrester, diz que é melhor em seu blog, Transforming Application Delivery (outubro de 2020).
"Tudo mudou drasticamente. Sustentabilidade, além de verde e limpo, significa que o que construímos hoje tem que ser facilmente e rapidamente alterado 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 adequadamente. Métodos e práticas ágeis não prometem resolver todos os problemas. Mas eles prometem estabelecer uma cultura e um ambiente onde as soluções emergem por meio de colaboração, planejamento e aprendizado contínuos e um desejo de enviar software de alta qualidade com mais frequência.
Próximas etapas
Decidir usar a rota Agile para o desenvolvimento de software pode apresentar algumas oportunidades interessantes para aprimorar o processo de DevOps. Um conjunto chave de considerações se concentra em como o desenvolvimento Agile compara e contrasta com a abordagem atual de uma organização.