Partilhar via


O que é desenvolvimento ágil?

Desenvolvimento ágil é 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 incrementos curtos, geralmente chamados sprints. Os sprints têm normalmente uma a quatro semanas de duração. O desenvolvimento ágil é muitas vezes contrastado com o desenvolvimento tradicional ou em cascata, que planeja projetos maiores antecipadamente e os completa de acordo com o plano.

Entregar código de qualidade de produção a cada sprint exige que a equipe de desenvolvimento Agile dê conta de um ritmo acelerado. Toda a codificação, testes e verificação de qualidade devem ser feitos a cada sprint. A menos que uma equipe esteja adequadamente configurada, os resultados podem ficar aquém das expectativas. Embora essas deceções ofereçam grandes oportunidades de aprendizado, é útil aprender algumas lições importantes antes de começar.

Este artigo apresenta alguns fatores-chave de sucesso para as equipes de desenvolvimento Agile:

  • Refinamento diligente da lista de pendências
  • Integração precoce e frequente
  • Minimização da dívida técnica

Refinamento diligente da lista de pendências

Uma equipe de desenvolvimento ágil trabalha com uma lista de pendências de requisitos, que geralmente são chamados de histórias de usuário. A lista de pendências é priorizada, com as histórias de usuários mais importantes no topo. O proprietário do produto é o proprietário da lista de pendências e adiciona, altera e reprioriza histórias de usuários com base nas necessidades do cliente.

Imagem de um quadro Kanban que contém várias colunas. Em cada coluna, alguns cartões são visíveis.

Um dos maiores obstáculos à produtividade de uma equipe ágil é um backlog mal definido. Não se pode esperar que uma equipe forneça consistentemente software de alta qualidade a cada sprint, a menos que 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 na parte superior do backlog devem estar sempre prontas para a equipa começar a trabalhar nelas. Essa noção é chamada de refinamento de backlog. Manter uma lista de pendências pronta para uma equipe de desenvolvimento Agile requer esforço e disciplina. Felizmente, vale a pena o investimento.

Ao refinar uma lista de pendências, lembre-se das seguintes considerações principais.

  1. Refinar histórias de utilizadores geralmente é uma atividade demorada. Interfaces de usuário elegantes, belos designs de tela e soluções que encantam o cliente levam tempo e energia para criar. Proprietários de produtos diligentes refinam histórias de utilizadores detalhadas com duas a três sprints de antecedência. Eles são responsáveis 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.

  2. Uma história de usuário não é refinada, a menos que a equipe diga que é. A equipe precisa revisar a história do usuário e concordar que ela está pronta para trabalhar. Se uma equipe não vir a história do usuário até o primeiro dia de um sprint, é provável que surjam problemas.

  3. 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.

Integre cedo e com frequência

A integração contínua e a entrega contínua (CI/CD) configuram sua equipe para o ritmo acelerado do desenvolvimento ágil. 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 enfrenta quando você inicia um novo projeto.

Com a automação, a equipe evita processos de implantação manual lentos, propensos a erros e demorados. Como as equipes liberam todos os sprints, não há tempo para fazer essas tarefas manualmente.

O CI/CD também influencia a arquitetura do seu software. Ele garante que você forneça software edificá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. O produto está sempre pronto para ser enviado.

Gráfico de barras abstrato que mostra o status das compilações de CI ao longo do tempo. A maioria das construções foi bem-sucedida. Apenas alguns falharam.

Existem algumas atividades-chave de CI/CD que são extremamente importantes para um desenvolvimento ágil eficaz.

  1. Testes unitários. Os testes unitários são a primeira defesa contra o erro humano. Considere os testes de unidade uma 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.

  2. Automação de construçã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.

  3. Ramificar e construir políticas. Configure políticas de ramificação e compilação para compilar automaticamente quando a equipa introduz código numa ramificação específica.

  4. Implante em um ambiente. Configure um pipeline de liberação que implanta automaticamente projetos criados em um ambiente que imita a produção.

Minimizar o endividamento técnico

Com as finanças pessoais, é mais fácil evitar dívidas do que sair delas. A mesma regra se aplica à dívida técnica. A dívida técnica inclui tudo o que a equipa deve resolver devido a atalhos que foram tomados anteriormente. Por exemplo, se você está em um cronograma apertado, você pode sacrificar a qualidade para cumprir um prazo. 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 problemas.

Gerir a dívida técnica exige coragem. Há muitas pressões para atrasar o retrabalho do código. É bom trabalhar em funcionalidades e ignorar a dívida técnica. Infelizmente, alguém tem de pagar a dívida técnica mais cedo ou mais tarde. Tal como a dívida financeira, a dívida técnica torna-se mais difícil de pagar quanto mais tempo existir. 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 funcionalidades é uma tarefa difícil. Felizmente, existem algumas técnicas simples para criar equipes produtivas e focadas no cliente.

Seja sempre ágil

Ser Ágil significa aprender com a experiência e melhorar continuamente. O desenvolvimento ágil fornece mais ciclos de aprendizagem do que o planejamento de projeto tradicional devido aos ciclos de processo mais rígidos. Cada sprint proporciona algo novo para a equipe aprender.

Por exemplo:

  • Uma equipe entrega valor ao cliente, recebe feedback e, em seguida, modifica sua lista de pendências com base nesse feedback.
  • Eles aprendem que suas compilações automatizadas estão faltando testes-chave. Eles incluem trabalho em seu próximo sprint para resolver esse problema.
  • Eles acham que certos recursos têm um desempenho ruim na produção, então eles fazem planos para melhorar o desempenho.
  • Alguém da equipa ouve falar de uma nova prática. A equipa decide experimentar durante alguns sprints.

As equipes que estão apenas começando com o desenvolvimento ágil devem esperar mais oportunidades de aprendizado. Eles são uma parte inestimável do processo porque levam ao crescimento e à melhoria.

Próximos passos

Há muitas maneiras de se estabelecer em um processo de desenvolvimento ágil certo 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 aos objetivos de uma equipe, consulte Escolher um fluxo de processo ou modelo de processo para trabalhar nos Painéis do Azure.

À medida que as organizações crescem, pode ser um desafio manter-se disciplinado. Saiba mais sobre como dimensionar o Agile para grandes equipes.