É difícil acreditar que a metodologia ágil de desenvolvimento de software completou oficialmente 20 anos no ano passado. O que antes era uma prática remota para startups que colaboravam em espaços co-localizados com adesivos e quadros brancos agora é um conjunto sofisticado, escalável e amplamente utilizado de processos e ferramentas ágeis de desenvolvimento de software.
O que é metodologia ágil de desenvolvimento de software
Há uma rica história por trás do desenvolvimento ágil de software e por que as organizações usam métodos ágeis, como scrum e kanban, para modernizar aplicativos, melhorar a experiência do cliente e implementar transformações digitais. Há também um enorme conhecimento em torno dessas metodologias e suas interseções com design thinking, gerenciamento de produtos e devops. Hoje em dia, poucas pessoas perguntam: “O que é ágil?” Mais pessoas estão buscando orientação sobre como alinhar suas equipes com as melhores práticas ágeis.
Este artigo é uma introdução sobre metodologias ágeis, começando com pessoas, equipes, processos e ferramentas. Você também aprenderá como o Agile se conecta ao Devops e sobre as práticas recomendadas que ajudam as organizações a cultivar uma cultura ágil e a fornecer software melhor.
Funções na metodologia ágil
Um processo ágil de desenvolvimento de software sempre começa definindo os usuários de um produto específico e documentando uma declaração de visão para o escopo dos problemas, oportunidades e valores a serem abordados. O proprietário do produto captura essa visão e trabalha com uma equipe (ou equipes) multidisciplinar para concretizá-la. Várias funções estão envolvidas em um processo de desenvolvimento ágil.
Usuários
Um processo ágil sempre começa pensando no usuário ou cliente. Hoje, muitas vezes definimos personas do usuário para ilustrar diferentes funções de fluxo de trabalho ou tipos de necessidades e comportamentos do cliente.
Proprietário do produto
O proprietário do produto tem a tarefa de ser a voz do cliente, incluindo quaisquer partes interessadas internas. Essa pessoa destila insights, ideias e feedback para criar uma visão de produto. As visões de produto costumam ser curtas e diretas, mas mesmo assim traçam um quadro de quem é o cliente ou usuário, quais valores estão sendo abordados e uma estratégia para abordá-los. Imagino que a visão original do Google fosse algo como: “Vamos tornar mais fácil para qualquer pessoa com acesso à Internet encontrar sites e páginas relevantes com uma interface simples baseada em palavras-chave e um algoritmo que classifica fontes confiáveis em posições mais altas nos resultados de pesquisa”.
Qualquer que seja a visão, o proprietário do produto é responsável por defini-la e depois trabalhar com a equipe de desenvolvimento para torná-la realidade.
Para trabalhar com a equipe de desenvolvimento, o proprietário do produto divide a visão do produto em uma série de histórias de usuários. Cada história de usuário deve identificar os usuários-alvo, seus desafios, por que a solução é necessária e quais restrições e critérios de aceitação definem a solução. O proprietário do produto prioriza essas histórias de usuários e as analisa com a equipe para garantir que eles tenham um entendimento compartilhado do que está sendo solicitado a eles.
Equipe de desenvolvimento de software
As equipes devem ser multidisciplinares e incluir um grupo diversificado com as habilidades e experiências necessárias para realizar o trabalho. Além dos desenvolvedores, as equipes de desenvolvimento ágil devem incluir engenheiros de automação de garantia de qualidade, engenheiros de dados, designers de experiência do usuário (UX) e outras funções, dependendo do tipo de projeto de software.
O Agile concentra as equipes no fornecimento de software funcional, portanto, elas devem concluir aplicativos funcionais de ponta a ponta, integrações e outros produtos que impactam os usuários, não apenas os componentes técnicos. Os membros da equipe devem estar alinhados sobre o que estão construindo, quem está fazendo o quê e como o software será desenvolvido.
As equipes ágeis geralmente têm outras funções atribuídas, incluindo as seguintes:
- Líderes de tecnologia ou equipe faça parceria com o proprietário do produto em arquitetura, critérios de aceitação não funcionais, sequenciamento, dependências e outras considerações de tecnologia e segurança. Os líderes técnicos têm amplas responsabilidades que podem incluir estimar histórias e planejar detalhes de implementação com a equipe.
- Mestres Scrum frequentemente treinam novas equipes em processos, responsabilidades e ferramentas ágeis. As responsabilidades do Scrum Master podem incluir a resolução de bloqueios que impedem o progresso, a revisão de abordagens para melhorar a velocidade da equipe ágil e a preparação de pendências.
- Analistas de negócios fazer parceria com o proprietário do produto. As responsabilidades dos analistas geralmente incluem a criação de wireframes, a documentação de histórias de usuários e a revisão dos resultados dos testes. Os analistas de negócios são especialmente úteis quando as equipes de desenvolvimento de software estão desenvolvendo microsserviços e outros produtos técnicos, e quando o analista de negócios tem mais conhecimento em desenvolvimento de software do que o proprietário do produto.
Cabe aos líderes organizacionais decidir como formar equipes ágeis e qual o tamanho delas. Muitos seguem a prática recomendada de Jeff Bezos de construir duas equipes ágeis do tamanho de uma pizza para maximizar a colaboração entre colegas de equipe.
O que são scrum e kanban
Uma vez que uma visão de produto e uma equipe (ou equipes) adotem princípios ágeis, começando pelos identificados no manifesto ágil, a organização deve selecionar uma metodologia de processo. Scrum e Kanban são os principais processos ágeis.
Algumas organizações começam com kanban porque é relativamente fácil de explicar e implementar. Kanban funciona como um processo de fan-in e fan-out, onde a equipe extrai histórias de usuários de um quadro de admissão e as canaliza por meio de um fluxo de trabalho até que sejam marcadas como concluídas.
Mas muitas organizações implementam o scrum, que organiza o trabalho em cadências chamadas corrida, geralmente durando uma ou duas semanas. O proprietário do produto escreve os requisitos como histórias de usuário e, em seguida, os prioriza em um backlog com base em seu valor comercial. A equipe analisa o backlog e se compromete com as principais histórias de usuários que podem concluir durante o sprint.
Scrum inclui diversas reuniões padrão (às vezes chamadas cerimônias de scrum ou rituais de scrum) para ajudar as equipes a se comprometerem com as prioridades do sprint, concluir o trabalho durante o sprint e encerrar cada sprint com sucesso. Essas reuniões geralmente incluem alguns elementos comuns:
- Planejamento de sprint é onde o proprietário do produto compartilha prioridades e a equipe decide quanto trabalho pode ser concluído durante o sprint.
- Levantamento diário as reuniões ajudam as equipes a discutir o status das histórias de usuários; colegas de equipe compartilham suas metas diárias e qualquer um pode escalar bloqueios que impeçam o progresso da equipe.
- Avaliações de sprints são reuniões de demonstração no final do sprint, onde a funcionalidade é mostrada ao proprietário do produto para obter aceitação do trabalho concluído.
- Reuniões retrospectivas são onde a equipe discute o que deu certo e o que precisa ser melhorado em seus processos ágeis e de desenvolvimento de software.
Ressalta-se que essas práticas são adaptáveis a modelos ágeis de trabalho híbridos.
Scrum melhora o desempenho de uma equipe, capacitando-a a se comprometer com uma quantidade viável de trabalho, em vez de ter um produto, programa ou gerente de projeto especificando o cronograma e o escopo esperados. A história do usuário forma um microcontrato que separa as necessidades do negócio, os critérios de aceitação (ou o que as equipes ágeis às vezes chamam de definição de feito) e, em seguida, permite que as equipes se auto-organizem como implementar. As revisões do sprint são um tipo de ciclo de feedback, e os proprietários do produto são incentivados a realinhar as prioridades e redefinir os requisitos antes de cada sprint. As retrospectivas do Sprint ajudam a equipe a melhorar a colaboração e iniciar melhorias nos processos.
Melhores práticas técnicas para organizações ágeis
Scrum constitui o processo básico para colaboração, planejamento e entrega de equipes, mas não se refere às melhores práticas técnicas, aos padrões organizacionais ou à definição e condução de culturas ágeis.
Hoje, muitas práticas recomendadas técnicas incluem a definição do ciclo de vida de desenvolvimento de software (SDLC) e a implementação de processos Devops. O SDLC fornece diretrizes sobre como escrever código, gerenciar ativos de software e desenvolver padrões técnicos. Automações Devops como CI/CD, Infraestrutura como Código (IaC) e testes contínuos permitem um caminho mais confiável para a produção. Outras práticas, incluindo práticas de segurança shift-left, microsserviços observáveis, sinalização de recursos, lançamentos canário e AIOps, fornecem um modelo de entrega mais flexível e confiável.
A combinação de capacitação de equipes auto-organizadas, metodologias ágeis, automações Devops e modernização para arquiteturas em nuvem ajuda as organizações de tecnologia a evoluir sua cultura. Ciclos de desenvolvimento mais longos são substituídos por modelos de entrega contínua que permitem o lançamento de recursos e melhorias com mais rapidez. As automações abordam muitas lacunas entre desenvolvedores que buscam autonomia e velocidade com responsabilidades operacionais relacionadas a desempenho, confiabilidade e segurança. A combinação dessas práticas ajuda as equipes ágeis a tomar decisões de arquitetura mais inteligentes, impulsionar a experimentação, tornar-se mais orientadas a dados e corrigir erros rapidamente.
Outras práticas, como a integração do design thinking com o scrum, a implementação de fluxos de valor, o desenvolvimento de práticas de gestão de produtos e a implementação de planejamento contínuo, ajudam as equipes ágeis a colaborar com clientes, usuários finais e partes interessadas nos negócios.
As equipes ágeis normalmente implantam ferramentas como Jira Software, Azure DevOps e Digital.ai para colaborar em backlogs ágeis e quadros Kanban. Essas ferramentas ajudam as equipes ágeis a priorizar o trabalho, capturar requisitos, completar histórias de usuários, revisar relatórios de burndown e automatizar fluxos de trabalho usando controle de versão, CI/CD e outras ferramentas.
Estruturas e guias conceituais como SAFe, Enterprise Scrum, LeSS (Large-Scale Scrum), o modelo Spotify e StarCIO Agile podem ajudar a impulsionar princípios, padrões e práticas ágeis em muitas equipes colaboradoras.
A maioria dos coaches recomenda iniciar práticas ágeis com objetivos de negócios bem definidos, algumas equipes selecionadas e ferramentas limitadas e escolhidas de maneira ideal. O desafio para os líderes das organizações é encontrar o equilíbrio certo entre diversas equipes, princípios de auto-organização, padrões, ferramentas e integrações que permitam às suas organizações construir, ampliar, dimensionar e manter capacidades tecnológicas.