Todo o processo de desenvolvimento de software da SSTecnologia é realizado através da aplicação de metodologias ágeis de gerenciamento de projetos (Scrum) e desenvolvimento de software (eXtreme Programming ou XP). Os valores e princípios dos métodos ágeis foram descritos em 2001 por um grupo de especialistas no assunto, dando origem ao Manifesto Ágil. Para um melhor entendimento dos fundamentos desses métodos, tentei resumir o que são, o que não são e quais são os seus principais benefícios de uma forma menos técnica.
O que são Métodos Ágeis.
Os Métodos Ágeis possuem alguns atributos principais que podem ser considerados “A Essência da Agilidade”. São eles:
- Aprendizado e adaptação – Projetos tradicionais de desenvolvimento de software nos forçam a prever tudo o que será desenvolvido com o máximo de precisão no início do projeto. Métodos Ágeis afirmam que há muita coisa que não podemos prever no início do projeto, eles são estruturados para permitir que nós primeiramente aprendamos sobre o que ainda não conhecemos e então nos adaptamos para utilizar o conhecimento adquirido.
- Colaboração – Métodos Ágeis valorizam a colaboração contínua dos patrocinadores, clientes e equipe de desenvolvimento.
- Foco no Cliente – O cliente é o foco central em um projeto Ágil.
- Pequenas equipes auto-gerenciáveis – Métodos Ágeis reconhecem que pequenas equipes podem se auto-gerenciar com maior eficiência.
- Princípios – A base para a formação dos Métodos Ágeis é proveniente dos métodos que se consolidaram na indústria. Principalmente os conceitos “Just Enough” e “Just in Time” (Só o suficiente e a tempo).
- Progressiva elaboração de requisitos – Nós aprendemos sobre os requisitos do software a medida que o projeto avança, então especificar cada detalhe dos requisitos no início do projeto não faz sentido. Projetos Ágeis estabelecem um claro caminho para elaboração do detalhamento dos requisitos conforme eles se tornam necessários.
- Entregas incrementais – A melhor maneira de nos assegurarmos que estamos desenvolvendo o software corretamente é regularmente obter o feedback de nosso cliente. Métodos Ágeis sempre produzem entregas incrementais de software para o cliente.
- Planejamento iterativo e adaptação – Projetos ágeis valorizam o planejamento. Eles promovem planejamento em diversos níveis regularmente. Sempre o adaptando de acordo com os novos conhecimentos obtidos durante o avanço do projeto.
O que NÃO são Métodos Ágeis.
Várias pessoas utilizam o termo “Método Ágil” de forma errada, atribuindo como desculpa para utilização de más práticas de desenvolvimento de software. Passando o FALSO e ERRADO entendimento de que Método Ágil signifique:
- Sem documentação – A documentação produzida por projetos ágeis pode ser a mesma produzida por projetos tradicionais. A equipe ágil sempre questionará sobre a necessidade de tantos documentos, mas eles nunca deixarão de criar a documentação necessária como, planos, requisitos, design, e qualquer outro tipo de artefato que acrescente valor ao projeto.
- Sem planejamento – Projetos ágeis provêm mais comprometimento com o planejamento do que os projetos tradicionais. No início do projeto ocorre um planejamento de mais alto nível, que regularmente é revisado. Todas as iterações são planejadas. E a cada dia da iteração, ocorrem rápidas reuniões onde a equipe se organiza e planeja as atividades que serão realizadas no dia de trabalho.
- Sem requisitos – Primeiramente o cliente determina quais são os requisitos do software com baixo nível de detalhamento. Dando origem a lista de requisitos do software denominada Backlog. De acordo com as necessidades e andamento do projeto, os requisitos prioritários são detalhados e documentados.
- Sem controle de tempo e custos – Todo projeto ágil é realizado dentro de um período de tempo determinado, sendo assim, possui data de início e data de término. Como a maior parte dos custos de um projeto de software é relacionada ao tempo de pessoas, a definição do período de tempo determina os custos do projeto. Um dos mantras dos Métodos Ágeis é: “Entregaremos o maior valor possível ao cliente dentro das condições do projeto”.
- Desenvolvedores fazendo o que eles querem – O cliente tem total controle sobre o andamento de um projeto ágil. Ele é envolvido em todos os aspectos de planejamento, priorização, e situação do projeto. Se a equipe não estiver produzindo o que o cliente julga ter mais valor para o projeto, ele esta apto para redirecionar a equipe quando necessário. Cabe a equipe estimar o quanto de tempo será necessário para realizar as atividades priorizadas pelo Cliente.
Principais Benefícios dos Métodos Ágeis.
Existem várias razões pelas quais as empresas adotam os Métodos Ágeis (quando são compreendidas e implementadas corretamente) para agregar valor a seus negócios. Dentre as principais podemos citar:
- Software correto – O cliente está constantemente envolvido no projeto. Assim assegurando que o software que esta sendo desenvolvido é o que lhe retornará o maior valor desejado. A todo instante ele prove feedback para a equipe de desenvolvimento sobre o incremento de software que foi entregue. Com esse alto grau de envolvimento do Cliente em um projeto ágil, não há como ser desenvolvido software errado e que não traga o maior valor possível ao cliente.
- Qualidade – Métodos Ágeis sempre atribuem forte foco na qualidade do que esta sendo desenvolvido. Não se resumindo apenas nos testes de aceitação do Cliente, mas sim na adoção de práticas de desenvolvimento que garantam alta qualidade técnica.
- Prazos e custos – O fato dos projetos ágeis possuírem um período definido de tempo, determina que os prazos e custos raramente sejam violados. Caso o andamento do projeto não esteja seguindo o que foi planejado, os requisitos de menor valor ou baixa prioridade podem ser postergados ou retirados do projeto. Caso o período definido de tempo do projeto tenha a necessidade de ser estendido, isso ocorre com o total consentimento do cliente e de todos envolvidos no projeto.
- Alertas mais cedo – Como um projeto ágil é essencialmente uma série de mini-projetos bem definidos, os problemas podem ser identificados e resolvidos com maior antecedência, sem causar maiores danos ao andamento do projeto.
- Adaptação a mudança – As mudanças são inerentes aos negócios. Um projeto ágil pode se adaptar as mudanças de um mercado, uma empresa, ou um cliente, efetivamente melhor do que os projetos tradicionais.