ESTE ARTIGO EM 5 SEGUNDOS:
- As metodologias Agile caracterizam-se pela dinâmica passo-a-passo, que permite entregas constantes e focada numa visibilidade a curto prazo, mas que nunca perde de vista o objetivo a longo prazo do produto.
- Existem 5 principais metodologias Agile: Scrum, Kanban, Extreme Programming (XP), Lean Development e Crystal.
O que são metodologias agile?
A primeira vez que se ouviu falar de desenvolvimento Agile (ou do termo Agile) foi em 2001, quando uma comunidade de developers que estava cansada dos métodos de desenvolvimento existentes considerados como “pesados” – principalmente, a metodologia Waterfall – decidiu criar um manifesto, o Manifesto Agile. Este importante documento teve tanto impacto que se tornou a bíblia de desenvolvimento Agile até nos dias de hoje, reportando todos os princípios e boas práticas associados.
As metodologias Agile definem que, acima de tudo, devemos procurar a satisfação do cliente através de entregas constantes de software que traga valor ao mesmo, ao estabelecer comunicação constante com o cliente e também ao focarmo-nos na comunicação entre os membros da equipa. Ao contrário das práticas anteriores, a metodologia Agile não se caracteriza pela completa definição de um produto, mas por uma dinâmica passo a passo, através de uma interação dinâmica que permite entregas constantes e focada numa visibilidade near-shore mas que nunca perde de vista o objetivo a longo prazo do produto.
Segundo o Manifesto Agile e alguns dos seus 12 princípios:
? A satisfação do cliente é a principal prioridade, demonstrada através de entregas constantes e valor adicionado.
?Devem ser aceites mudanças aos requisitos, em vez de se seguirem requisitos rígidos, mesmo numa fase final de desenvolvimento: “Os processos Agile potenciam a mudança em benefício da vantagem competitiva do cliente”, conforme é referido no Manifesto.
? O cliente e a equipa de desenvolvimento devem trabalhar em conjunto diariamente, facilitando a sincronização da equipa e do produto.
? É imperativo conseguir um ambiente agradável e uma rede de apoio para as equipas de desenvolvimento. Apenas desta forma é possível mantê-las motivadas.
? Os processos Agile promovem um desenvolvimento sustentável graças ao constante ritmo e excelência técnica, que, por sua vez, melhoram a produtividade.
?Momentos retrospetivos dentro de uma equipa também são essenciais, permitindo que sejam feitos os ajustes necessários para promover a eficiência.
Basicamente, o desenvolvimento Agile segue um modelo incremental, que promove a colaboração dentro da equipa e o planeamento contínuo, assim como uma constante evolução e aprendizagem. As metodologias Agile devem respeitar o ciclo de desenvolvimento de software – planeamento, execução e entrega final – permitindo que o software seja desenvolvido por fases. Este processo faz com que seja mais fácil identificar e solucionar bugs ou quaisquer outras necessidades.
A principal vantagem de utilizar metodologias Agile não passa apenas pela rápida entrega de software, mas também pela constante entrega de valor ao cliente, visto que as entregas são incrementais.
Existem inúmeras metodologias que seguem a mentalidade Agile. Nesta publicação, realçamos cinco das principais metodologias Agile e as suas vantagens e desvantagens no universo do desenvolvimento de software. Mas não podemos aprofundar as diferentes metodologias sem antes referimos à crescente popularidade das metodologias Agile (ou pelo menos algumas delas) dentro da gestão empresarial, demonstrado que não é só o desenvolvimento de software que pode ser enriquecido ao usar estas práticas.
O desenvolvimento de negócio está a tornar-se um lugar cada vez menos previsível, tal como o desenvolvimento de software. Portanto, o desafio agora é “porque não” escolher uma metodologia Agile para o processo de gestão de negócios. Os métodos Agile são adaptáveis, permitindo tomadas de decisão rápidas e uma influência instantânea no desenvolvimento de negócios.
Principais metodologias agile:
1. Scrum
Scrum é, sem dúvida, o método mais utilizado entre as metodologias Agile. Scrum é caracterizado por ciclos ou fases de desenvolvimento, conhecidos como sprints, e pela maximização do tempo de desenvolvimento para um produto de software ao encontro de um objetivo, o Product Goal. Este Product Goal é um objetivo de valor em grande escala, dentro do qual os sprints levam a equipa de produto de Scrum mais perto do final.
Normalmente, é utilizado na gestão de desenvolvimento de produtos de software, mas também pode ser utilizado num contexto empresarial.
Todos os dias começam com uma reunião de 15 minutos, o daily Scrum, que tem o papel de sincronizar atividades e encontrar a melhor maneira de planear o dia de trabalho, permitindo verificar a “saúde” de sprint e o progresso do produto.
Vantagens:
- A motivação da equipa é boa, porque os developers querem alcançar o prazo ótimo para cada sprint;
- A transparência permite que o projeto seja seguido por todos os membros da equipa ou até de toda a organização;
- Uma simples “definition of done” é utilizada para validar requisitos;
- O foco na qualidade é constante com o método Scrum, resultando em menos erros;
- A dinâmica deste método permite que os developers reorganizem prioridades, assegurando que os sprints que ainda não foram completos recebam mais atenção;
- Um bom planeamento de sprints é priorizado, para que toda a equipa de Scrum perceba o porquê, o quê e o como das tarefas alocadas.
Desvantagens:
- A segmentação do projeto e a procura de agilidade de desenvolvimento podem, por vezes, levar a equipa a perder o fio ao projeto enquanto um todo, estando focada nas pequenas partes;
- O papel de cada developer pode não estar bem definido, resultando em alguma confusão entre os membros da equipa.
2. Kanban
A palavra Kanban tem origem japonesa e o seu significado está ligado ao conceito de “Just-in-Time”. Na prática, o método Kanban é organizado num quadro ou tabela (Quadro Kanban), dividido em colunas, apresentando cada fluxo dentro do projeto de produção de software. Ao longo da evolução do desenvolvimento, a informação contida na tabela é alterada, e sempre que uma nova tarefa surge, um novo “cartão” é criado.
Esta metodologia também é útil em departamentos de negócio empresarial, tais como RH, marketing, etc., trazendo a visibilidade desejada sobre todas as tarefas da equipa.
O método Kanban requer comunicação e transparência para que os membros de qualquer equipa saibam exatamente em que fase se encontra o processo/desenvolvimento e possam ver o estado de um projeto em qualquer altura. Está principalmente focado na capacidade da equipa e é melhor para processos que sejam sujeitos a pequenas mudanças.
Vantagens:
- Capacidade de ver todas as tarefas de um único projeto (organizado por Completo, Em Progresso ou Em Teste, por exemplo), através do conceito simples de “Cartas”;
- Pode ser estabelecido um limite sobre o número de tarefas em simultâneo (ou seja, a quantidade de trabalho, tendo em conta a sua resolução ou a entrega);
- Foca-se na duração de um ciclo – quanto tempo demora até a tarefa ir do backlog para a fase final;
- Permite entregas contínuas;
- Provavelmente uma das metodologias mais simples de se implementar fora do mundo de TI.
Desvantagens:
- É possível que membros da equipa interpretem mal a informação exposta no Quadro Kanban, especial quando o mesmo está desatualizado;
- Uma vez que não existem prazos em Kanban, podem surgir problemas relacionados com o tempo, tais como atrasos, em cada uma das fases.
3. Extreme Programming (XP)
Este é um método típico de desenvolvimento Agile, desenvolvido por Kent Beck, e pode ser adaptado a empresas de desenvolvimento de diferentes dimensões. A Extreme Programming (“XP”) baseia-se na ideia de descobrir “a coisa mais simples que irá funcionar” sem colocar demasiada pressão na visão longo prazo do produto.
É uma metodologia que enfatiza valores como a Comunicação, Simplicidade, Feedback, Coragem e Respeito, e prioriza a satisfação do cliente sobre tudo o resto. Esta metodologia encoraja a confiança, motivando os developers a aceitarem mudanças nas exigências dos clientes, mesmo que estas cheguem durante as últimas fases do ciclo de desenvolvimento.
O trabalho de equipa é extremamente importante em XP, uma vez que, quando há um problema, ele é resolvido por toda a equipa de gestores, developers ou clientes, reunindo-os para promover uma conversa e envolvimento e quebrar as barreiras da comunicação. Todos se tornam peças essenciais do mesmo puzzle, criando um ambiente fértil para uma produtividade elevada e eficiência entre equipas. Em Extreme Programming, o software é testado desde o primeiro dia, recolhendo feedback para melhorar o desenvolvimento. O XP promove atividades como pair programming, e com uma forte componente de teste, é uma excelente metodologia de engenharia.
Vantagens:
- A simplicidade do código escrito é uma vantagem, já que permite melhorias a qualquer altura;
- Todo o processo e o ciclo de desenvolvimento XP é visível, criando objetivos para os developers, juntamente com resultados relativamente rápidos;
- O desenvolvimento de software é mais ágil do que quando se usa outras metodologias devido aos testes constantes;
- Promove uma forma de trabalho altamente enérgica;
- A XP também contribui para elevar e manter o talento da equipa.
Desvantagens:
- O foco singular no código pode levar a que seja dada menos importância ao design, o que significa que tem de receber atenção redobrada mais tarde;
- Esta metodologia pode não funcionar se todos os membros da equipa não estiverem situados na mesma área geográfica;
- Em projetos XP, um registo de possíveis erros não é sempre mantido, e esta falta de monitorização pode levar a bugs semelhantes no futuro.
4. Lean Development
O desenvolvimento Lean é uma metodologia que nos chega diretamente da Lean Manufacturing, criada pela Toyota, e é aplicado ao desenvolvimento de software. Este método oferece uma framework conceptual e segue valores, princípios e boas práticas de desenvolvimento que podem ser aplicados a uma abordagem de desenvolvimento Agile.
O desenvolvimento Lean força a equipa a remover implacavelmente qualquer atividade que não traga valor ao produto final.
Existem sete princípios essenciais: eliminar o que não interessa (qualquer coisa que não traga valor efetivo ao projeto do cliente); desenvolvimento de qualidade (criar qualidade no desenvolvimento requer disciplina e controlo da quantidade de resíduos criados); criar conhecimento (a equipa é motivada a documentar toda a infraestrutura para mais tarde reter esse valor); compromissos diferentes (este ponto encoraja a equipa a não se concentrar demasiado no planeamento e antecipação de ideias sem ter uma compreensão prévia completa dos requisitos do negócio); entrega rápida (entregar valor ao cliente o mais rápido possível); respeitar a equipa (comunicar e gerir conflitos são dois pontos essenciais); otimizar o todo (a sequência de desenvolvimento tem de ser aperfeiçoada o suficiente para poder eliminar erros no código, a fim de criar um fluxo de verdadeiro valor).
Funciona ao construir soluções simples e apresentá-las aos clientes utilizando o respetivo feedback sobre o “produto” para o melhorar progressivamente. O conceito de “produto mínimo viável” é também frequentemente associado a “Lean”.
Vantagens:
- Permite à equipa de remover atividades supérfluas, poupando assim tempo e dinheiro;
- Diminui o tempo necessário para a entrega de funcionalidades, uma vez que prepara a equipa de desenvolvimento durante o processo de tomada de decisão, aumentando a motivação geral;
- Metodologia facilmente escalável, facilmente adaptável a projetos de qualquer dimensão;
- Não exige solução de engenharia em excesso ou requisitos empresariais.
Desvantagens:
- Depende da capacidade da equipa de developers e de seguir os “princípios Lean”, o que requer developers extremamente dedicados e talentosos;
- Torna-se fácil perder o foco, uma vez que várias tarefas estão divididas em vários elementos;
- Requer alguns documentos, em particular, sobre as características do negócio que é o objeto do trabalho. Caso contrário, existe o risco de que o desenvolvimento seja realizado de forma incorreta e apresente erros.
5. Crystal
Esta é uma família de metodologias Agile, e o Crystal é uma das estruturas mais flexíveis, dando uma enorme liberdade à equipa para desenvolver os seus próprios processos. Concentra-se mais no individual e como estes interagem, e não no processo ou nas ferramentas; por isso, a comunicação é um aspeto chave essencial.
O Crystal tem variantes como a Crystal Clear (uma equipa de até 8 pessoas), Crystal Yellow (uma equipa de 10 a 20 pessoas), Crystal Orange (uma equipa de 20 a 50 pessoas) e Crystal Red (para equipas grandes de 50 a 1000 pessoas). O Crystal centra-se em princípios como Pessoas, Interações, Comunidade, Competências, Talento e Comunicação, com o objetivo de proporcionar o melhor processo de desenvolvimento de software possível. O núcleo deste processo de desenvolvimento é a interação e simbiose, que têm de existir entre as pessoas alocadas aos projetos e processos, de modo a trazer eficiência ao projeto.
Cada projeto é único e sofre alterações frequentes, pelo que a equipa deve encontrar as suas próprias formas de o levar à sua conclusão tomando as melhores decisões.
De acordo com o seu fundador, Alistair Cockburn, “Crystal é uma família de metodologias de desenvolvimento de software, que funciona com o poder investido pelas pessoas, e é extremamente leve e moldável”. Basicamente, Cockburn acredita que o talento e a forma como os membros da equipa interagem trazem benefícios para todo o projeto.
É uma metodologia leve em termos de documentação, onde as equipas podem encontrar os seus próprios caminhos em vez das modalidades de trabalho preferidas, eliminando as despesas gerais de gestão e criando um processo “mais livre”.
Vantagens:
- Crystal requer entregas frequentes, a fim de identificar eventuais problemas em todas as fases;
- Há sempre espaço para melhorar as características, tirando algum tempo do desenvolvimento do software e permitindo discussões sobre como aperfeiçoar processos;
- Facilita uma comunicação mais direta dentro das equipas e promove a interação e partilha de conhecimento entre os membros da equipa;
- Requer um ambiente técnico com testes automatizados, gestão de configuração e integração frequente.
Desvantagens:
- O facto de existirem variantes na família de metodologias significa que os princípios podem variar com a dimensão da equipa e do projeto, resultando em projetos que podem não ser tão simples;
- Pode não funcionar tão bem em equipas geograficamente dispersas, devido à constante necessidade de comunicar e refletir;
- O planeamento e o desenvolvimento não dependem de requisitos;
- É ideal para equipas experientes e autónomas.
Pensamentos Finais
Na Xpand IT, o desenvolvimento de software é personalizado, concentrando-se nos resultados e na satisfação dos clientes, fase a fase. Todo o desenvolvimento é governado por princípios Agile. Portanto, a fim de respeitar o ciclo de desenvolvimento, de alcançar os resultados desejados, de prever possíveis erros, de maximizar a produtividade e de desenvolver com segurança, mantendo ao mesmo tempo os membros das equipas motivados, criámos a nossa própria metodologia: XPAgile (uma mistura de estruturas Agile – Scrum e Extreme Programming – que assegura os melhores resultados dentro dos prazos estabelecidos).
Se pretende saber mais sobre a metodologia de desenvolvimento da Xpand IT, clique aqui.