Desenvolvimento Ágil de Software: O Que é e o que Você Ganha Com Isso

Softwear Development

O que é Desenvolvimento Ágil de Software?

O Desenvolvimento Ágil de Software parece desejável, mas ao mesmo tempo um pouco como um pensamento desejoso. Tudo isso fala em entregar produtos excelentes que encantam o usuário final e em ser divertido para você também, trabalhando com uma grande equipe… Isso é realmente possível ou é apenas um sonho? Vale a pena o esforço de se tornar Ágil? As ferramentas e técnicas Ágeis funcionarão para você e sua empresa? Bem, vamos nos aprofundar.

Uma Breve Visão Geral

O Agile é uma mentalidade baseada em um conjunto de valores e princípios. O Desenvolvimento Ágil (Agile) de Software está ancorado nesses e nos valores a seguir:
  • 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.
Isso tudo faz sentido, não é? Então por que Agile sequer existe?

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

As habilidades do projeto utilizadas no Desenvolvimento Ágil de Software se transferem facilmente para outros tipos de desenvolvimento de produtos. Rudi Schenker escreve sobre sua aplicação em outros campos da engenharia, incluindo química, elétrica, controle e instrumentação, entre outros.

Culturas Corporativas Agile

O Mindset Agile se sai bem em outras disciplinas além da engenharia (de software). Sua equipe de marketing, equipe de gerenciamento de fornecedores e equipe de vendas podem aplicá-lo em suas atividades. Quase todos os departamentos corporativos regulares podem se beneficiar de se tornarem mais ágeis. Frameworks ágeis como Agile Disciplinado, SAFe, o Método Crystal e Kanban são ferramentas adequadas para ajudar uma corporação a se tornar mais ágil. Eles oferecem maneiras de otimizar a organização corporativa integrando métodos de trabalho ágeis e em cascata. Para saber mais sobre isto, leia “Aqui está porque (e como) as equipes que não usam software estão adotando Metodologias Ágeis”. Mas vamos voltar ao desenvolvimento de software ágil.

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

A verdadeira colaboração Agile é diferente. Ela elimina as fases tradicionais da cascata (análise, projeto, implementação, teste, entrega e operação), mas não elimina as atividades realizadas nestas. Na verdadeira colaboração Agile, uma equipe assume um único item de trabalho em conjunto. Eles elaboram projetos, critérios de aceitação, etc., tanto para o usuário quanto para os operadores juntos e depois implementam o que decidiram em grupos menores, por exemplo, utilizando programação em pares. Tudo isso pode parecer um enorme desperdício de recursos e do tempo das pessoas para qualquer pessoa nova no Agile. Entretanto, é mais importante se concentrar no bastão do que nos corredores em uma corrida de revezamento — uma analogia utilizada na fabricação Lean e no desenvolvimento de software. Finalizar o trabalho e, portanto, entregar valor para seus clientes mais cedo é mais importante do que manter todos ocupados em todos os momentos. Ele gera mais valor para o negócio a longo prazo. Fazer com que o cliente, ou um representante do cliente, se envolva ativamente e seja facilmente acessível para a equipe o tempo todo, será ainda mais efetivo para garantir mais valor entregue mais cedo, pois eles podem evitar que a equipe caia em tocas de coelho que parecem boas, mas na verdade não entregam nenhum valor comercial.

Mantendo o Ritmo

Embora o Agile esteja focado em fornecer valor ao cliente mais cedo, isso não significa cortar as boas práticas de engenharia. Sim, a curto prazo, isso pode acelerar a entrega de valor, mas a longo prazo, isso o fará tropeçar, pois o código “apodrece” e rapidamente se torna cada vez mais difícil de mudar. Isto leva a mais erros, mais relatórios de erros e mais tempo gasto na correção de problemas do que na entrega de novos valores. É por isso que todo framework ou metodologia ágil precisa incorporar boas práticas de desenvolvimento. Por exemplo, através da adoção da Programação Extrema — o “Agile do Desenvolvedor”.

Cortando o Desperdício Para Acelerar, de Forma Sustentável

A aceleração não vem de fazer as pessoas trabalharem mais duro ou mais rápido. Não vem pegar atalhos. Pelo menos não a longo prazo. Tornar-se Agile é como ir à academia: trata-se de queimar a gordura do seu processo. É por isso que muitos frameworks ágeis, por exemplo LeSS e SAFe, extraíram uma página do livro do Lean Manufacturing e tomaram a teoria de gerenciamento de fluxo e de filas para ajudar você a tomar decisões sobre seu processo.

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

A cascata é orientada por fases, e cada fase se baseia na anterior. Cada fase se concentra em uma única atividade — análise comercial, design funcional, design técnico, programação, testes — para o produto inteiro. Você não pode ver nada funcionando antes que tudo tenha passado pelas fases anteriores à programação real e pelo menos algumas funcionalidades tenham sido programadas. Corrigir o curso em qualquer fase significa refazer muito trabalho a partir das fases anteriores. O Agile é orientado ao valor e ao produto. Você entrega o software de trabalho desde o início e pode ver o produto chegar à vida à medida que ele cresce. Isto permite um feedback muito mais precoce e a correção do curso à medida que você avança, com o mínimo de desperdício. As equipes ainda realizam as mesmas atividades que você faria em um processo de cascata, mas as fazem de forma colaborativa e para uma pequena parte de cada vez. Isto concentra o vai e vem entre, por exemplo, análise e programação em um pequeno período de tempo e se beneficia do fato de que tudo ainda está fresco na mente de todos.

Principais Funções e Responsabilidades

Quando você olhar para qualquer framework Agile, você reconhecerá as seguintes funções-chave, embora elas possam ter nomes ligeiramente diferentes.
  • 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.
Em muitos frameworks Agile, os gerentes de linha e os gerentes de projeto não têm nenhuma função. É por isso que você pode esperar uma resistência aberta e não tão aberta a menos que você os ajude a redefinir seu papel e valor em um ambiente Agile. O LeSS oferece conselhos específicos para você a respeito disso.

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.
Pode haver reuniões semelhantes para coordenar o trabalho de muitas equipes, especialmente quando a cadência de entrega difere da duração da iteração.

Métodos e Técnicas

Há muitos frameworks e metodologias disponíveis que o ajudarão em sua jornada Agile. Por exemplo, Scrum, Kanban, Lean Software Development e Extreme Programming. Você também encontrará frameworks para ajudar a escalar o Agile para múltiplas equipes e até mesmo em toda a sua organização. Você encontrará uma visão geral abrangente mas sucinta em “6 Frameworks Ágeis em Escala — Qual é o mais adequado para você?” Aqui está uma rápida visão geral de algumas técnicas bem conhecidas.
  • 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).
Há muitos outros frameworks, ferramentas e técnicas utilizadas no trabalho Agile, e novos produtos aparecem o tempo todo. Experimente estes boletins informativos para se manter atualizado.

Armadilhas Comuns: Por Que o Agile Nem Sempre Funciona

O Agile não funciona para todos. Até mesmo o Google ainda usa algumas metodologias de cascata e a Amazon é descrita como Lean, mas não Agile. Mas você pode aprender muito com as armadilhas que às vezes causam o fracasso do Agile.
  • Fazendo Agile
A maior razão para os fracassos do Agile é quando as pessoas passam pelas moções. Por exemplo, a realização de reuniões prescritas, mas não adotando, ou não adotando totalmente, a mentalidade, os valores e os princípios. Às vezes nem mesmo as boas práticas de engenharia. Isto é conhecido como ‘fazer’ Agile ao invés de se tornar Agile.
  • Falta de direção clara do topo
Você precisa de uma administração a bordo e participando dos processos. Não ter apoio gerencial é uma maneira segura de desincentivar a todos para corrigir os obstáculos ao trabalho Agile.
  • 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
A forma Agile de trabalhar exige uma mudança radical que muitas vezes está em desacordo com os interesses instalados e as estruturas organizacionais e sistemas de recompensa antigos. Muitas vezes, especialmente em grandes empresas e governos acostumados a contratos restritos e direção hierárquica. Lembre-se, você ainda pode usar seu Mindset Agile e alguns frameworks ágeis, mesmo que um cliente insista em uma abordagem em cascata, como custos fixos e prazos de entrega fixos. Por exemplo, aqui está como o Kanban pode ajudá-lo.

Começando

A chave para se tornar Agile é adotar a mentalidade e as práticas que facilitam a entrega de um produto valioso e mantê-lo em forma para que você possa responder rapidamente às mudanças nas exigências de seus clientes, no ambiente comercial e nas necessidades do usuário final. Chegar lá é uma jornada e conquistar corações e mentes é a chave para manter você em movimento. Aqui estão alguns passos para que você possa seguir seu caminho.
  • 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.
Reconheça que levará tempo para fazer todas as mudanças necessárias para passar para um modelo de negócios totalmente Agile. Dependendo da escala da adoção do Agile em sua empresa, há várias ferramentas disponíveis que apoiarão sua jornada — você pode ver as ferramentas da Digité aqui.

Leitura Adicional

Livros e Artigos

Metodologias Ágeis em Profundidade: Sudiptar Malakar. Guia de Início Rápido de Gerenciamento Ágil de Projetos: Ed Stark. O Guia de Scrum: Ken Schwaber e Jeff Sutherland. Propriedade Scrum do Produto: Navegando na Floresta e nas Árvores: Bob Galen. Desbloqueando a Agilidade: Um Guia Interno para a Transformação Agile da Empresa: Jorgen Hesselberg Examinando o Manifesto Ágil: Scott Ambler Agile Está Morto. Vida Longa à Agilidade: Dave Thomas

Coaching e Treinamento

A Digité oferece tanto treinamento de Agile quanto serviços de consultoria e pode rapidamente ajudar a colocar você e sua equipe em dia.

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

As Metodologias Ágeis de Desenvolvimento de Software são outra forma de se referir às metodologias, técnicas e práticas utilizadas para desenvolver software de forma Agile.

O que é Metodologia Ágil

Uma Metodologia Ágil consiste nas práticas que uma equipe utiliza para realizar uma tarefa. Cada equipe se baseia em diferentes frameworks, técnicas, ferramentas e práticas para desenvolver sua própria metodologia para um determinado projeto. O uso de uma gama de metodologias ajuda a tornar-se Agile sem reinventar a roda. Para mais informações, leia O Que é Metodologia Ágil.

O Que São Frameworks

Os frameworks lhe dizem o que fazer, mas não dizem muito sobre como fazer. Equipes e organizações têm que preencher estes frameworks com boas práticas para todas as atividades de desenvolvimento de software.

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.