Partilhar via


Implementar práticas ágeis que escalem

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

As organizações empresariais adotam práticas ágeis por vários motivos. Entre estas razões destacam-se:

  • Reduza o tempo de colocação no mercado e acelere a entrega de produtos
  • Melhorar a eficácia organizacional para gerenciar prioridades em mudança
  • Melhore a qualidade do software e a previsibilidade de entrega
  • Melhorar a visibilidade do projeto e reduzir o risco do projeto

À medida que sua organização cresce, você quer escalar suas práticas para permanecer ágil e atender às metas em mudança. Para isso, considere estes dois princípios orientadores:

  • Como é o sucesso para você, suas equipes e sua organização? O que mais lhe interessa: Entrega dentro do prazo? Qualidade do produto? Previsibilidade? Satisfação do cliente?
  • Retorno aos primeiros princípios e retorno aos princípios e valores compartilhados enumerados no manifesto ágil Como observado por Ken Schwaber, um dos fundadores do Scrum:
    • "Os valores e princípios escalam, mas as práticas são sensíveis ao contexto."
    • "Mantenha os valores, mantenha os princípios e pense por si mesmo. Uma premissa central do Agile é que as pessoas que fazem o trabalho são as pessoas que melhor podem descobrir como fazê-lo."

Crie ritmo e fluxo

Ao adotar uma cadência compartilhada e um conjunto de comunicações periódicas, você cria um fluxo constante de atividade em toda a organização. As práticas que ajudam a criar ritmo e fluxo dentro de organizações maiores incluem:

  • Cadência compartilhada: Sprints e lançamentos regulares estabelecem o ritmo do negócio. Ter todas as equipas a trabalhar numa cadência partilhada ajuda em todas as atividades de coordenação e colaboração.
  • Comunicações Sprint: Para manter a organização e todas as equipes informadas sobre o progresso e os planos das equipes de recursos, cada equipe de recursos pode compartilhar um resumo de seus resultados de sprint anteriores e planos de sprint atuais por meio de canais digitais como Microsoft Teams, Slack ou e-mail.
  • Demonstrações e vídeos Sprint: crie vídeos rápidos de 2 a 3 minutos que ilustrem os novos recursos que a equipe produz. Compartilhe links para esses vídeos em comunicações sprint ou canais de equipe.
  • Reuniões de exibição: para informar outras equipes e pedir feedback sobre o software em desenvolvimento, as equipes mostram o trabalho que concluem. Conduza essas reuniões em intervalos regulares ao longo do ciclo de vida do projeto e abra-as a todas as partes interessadas.
  • Painéis de métricas de qualidade: para apoiar insights sobre a qualidade do produto e incentivar a manutenção da disciplina em relação aos erros, partilhe periodicamente métricas de qualidade com a organização. Essas métricas podem incluir erros ativos por equipa de funcionalidades, tendências de erros, cobertura de testes e taxa de evasão de defeitos.
  • Reuniões e cerimônias de coordenação: realize reuniões que coordenem equipes em intervalos regulares ou quantas vezes forem necessárias para lidar com metas, dependências e riscos sobrepostos. Considere implementar sessões de planejamento Scrum of Scrums ou Program Increment (PI).

Interaja com os clientes

Envolver os clientes durante todo o ciclo de vida do produto é um princípio ágil primário. Capacite cada equipe para interagir diretamente com os clientes nos conjuntos de recursos que possui.

  • Ciclos de feedback contínuos: Incorpore mecanismos de feedback do cliente. Estes laços podem assumir muitas formas:
    • Plataformas de voz do cliente: torne mais fácil para os clientes darem feedback, adicionarem ideias e votarem em recursos da próxima geração por meio de portais dedicados, fóruns da comunidade ou sistemas de feedback integrados.
    • Feedback no produto: implemente botões de feedback no produto e telemetria para coletar informações sobre a experiência do produto e recursos específicos.
    • Demonstrações de clientes e testes de usuários: agende demonstrações regulares que pedem feedback de seus clientes e conduza sessões de teste de usabilidade para ajudar a moldar produtos da próxima geração e mantê-lo no caminho certo para criar aplicativos que seus clientes desejam consumir.
  • Programas para primeiros adotantes e beta: Desenvolva programas com a ideia de que todas as equipas podem querer participar a certo ponto. Os primeiros usuários obtêm acesso às primeiras versões do software de trabalho e fornecem feedback valioso. Muitas vezes, esses programas funcionam ativando sinalizadores de recursos selecionados para uma lista de primeiros adotantes.
  • Decisões baseadas em dados: encontre maneiras de instrumentar seu produto para obter dados úteis e testar várias hipóteses. Conduza para uma cultura amigável à experiência que celebra a aprendizagem e a tomada de decisão baseada em evidências.

Melhorar a visibilidade do projeto

Quanto mais informações você e suas equipes tiverem sobre o objetivo, a visão e o progresso do trabalho que está sendo feito, melhor você poderá reduzir os riscos e gerenciar dependências.

  • Estrutura da equipe: Não importa o tamanho da sua organização, estruturar sua organização em torno de pequenas equipes de 6 a 9 pessoas escala de forma eficaz. Crie equipes de recursos verticais e autônomas agrupadas em áreas de gerenciamento de portfólio.
  • Estrutura de detalhamento do trabalho: dividir grandes metas, recursos ou requisitos em objetivos menores continua sendo um elemento básico do gerenciamento de projetos. Ao dividir o trabalho em tarefas de tamanho semelhante, as equipes podem fazer melhores estimativas e identificar riscos e dependências.
  • Visualizações e painéis consolidados: use suas ferramentas de acompanhamento on-line para agregar trabalho e obter conhecimento entre as equipes. Crie painéis em tempo real para mostrar progresso, tendências e indicadores-chave de desempenho usando os serviços do Azure DevOps Analytics.
  • Revisões de experiência e design: realize essas reuniões antes do início do desenvolvimento de um recurso para educar a liderança sobre cenários e prioridades, coletar feedback, definir expectativas e revelar quaisquer problemas entre equipes sobre o recurso.

Capacitar uma força de trabalho produtiva

As práticas ágeis específicas que escalam bem e levam a funcionários mais felizes, engajados e produtivos incluem:

  • Liderança incorporada e segurança psicológica: Capacite as equipas e líderes dentro da organização para se auto-organizarem e autogerirem tanto quanto possível. A autonomia da equipa aumenta a agilidade organizacional e a eficácia da equipa. Garantir que as equipes tenham o patrocínio corporativo necessário para ter sucesso e criar ambientes onde os membros da equipe se sintam seguros para expressar ideias e preocupações.
  • Stand-ups diários: as reuniões do Scrum ajudam a manter as equipes focadas no que precisam fazer diariamente para maximizar sua capacidade de cumprir seus compromissos de sprint. À medida que as organizações crescem, elas devem considerar o escalonamento dessas reuniões para que a participação entre equipes possa ocorrer conforme necessário.
  • Scrum of scrums: Representantes de diferentes equipes ágeis se reúnem regularmente para relatar o trabalho concluído, os próximos passos e os problemas ou bloqueios que ocorrem dentro de suas equipes.
  • Comunicação da equipe e compartilhamento de conhecimento: Fornecer e incentivar as equipes a compartilhar suas práticas e orientações por meio de redes corporativas. As ferramentas comuns incluem wikis de equipe, Microsoft Teams, Confluence ou wikis do Azure DevOps.
  • Colaboração e qualidade de código: Incentive comunicações e colaboração informais entre equipes. Institucionalizar práticas como revisões de código, revisões de design, programação em pares e programação mob. Estas práticas não só aumentam a colaboração em equipa, mas ajudam a desenvolver competências individuais e empresariais globais.

Melhorar a cultura organizacional

Você melhora a eficácia organizacional atendendo à cultura que deseja construir. As mudanças de cultura ocorrem quando indivíduos, equipes e organizações adotam uma ou mais práticas de melhoria contínua. Várias práticas ágeis escaláveis incluem:

  • Retrospetivas: Faça perguntas como: "O que correu bem?", "O que devemos fazer diferente?" e "O que devemos deixar de fazer?" para ajudar as equipas a refletir sobre como podem melhorar os seus processos e práticas. As retrospetivas ajudam as equipas a revelar o que funciona bem e o que precisa de ser melhorado. Você pode realizar retrospetivas a qualquer hora e em qualquer lugar. No entanto, institucionalizar certas retrospetivas em uma cadência regular ajuda a estabelecer práticas de melhoria contínua. Por exemplo:

    • As retrospetivas Sprint ajudam as equipas a identificar áreas a melhorar a uma cadência regular.

    • As retrospetivas de lançamento ajudam as organizações a identificar áreas para melhorar as comunicações e as práticas internas e impulsionar melhorias para o próximo lançamento.

    • Revisões operacionais: normalmente realizadas mensalmente e incluem representantes de todo um fluxo de valor. Abrangendo um portfólio de projetos e outras iniciativas e usando dados objetivos e quantitativos, projete essas retrospetivas para provocar discussões sobre as dinâmicas que afetam o desempenho entre as equipes.

      Consulte o Wiki de Recursos Retrospetivos Ágeis para ideias, dicas e ferramentas para planejar e conduzir retrospetivas. Consulte também a extensão Retrospetivas do Marketplace.

  • Quadro de acompanhamento de melhorias: Boas ideias para melhorar processos podem surgir de qualquer pessoa a qualquer momento. Capturar essas ideias para discutir e decidir como agir sobre elas rapidamente apoia os esforços de melhoria de processos.

    Um quadro branco fornece um meio fácil e visual para capturar ideias. Além disso, você pode criar uma equipe de acompanhamento de melhorias e capturar ideias que você acompanha em uma placa eletrônica.

  • Institucionalizar a partilha e a aprendizagem: Partilhar as melhores práticas e comunicar ideias ajuda todas as equipas dentro de uma organização a crescer e a melhorar. O desenvolvimento de uma cultura de aprendizagem apoia esta e outras atividades de melhoria contínua. Considere estas ideias:

    • Wikis internos e bases de conhecimento

    • Comunidades de prática e guildas

    • Semanas de hackathon ou tempo de inovação

    • Equipes internas de DevOps e Agile coaching para apoiar as equipes que adotam essas práticas

    • Sessões regulares de almoço e aprendizagem

    • Conferências internas e palestras tecnológicas

      O Jogo da Cultura fornece um bom recurso para os gerentes ágeis ajudarem as equipes a adotarem práticas ágeis e compartilharem as melhores práticas.

  • Comunidades de prática: Suporte a disciplinas comuns internas (por exemplo, engenheiros de confiabilidade de site, arquitetos de software, designers de UX, cientistas de dados e especialistas em segurança)

Software utilizado

"Entregue software de trabalho com frequência, de algumas semanas a alguns meses, com preferência para o período de tempo mais curto."
"O software de trabalho é a principal medida do progresso."
- Manifesto ágil

À medida que a quantidade de software, recursos e complexidade aumenta, você precisa adotar práticas que o ajudem a produzir soluções consumíveis.

  • Sinalizadores de recursos e entrega progressiva: use sinalizadores de recursos para habilitar ou desabilitar o acesso a diferentes recursos com segurança. Suporte a ativação de funcionalidades para que os primeiros utilizadores obtenham feedback funcional. Implemente padrões de entrega progressivos, como lançamentos canários e implantações azul-verde.
  • Ciclos de lançamento e entrega contínua: proporciona outro tipo de cadência para entregar uma ou mais funcionalidades. As equipas de funcionalidades entendem o cronograma previamente planeado de lançar novas funcionalidades e planeiam de acordo. Os trens de liberação podem corresponder à mesma cadência de sprint estabelecida para a organização ou ocorrer em uma cadência diferente. Consulte Scaled Agile Framework para saber como configurar sprints e liberar trens.
  • Integração contínua e implantação contínua (CI/CD): adote processos automatizados que eliminam o trabalho manual e automatizam o fluxo de software por meio de ciclos de teste, compilação e implantação. Implemente estratégias de teste abrangentes, incluindo testes de unidade, testes de integração e testes de aceitação automatizados.
  • Fonte interna e desenvolvimento aberto: Traga o valor e o ethos desenvolvidos na comunidade de Software de Código Aberto para suas equipes internas de desenvolvimento. Incentive o compartilhamento de código, a documentação e as práticas de desenvolvimento colaborativo entre as equipes.
  • Práticas nativas da nuvem: adote a conteinerização, arquiteturas de microsserviços e padrões de implantação nativos da nuvem para melhorar a escalabilidade e a capacidade de manutenção.

Práticas e considerações modernas

À medida que as práticas ágeis evoluíram, considere estas outras abordagens modernas:

  • Integração com DevSecOps: integre práticas de segurança durante todo o ciclo de vida do desenvolvimento, em vez de tratar a segurança como uma preocupação separada.
  • Engenharia de confiabilidade do local (SRE): Adote práticas SRE para melhorar a confiabilidade do sistema e reduzir a sobrecarga operacional.
  • Mapeamento do fluxo de valor: mapeie e otimize o fluxo de valor desde a ideia até a entrega ao cliente.
  • OKRs (Objetives and Key Results): Use OKRs para alinhar as equipes em torno de resultados mensuráveis em vez de apenas saídas.
  • Design thinking: Incorpore abordagens de design centradas no ser humano para entender melhor as necessidades do cliente.

Junto com as práticas acima, você pode encontrar mais orientações sobre o dimensionamento de suas ferramentas Agile nos seguintes artigos:

Recursos da indústria

Práticas que não são dimensionadas

  • Estimativa de grandes iniciativas: Parte dos métodos de projeto em cascata envolveu a estimativa de recursos e cronogramas. Quanto maiores forem as iniciativas, menor será a probabilidade de estas estimativas fornecerem qualquer valor. À medida que os projetos crescem, riscos e imprevistos e impedimentos podem surgir, invalidando muitas estimativas.
  • Velocidade como uma métrica entre equipes: Embora a velocidade da equipe possa fornecer uma métrica útil para obter informações sobre quanto trabalho cada equipe pode concluir durante um ciclo de sprint, você não pode adicionar velocidades de equipe para obter métricas significativas ou úteis. Além disso, usar a velocidade obtida de muitas equipes para concluir de forma confiável previsões de longo alcance é problemático. As equipas podem variar na forma como estimam o seu trabalho, e essas variações aumentam ao longo do tempo.
  • Soluções prescritivas de cima para baixo: um tamanho único não serve para todos, e uma solução normalmente não se encaixa em todas as equipes. Apoiar a autonomia da equipe significa permitir que as equipes encontrem suas próprias soluções, fornecendo as estruturas e o suporte necessários.
  • Cargo cult Agile: Simplesmente adotar cerimônias ágeis sem entender seu propósito ou adaptá-las ao seu contexto muitas vezes leva a implementações ineficazes.