O que é Agile?

Businessman making presentation with his colleagues and business

O que é Agile?

Metodologia Agile é um conjunto de metodologias usadas no desenvolvimento de software que prezam por simplificar os processos de software. Desenvolvida nos anos 2000, com o avanço da Internet e da implantação de software em mais áreas, garante entregas constantes e um dinamismo maior da equipe. O Agile trata todas as entregas como um projeto completo, sendo feitas todas as fases de um processo baseado no RUP (Rational Unified process). O RUP sendo um conjunto de técnicas para desenvolvimento de software, com fases de iniciação, elaboração, construção e transição, que serve de bases para várias metodologias de projeto.

O conceito de Agile foi criado em uma reunião que aconteceu 2000 com vários personagens importantes no desenvolvimento de software. O congresso contava com líderes da comunidade Extreme Programming(XP), outro padrão de desenvolvimento de software, e dentre as discussões de dificuldades e desenvolvimento com XP nasceu o Manifesto.

O “Manifesto Agile” que representa as regras gerais que devem ser seguidas pela metodologia foram criadas com base em quatro valores, sendo eles:

Indivíduos e interações mais que processos e ferramentas

Software em funcionamento mais que documentação abrangente

Colaboração com o cliente mais que negociação de contratos

Responder a mudanças mais que seguir um plano

De acordo com os valores criados no Manifesto, criou-se doze princípios a serem seguidos nos projetos que optem por seguir a metodologia Agile. Dentre eles estão:

• Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.

Software funcional é a medida primária de progresso.

• Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.

• As melhores arquiteturas, requisitos e design emergem de equipes auto-organizáveis.

• O Método mais eficiente e eficaz de transmitir informações para, e por dentro de uma equipe de desenvolvimento, é através de uma conversa cara a cara.

A maior vantagem de usar uma abordagem ágil é a atenção a mudanças que podem acontecer ao decorrer do desenvolvimento, uma vez que os requisitos são coletados continuamente e adaptados ao longo do processo. Além da facilidade em mudanças, o Agile também garante entregas constantes ao cliente, poupando-o de processos exaustivos de elaboração de requisitos só ao início do projeto e uma entrega em um futuro onde esses requisitos podem não ser mais necessários.

Apesar de ser repetidamente citado e discutido entre a comunidade de desenvolvedores e empresas de software, o Agile não pode ser usado em todos os tipos de projetos. O requisito principal para um projeto permitir a sua aplicação é a possibilidade de contacto constante com um cliente, já que a comunicação entre a equipe e o cliente é um dos pilares principais do desenvolvimento ágil. Mas não só a comunicação é garantia de sucesso no uso de uma metodologia ágil, dependendo do grau de dificuldade de um projeto e de seus requisitos, um desenvolvimento ágil pode gerar mais dor de cabeça que simplicidade. Como já se sabe, nem todo projeto pode-se ter um nível de documentação tão básico quanto o requerido no Agile.

Um caso de sucesso recente de uso constante de metodologias ágeis é a Spotify Ltd., onde são formadas equipes que funcionam como mini-startups. Cada equipe é chamada de “Squad” e é auto-organizável, logo, a própria equipe escolhe as ferramentas ou metodologias que serão usadas no desenvolvimento. As equipes são montadas por funcionalidade em experiência do usuário, logo, elas são independentes entre si e podem trabalhar conceitos como teste de funcionalidades e validação de aprendizado. Além de ferramentas como Scrum e Kanban, as equipes também trabalham com o uso de MVP(Mínimo Produto Viável), validando ainda mais o ambiente de startup dentro dos projetos. Esse caso foi reportado por Henrik Kniberg e Anders Ivarsson no artigo “Scaling Agile @ Spotify with Tribes, Squads, Chapters & Guilds” publicado em 2012 no blog de Kniberg, onde ele relata sua experiência trabalhando na Spotify Ltd.

Alguns dos erros comuns cometidos por empresas que começam a fazer uso de uma abordagem ágil é subestimar a necessidade de documentação de software, se partindo do princípio de evitar trabalho desnecessário. No entanto, o Agile não é sobre minimizar a importância de documentos, mas sim otimizar a sua produção. Além desse erro, ainda é comum a dificuldade da aplicação do princípio de “equipes auto-organizáveis”, onde todos são seus próprios chefes e supervisores. Em empresas com um nível de profissionais muito diverso e problemas em comunicação, a aplicação de Agile tem que ser treinada e observada com cuidado. Esses fatores não são impedimentos para o uso de uma metodologia ágil, mas exigirá, de gerentes de projeto e líderes técnicos, maior clareza em seus objetivos e atividades para sua equipa.

Dentre as principais metodologias ágeis usadas atualmente, podem ser citados o Scrum, TDD e o Kanban. Diferentemente do Scrum e do Kanban, o TDD (Test Driven Development), é focado no desenvolvimento, onde as funcionalidades são testadas antes de serem completamente desenvolvidas ou pensadas, isso garante software funcional em um tempo menor. E saindo desse princípio de código primeiro, ainda existe o FDD (Feature Driven Development), onde a implementação nasce do desenvolvimento de funcionalidades. Já metodologias como Scrum e Kanban focam na gestão do projeto e gerência da equipe.

Scrum que é, ao menos, superficialmente conhecido por grande parte das fábricas de software, formula o tempo de desenvolvimento com “Sprints” que representam uma entrega do projeto iterativo incremental. E o Kanban tem o conceito do “quadro branco”, onde são descritas as tarefas que tem que ser feitas, o que está sendo feito e o que já foi feito, e também, o que deve ser refeito, garantindo uma comunicação entre toda a equipe e uma forma mais visual e informal de manter todos atualizados sobre o projeto.

Em conclusão, o uso de uma abordagem ágil exige compromisso da equipe e dos gestores, pois apesar de simplificar alguns processos, precisa de uma nova forma de ver a equipe e o software. O Agile vê o software como algo vivo e passível de mudanças. E sempre é possível alterar a forma de uso de uma metodologia ágil para a sua necessidade, lembrando dos valores do manifesto e claro, sempre visando a qualidade do software.