O que é o desenvolvimento Agile?
O desenvolvimento Agile é um termo usado para descrever o desenvolvimento iterativo de software. O desenvolvimento iterativo de software encurta o ciclo de vida do DevOps ao concluir o trabalho em pequenos incrementos, geralmente chamados de sprints. Os sprints normalmente duram de uma a quatro semanas. O desenvolvimento Agile costuma se diferenciar do desenvolvimento tradicional ou em cascata, que planeja projetos maiores antecipadamente e os conclui de acordo com o plano.
O fornecimento de código de qualidade de produção a cada sprint exige que a equipe de desenvolvimento Agile seja responsável por um ritmo acelerado. Todas as verificações de codificação, teste e qualidade precisam ser feitas a cada sprint. A menos que uma equipe esteja devidamente configurada, os resultados podem ficar aquém das expectativas. Embora essas decepções ofereçam ótimas oportunidades de aprendizado, é interessante aprender algumas lições importantes antes de começar.
Este artigo apresenta alguns fatores-chave de sucesso para equipes de desenvolvimento Agile:
- Refinamento diligente da lista de pendências
- Integração antecipada e frequente
- Minimização da dívida técnica
Refinamento diligente da lista de pendências
ma equipe de desenvolvimento Agile livra-se de uma lista de pendências de requisitos, que costumam ser chamada de histórias de usuários. A lista de pendências é priorizada com as histórias de usuários mais importantes no início. O proprietário do produto tem a lista de pendências e adiciona, altera e estabelece novas prioridades para as histórias de usuários de acordo com as necessidades do cliente.
Um dos maiores problemas para a produtividade de uma equipe Agile é uma lista de pendências definida de maneira inadequada. Não se pode esperar que uma equipe forneça um software de alta qualidade consistentemente a cada sprint, a menos que ela tenha requisitos claramente definidos.
O trabalho do proprietário do produto é garantir que, a cada sprint, os engenheiros tenham histórias de usuário claramente definidas para trabalhar. As histórias de usuários no topo da lista de pendências devem estar sempre prontas para a equipe começar. Essa noção é chamada de refinamento de lista de pendências. Manter uma lista de pendências pronta para uma equipe de desenvolvimento Agile requer esforço e disciplina. Felizmente, o investimento vale a pena.
Ao refinar uma lista de pendências, lembre-se das principais considerações a seguir.
Refinar histórias de usuários geralmente é uma atividade de longo prazo. Interfaces de usuário elegantes, designs de tela belíssimos e soluções que encantam o cliente levam tempo e energia para criar. Os proprietários de produtos diligentes refinam as histórias dos usuários com dois a três sprints com antecedência. Eles respondem por iterações de design e avaliações de clientes. Eles trabalham para garantir que cada história de usuário seja algo que a equipe Agile tenha orgulho de entregar ao cliente.
Uma história de usuário não está refinada a menos que a equipe diga que está. A equipe precisa revisar a história do usuário e concordar que ela está pronta para ser usada. Se uma equipe não vir a história do usuário até o primeiro dia de um sprint, é provável que ocorram problemas.
As histórias de usuários mais abaixo na lista de pendências podem permanecer ambíguas. Não perca tempo refinando itens de prioridade mais baixa. Concentre-se no topo da lista de pendências.
Integrar antecipadamente e com frequência
A integração contínua e a entrega contínua (CI/CD) preparam sua equipe para o ritmo acelerado do desenvolvimento Agile. Assim que possível, automatize os pipelines de compilação, teste e implantação. Configure essa automação como uma das primeiras tarefas que sua equipe atacará quando você iniciar um novo projeto.
Com a automação, a equipe evita processos de implantação manual, que são propensos a erros e demorados. Como as equipes fazem lançamento a cada sprint, não há tempo para fazer essas tarefas manualmente.
O CI/CD também influencia sua arquitetura de software. Ele garante que você forneça software construível e implantável. Quando as equipes implementam um recurso difícil de implantar, elas ficam cientes imediatamente se a compilação e as implantações falharem. O CI/CD força uma equipe a corrigir problemas de implantação à medida que eles ocorrem. Dessa forma, o produto está sempre pronto para ser enviado.
Existem algumas atividades-chave de CI/CD que são extremamente importantes para um desenvolvimento Agile eficaz.
Teste de unidade. Os testes de unidade são a primeira defesa contra o erro humano. Considere os testes de unidade como parte da codificação. Verifique os testes com o código. Faça do teste de unidade uma parte de cada compilação. Testes de unidade com falha significam uma compilação com falha.
Automação de compilação. O sistema de compilação deve extrair automaticamente o código e os testes diretamente do controle do código-fonte quando as compilações são executadas.
Políticas de branch e compilação. Configure políticas de ramificação e compilação para criar automaticamente à medida que a equipe faz check-in do código em um branch específico.
Fazer implantação em um ambiente. Configure um pipeline de lançamento que implante automaticamente projetos criados em um ambiente que imita a produção.
Minimizar a dívida técnica
Com as finanças pessoais, é mais fácil evitar dívidas do que pagá-las. A mesma regra se aplica com a dívida técnica. A dívida técnica inclui qualquer coisa que a equipe precisa resolver por causa de atalhos que foram tomados anteriormente. Por exemplo, se o seu cronograma está apertado, você pode sacrificar a qualidade para cumprir um prazo. A dívida técnica é o preço que você paga depois, quando você tem que refatorar o código para compensar essa falta de qualidade. Os exemplos incluem correções para resolver problemas de design, bugs, problemas de desempenho, problemas operacionais, problemas de acessibilidade e outros.
Manter-se em dia com a dívida técnica exige coragem. Há muitas pressões para atrasar o retrabalho do código. É satisfatório trabalhar em recursos e ignorar dívidas. Infelizmente, alguém precisa pagar a dívida técnica mais cedo ou mais tarde. Assim como a dívida financeira, a dívida técnica se torna mais difícil de pagar quanto mais o tempo passa. Um proprietário de produto inteligente trabalha com sua equipe para garantir que haja tempo para pagar a dívida técnica a cada sprint. Equilibrar a redução da dívida técnica com o desenvolvimento de recursos é uma tarefa difícil. Felizmente, existem algumas técnicas simples para criar equipes produtivas e focadas no cliente.
Seja sempre Agile
Ser Agile significa aprender com as experiências e melhorar continuamente. O desenvolvimento Agile fornece mais ciclos de aprendizado do que o planejamento de projeto tradicional devido aos ciclos de processo mais apertados. Cada sprint fornece algo novo para a equipe aprender.
Por exemplo:
- Uma equipe fornece valor ao cliente, recebe comentários e modifica a lista de pendências com base neles.
- Ela descobre que testes importantes estão faltando em suas compilações automatizadas. Ela inclui trabalho em seu próximo sprint para resolver essa questão.
- Ela descobre que certos recursos têm um desempenho ruim na produção, então fazem planos para melhorar o desempenho.
- Alguém da equipe ouve falar de uma nova prática. A equipe decide experimentá-la por alguns sprints.
As equipes que estão apenas começando com o desenvolvimento Agile devem esperar mais oportunidades de aprendizado. Elas são uma parte inestimável do processo, porque levam ao crescimento e à melhoria.
Próximas etapas
Há muitas maneiras de estabelecer um processo de desenvolvimento Agile adequado para uma equipe. O Azure DevOps fornece vários modelos de processo. As equipes que estão procurando estruturas de linha de base diferentes para seu planejamento podem usar esses modelos como pontos de partida. Para obter informações sobre como selecionar um modelo de processo que melhor se adapte à cultura e às metas de uma equipe, consulte Escolher um fluxo de processo ou modelo de processo para trabalhar no Azure Boards.
À medida que as organizações crescem, manter a disciplina pode ser um desafio. Saiba mais sobre como escalar o Agile para grandes equipes.