Desenvolvimento Ágil de Software: O Que é e o que Você Ganha Com Isso
Agile 101
O que é Desenvolvimento Ágil de Software?
Uma Breve Visão Geral
-
Baseado em valor: entregue valor ao seu cliente.
-
Colocando as pessoas e suas interações em primeiro lugar: trabalhe de maneira colaborativa e orientada para o cliente, para acabar com clientes, usuários e equipe de desenvolvimento felizes.
-
A confiança é essencial. Não apenas dentro de uma equipe. A gerência precisa confiar que todos querem fazer um bom trabalho e deixar que a equipe administre a si mesma para obter resultados.
-
A comunicação em todos os níveis da equipe é vital. O feedback regular dos clientes e das partes interessadas mantém a equipe no caminho certo.
-
Trabalhar com software o mais rápido possível significa entregar valor desde o início.
-
Trabalho incremental e iterativo significa que você dá pequenos passos adiante e corrige quando o cliente percebe que uma mudança é necessária — geralmente graças a ver o produto em crescimento em ação.
-
Resultados rápidos: dividir o produto final em pedaços e trabalhar nesses pedaços significa que toda a equipe consegue ver resultados de trabalho dentro das primeiras semanas e corta a descoberta de que você falhou alguns anos depois.
Breve História
Nos anos 80 e 90, o método predominante de gerenciamento de projetos era o modelo de cascata. Amplamente utilizado em projetos de construção e fabricação, exigia muita papelada, um projeto fixo e a liberação do produto final somente no final da fase de construção.
Como o desenvolvimento de software é uma atividade complexa ao invés de complicada como a construção e a fabricação, muitos projetos de software foram além do tempo e do orçamento e não conseguiram satisfazer as intenções e exigências do cliente.
Um exemplo principal foi o projeto de TI do Serviço Nacional de Saúde do Reino Unido, que custou mais de £10 bilhões e não funcionou.
Algo teve que mudar e várias abordagens diferentes surgiram no final dos anos 80 e 90.
Tais como prototipagem, Método de Desenvolvimento de Software (ou Sistema) Dinâmico, Scrum, Programação Extrema (XP).
Então, em 2001, um grupo de 17 desenvolvedores de software argumentativos, mas bem sucedidos, reuniu-se para discutir melhores métodos de desenvolvimento de software.
Eles concordaram que o desenvolvimento de software precisava ser adaptável à mudança, orientado ao cliente e orientado ao valor. Eles resumiram suas discussões em um manifesto, listando 4 valores e 12 princípios essenciais para o sucesso do desenvolvimento de software: o Manifesto Ágil.
Até hoje, o manifesto ainda é o padrão a ser seguido.
Os 4 Valores Ágeis são:
-
Indivíduos e interações acima de processos e ferramentas
-
Software funcionando acima de documentação abrangente
-
Colaboração do cliente acima da negociação do contrato
-
Respondendo à mudança acima de seguir um plano.
Os 12 princípios são diretrizes de senso comum sobre o que parece ser o cumprimento de um ou mais destes valores. Você pode ler todos eles neste infográfico.
Como Funciona?
Tudo começa com o Mindset Agile e a promessa que ele mantém.
O Mindset
Agile é a escolha de agir de acordo com valores e princípios de bom senso que forneçam valor de uma forma sustentável para todos os envolvidos.
O CEO Anthony Fox-Davies o explicou como procurar caminhos para contornar os obstáculos, buscando soluções que ofereçam excelente qualidade.
Para fazer isso, é preciso fomentar a colaboração e interações significativas. E isso exige foco no ser humano e fomentar respeito e confiança para melhorar a vida de todos: incluindo o cliente, o usuário final e os desenvolvedores.
Como Aristóteles já dizia:
“O prazer no trabalho coloca a perfeição na obra”.
A Promessa do Agile: Soluções para Problemas
Aplicar essa mentalidade ao trabalho em engenharia de software promete entregar resultados como estes:
-
Melhor alinhamento com os objetivos comerciais (do cliente)
-
Maior produtividade
-
Maior qualidade
-
Redução do tempo de colocação no mercado
-
Melhoria da satisfação do cliente/stakeholder
-
Maior satisfação no trabalho para os desenvolvedores
-
Funcionários mais engajados
-
Melhores resultados para o usuário final
Tanto os clientes quanto os desenvolvedores adoram!
Chegar lá requer esforço intencional e nem sempre é fácil de se manter.
A Visão Mais Ágil
Extensão para DevOps e DevSecOps
O que é necessário para operar um produto de software é muitas vezes negligenciado durante o desenvolvimento, tornando desajeitado manter o software funcionando sem problemas para seus usuários.
DevOps — Desenvolvimento e Operações — procura resolver isso colocando desenvolvedores e operadores juntos em uma equipe. Ao trabalhar em colaboração, eles podem reduzir o tempo de implementação, corrigir bugs mais rapidamente e prolongar a vida útil do produto.
Além disso, o DevSecOps adiciona especialistas em segurança a uma equipe para manter a segurança de seu produto ao nível das medidas de segurança explícitas e ajudar os desenvolvedores a evitar construções de software que poderiam ser exploradas por hackers.
Gerenciamento Ágil de Projetos
Culturas Corporativas Agile
Ciclo de Vida do Desenvolvimento Ágil de Software
O Ciclo de Vida do Desenvolvimento Ágil de Software começa com um cliente que quer resolver um problema com um novo software.
A equipe ou equipes que desenvolverão o software colaborarão com os profissionais de negócios do cliente para descobrir o que os usuários finais precisam do software para fazer.
Juntos, eles mapeiam e priorizam as funcionalidades necessárias do produto e decidem sobre as funcionalidades que constituirão um produto mínimo viável (MVP) — as funcionalidades essenciais para a entrega no primeiro lançamento.
Depois disso, o desenvolvimento é iterativo e incremental para a vida útil do produto.
Desenvolvimento e Entrega Iterativa e Incremental
O desenvolvimento e a entrega no Agile é iterativo. O trabalho é feito em pequenas iterações, geralmente com duração de 1 ou 2 semanas. Às vezes até 4. Também é incremental porque em cada iteração você constrói pequenas fatias de software de trabalho que podem se manter de pé.
Aqui está mais sobre este processo. Desenvolvimento Iterativo e Incremental: Recuse Escolher.
Mini Cascatas Ainda São Cascatas
A maioria das organizações inicia sua jornada Agile encurtando a cascata para sua duração de iteração. Basicamente, elas estão executando mini cascatas em curta sucessão.
Embora haja benefícios para fazer isto, há também muitos inconvenientes:
-
Mantém as pessoas presas em seus papéis tradicionais.
-
Ele mantém os portões de fase de cascata, levando a muitas (desperdiçadas) filas de espera e inventário de trabalhos inacabados.
-
A cooperação entre pessoas com papéis diferentes é geralmente melhor porque o tópico ainda está relativamente fresco na mente da pessoa anterior, mas está longe de ser uma verdadeira colaboração em que as pessoas trabalham juntas na abordagem de um item de trabalho.
Agile Colaborativo
Mantendo o Ritmo
Cortando o Desperdício Para Acelerar, de Forma Sustentável
Considere estes exemplos.
-
Por que produzir documentação quando você pode criar código de uma forma auto-documentada e ser testado de forma automatizada ao mesmo tempo?
-
Por que produzir designs quando os designers e desenvolvedores podem colaborar na implementação?
-
Por que produzir guias de usuário robustos, quando você pode projetar uma interface auto-documentada com explicações internas?
Similaridades e Diferenças
Principais Funções e Responsabilidades
-
O Cliente, ou um representante, que contribui com a perspectiva comercial.
-
O Gerente de Produto, que atua como o elo entre clientes, usuários e equipes. As equipes ainda trabalham diretamente com clientes e usuários para esclarecer o que irão criar a seguir, mas o gerente de produto os reúne. Ao não entrar no meio de tudo, o gerente de produto é livre para fazer um trabalho mais prospectivo.
-
Pessoas de diferentes disciplinas trabalham em conjunto (uma parte) do produto na Equipe. Uma equipe sempre inclui as pessoas que realmente produzem o produto, ou seja, desenvolvedores, designers, analistas, testadores e pode incluir outros.
-
O Coach ajuda a equipe e todas as partes interessadas a adotar o Mindset Agile e seus valores, e a trabalhar de acordo com os princípios. Alguns fazem distinção entre coaches de equipe e coaches Agile, onde os coaches de equipe se concentram em 1 a 3 equipes, e os coaches Agile ajudam a organização como um todo. O papel do Scrum Master no Scrum é definido fazendo ambos, mas na prática o Scrum Master é muitas vezes visto como um coach de equipe.
Principais Reuniões, Ciclos e Cadências de Entrega
Uma cadência de entrega é a frequência com que você lança uma nova versão para seus clientes. Uma iteração, ou ciclo, é quanto tempo uma equipe trabalha antes de pausar, refletir e planejar os próximos passos.
-
As cadências de entrega variam muito. Desde entregas trimestrais, por exemplo, em muitos frameworks Agile em escala, até a entrega contínua e implantação contínua, onde os usuários recebem atualizações mesmo quando estão usando o produto. Em muitas organizações, a cadência de entrega é igual à duração de suas iterações.
-
Os ciclos de iteração tendem a ser de 1 a 4 semanas. A maioria das equipes Scrum prefere Sprints de 2 semanas, Kanban e Lean frequentemente trabalham com a duração de uma única semana. Geralmente, quanto maior a iteração, menores os benefícios de aprender e se ajustar e melhorar na prática ágil.
As reuniões no Agile servem a propósitos específicos, embora possam ser realizadas por nomes diferentes em cada framework. As reuniões em uma iteração são:
-
Reuniões de refinamento para esclarecer o que precisa ser feito para o trabalho que será realizado em breve. Alguns frameworks veem isto mais como uma atividade do que como uma reunião.
-
Uma reunião de retrospectiva para olhar para trás e aprender, e tomar medidas para melhorar seu processo na próxima iteração.
-
Uma reunião de planejamento para decidir em que a equipe irá trabalhar na próxima iteração e resolver quaisquer questões pendentes. A reunião de planejamento para a próxima iteração deve idealmente vir após a retrospectiva, de modo que qualquer lição aprendida possa ser aplicada imediatamente.
-
Uma reunião de inspeção onde a equipe apresenta o que criou durante a iteração e recebe feedback dos clientes, gerente de produto e outras partes interessadas.
-
Uma reunião diária de verificação para manter a equipe concentrada e avançando para o objetivo de sua atual iteração.
Métodos e Técnicas
-
Histórias de usuários e mapeamento de histórias para criar uma visão para o produto, identificar as exigências individuais e priorizá-las em vários lançamentos.
-
Behavior Driven Development para facilitar a comunicação e colaboração com seu cliente e produzir um produto que possa ser verificado de forma automatizada.
-
Test-Driven Development, que se mantém sozinho, mas também faz parte do Behavior Driven Development, para informar o design de seu código, criar uma rede de segurança em torno dele que reduzirá a ansiedade sobre a quebra de qualquer coisa com uma alteração no código.
-
A refatoração é uma técnica utilizada no Test Driven Development e fortemente defendida pela Programação Extrema para manter seu código passível de mudança.
-
Outro método fortemente defendido pela Programação Extrema é a programação em pares. É um meio de colaboração, treinamento e prevenção de bugs (dois veem mais e sabem mais de do que um).
Armadilhas Comuns: Por Que o Agile Nem Sempre Funciona
-
Fazendo Agile
-
Falta de direção clara do topo
-
Coaching inadequado
As equipes não se tornam ágeis ou autogerenciadas por declararem isso. O fracasso em ajudar uma equipe neste processo é uma armadilha comum.
-
Nem todos são adequados para o Agile
Embora o Agile e a conformidade não sejam mutuamente exclusivos, sistemas altamente regulamentados como o de saúde não funcionam facilmente com o Agile.
-
Interesses particulares
Começando
-
Acima de tudo, desenvolva e utilize seu próprio Mindset Agile.
-
Utilize coaches Agile para começar e mantê-lo no caminho certo.
-
Identifique líderes Agile dentro de sua empresa para garantir a compreensão e o uso.
-
Treine os gerentes assim como seus desenvolvedores de software para que se comuniquem bem.
-
Faça com que pessoas-chave entusiasmadas sejam certifiquem em metodologias e frameworks ágeis.
-
Invista em programas de TI adequados que suportem seu trabalho Agile.
-
Identifique as oportunidades de maior agilidade em suas metodologias de desenvolvimento atuais.
-
Introduza frameworks que funcionarão em seu negócio.
-
Veja ferramentas como Kanban para estabelecer seus objetivos, monitorar o progresso e alcançar resultados.
-
Introduza a mudança incrementalmente para que ela não seja esmagadora para todos os envolvidos.
Leitura Adicional
Livros e Artigos
Coaching e Treinamento
Certificação e credenciamento
Como instrutor credenciado junto à Kanban University, os serviços de treinamento da Digité incluem treinamento especializado e certificação em Kanban.
A ICAgile oferece credenciamento
Tanto a Scrum.org como a Scrum Alliance oferecem cursos de certificação.
Descobrindo a Terminologia Agile
Aqui está um guia rápido de terminologia Agile (que pode ser muito confuso para os recém-chegados).
O que é o Mindset Agile
O Mindset Agile é uma forma de pensar o desenvolvimento de produtos (software) com base nos valores e princípios ágeis estabelecidos no Manifesto Ágil.
O Que São Metodologias Ágeis de Desenvolvimento de Software
O que é Metodologia Ágil
O Que São Frameworks
Desenvolvimento de Software Agile Campeão
O desenvolvimento ágil de software é desejável e não é uma ilusão.
Apesar das falhas e decepções sobre as quais você pode ler, há muitas empresas que colhem os benefícios.
Basta ter em mente que você não se torna Agile da noite para o dia.
É um processo. Há mu
A vida é boa quando suas equipes Agile estão sincronizadas!
Contate-Nos hoje para uma demonstração personalizada do SwiftEnterprise! Ou inscreva-se para atualizações abaixo.
