Até 2001, a gestão de projetos de software era baseada em um modelo que também contemplava outras áreas além do desenvolvimento, como a engenharia civil e a própria administração. Em um dos formatos mais utilizados à época, conhecido por “cascata”, as pessoas desenvolvedoras precisavam especificar e documentar todo o sistema para só depois fazer a implementação. Tudo mudou com o lançamento do Manifesto Ágil, que abriu caminho para a criação e o uso de uma série de metodologias ágeis que se encaixam melhor ao segmento de TI.

Comparativamente ao modelo anterior, as metodologias ágeis prezam mais pela entrega do produto ou serviço do que pela documentação, que se restringe ao que é essencial. Geralmente, trabalham com ciclos ou iterações curtas, onde ao final de cada um tem-se um produto entregável. Como o próprio nome diz, proporcionam mudanças mais rápidas e, portanto, se adaptam ao contexto atual marcado pela tecnologia, pelo dinamismo e pela competitividade.

Um dos grandes trunfos das metodologias ágeis é a adaptabilidade, que é demandada pelo caráter dinâmico do desenvolvimento de sistemas.

Isso porque, diferentemente do formato “cascata”, as alterações podem ser feitas ao longo do projeto, e não somente ao final com a entrega do software. Dessa forma, com feedbacks contínuos, comunicação consistente e envolvimento entre times pequenos, mas altamente especializados, também é evitado o retrabalho.

Os 12 princípios da cultura ágil

Proposto por 17 signatários, o Manifesto Ágil é uma declaração de princípios que fundamenta o desenvolvimento ágil de software. O documento privilegia indivíduos e interações em relação a processos e ferramentas. Dá mais preferência ao software em funcionamento do que à documentação abrangente.

Também reforça a colaboração com o cliente em vez da negociação de contratos. E ainda defende a resposta a mudanças em detrimento ao seguimento de um plano. Veja, abaixo, os 12 princípios, que estão profundamente conectados às metodologias ágeis:

  1. Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor;
  2. Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas;
  3. Entregar software funcionando com frequência, na escala de semanas até meses, com preferência aos períodos mais curtos;
  4. Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto;
  5. Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho;
  6. O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara;
  7. Software funcional é a medida primária de progresso;
  8. Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes;
  9. Contínua atenção à excelência técnica e bom design, aumenta a agilidade;
  10. Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito;
  11. As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis;
  12. Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.
metodologias ágeis

As principais metodologias ágeis

Como você já deve ter ouvido falar, não existe só um framework de processos para desenvolvimento de software. No entanto, a grande maioria deles é pautada por curtos períodos, que são as iterações que mencionamos anteriormente. Normalmente, esses ciclos vão de menos de uma semana até um mês e funcionam como pequenas versões do projeto de software como um todo.

As iterações incluem todas as atividades necessárias para implantar o mini-incremento da nova funcionalidade. Do planejamento até à documentação, passando pela análise de requisitos, projeto, codificação e teste. Nada fica para trás em um projeto de software ágil, que almeja a capacidade de implantar uma nova versão do sistema ao final de cada período, com reavaliação constante das prioridades.

Conheça o funcionamento das três principais metodologias ágeis aplicadas em projetos de software:

1. Scrum

É uma das metodologias ágeis mais utilizadas no mundo todo, sendo que a popularidade pode estar associada à possibilidade de ser integrada a outros frameworks. Quem participa de um projeto Scrum, conhece desde o início a lista de funcionalidades a serem executadas em cada ciclo de desenvolvimento, que neste caso se chama sprint. Há reuniões de planejamento, andamento e alinhamento sobre o que foi entregue a cada período.

O Scrum prevê a utilização de práticas iterativas e incrementais, cuja promessa é maximizar o tempo disponível para a produção de trabalho útil. É guiado por um ou uma Product Owner, que tem autoridade para determinar o que estará e o que não estará na versão final do software. Tem um timebox bem definido, sendo o mais comum aquele que dura duas semanas.

2. Kanban

Criado na fábrica japonesa da Toyota, é um método que sinaliza todas as fases do processo de desenvolvimento de um produto ou serviço. O objetivo é identificar previamente os gargalos que possam surgir, além de definir de forma clara quais são as prioridades do projeto de software. Na prática, prevê um quadro que divide as atividades em: to do, doing e done.

O Trello é um serviço baseado no conceito Kanban, que significa “registro” ou “placa visível”. Aqui, o timebox é mais fluido e os meetings são feitos à medida que a equipe sente necessidade ou quando é demandada uma entrega maior previamente acordada. A inspiração é o método de gestão Lean, que quer dizer enxuto (lembra do livro Lean startup?).

3. Extreme Programming (XP)

Agilidade no desenvolvimento da solução, economia de recursos e qualidade do produto final são as premissas desta metodologia. Para isso, valoriza a existência de soft skills como comunicação, feedback, coragem, respeito e simplicidade em toda a equipe. Também é bastante baseada em testes, além de prever a programação em pares.

No dia a dia, há reuniões de planejamento (planning game) e diárias, com duração de aproximadamente 15 minutos (stand up meeting), para alinhamento. As entregas ao cliente são frequentes e, portanto, ele deve estar sempre à disposição. Outro conceito presente neste modelo é o refactoring, que impõe a necessidade de melhoria contínua.

Conclusão

Além das metodologias ágeis destacadas acima, que são as mais comuns, poderíamos citar a Feature Driven Development (FDD), a Microsoft Solutions Framework (MSF), o Dynamic System Development Model (DSDM) e o Iterative Development, que também são fruto do Manifesto Ágil. Não existe o melhor modelo, mas aquele que funciona melhor para determinada empresa ou equipe de desenvolvedores(as).

Por isso a importância de conhecer, estudar (em cursos online ou presenciais, treinamentos e livros) e aplicar os mais variados formatos a fim de descobrir o seu preferido. Quem trabalha de projeto em projeto, tem a possibilidade de conhecer os métodos ágeis mais utilizados pelas empresas. Na Impulso Network, por exemplo, a cultura ágil é valorizada, tanto que em conjunto com da Taller criamos a Impulso Agile, que oferece consultoria para times de desenvolvimento e agile coach, além de divulgarmos oportunidades para quem atua diretamente com isso.

Você já trabalhou alguma das metodologias ágeis existentes? Compartilhe conosco a sua experiência aqui nos comentários do blog da Impulso Network.