A Locaweb vem usando metodologias ágeis de desenvolvimento há quase um ano e o resultado tem sido tão positivo que decidimos compartilhar nosso conhecimento e nossas experiências com desenvolvimento ágil com todos os desenvolvedores parceiros da Locaweb.
Vamos trazer periodicamente dicas e informações sobre metodologias ágeis de desenvolvimento, que hoje são usadas por empresas de todo o mundo, sempre com muito sucesso. Algumas empresas adeptas à agilidade são Yahoo, eBay, Amazon, entre outras, além de inúmeras empresas de desenvolvimento que fazem sistemas sob medida para clientes. Aliás, as metodologias ágeis de desenvolvimento nasceram nesse ambiente de desenvolvimento de sistema sob medida e só depois foram adaptadas para empresas que desenvolvem sistemas para serem usados por muitas pessoas, como Yahoo, eBay, Amazon e a própria Locaweb.
Nesse primeiro post vamos expor as razões que podem levar alguém a pensar em mudar sua metodologia de desenvolvimento.
As metodologias ágeis são uma possível resposta a algumas ânsias muito comuns em projetos de desenvolvimento de sistemas e sites:
- ao apresentar o sistema pronto para o cliente ele diz que não era exatamente isso o que ele tinha em mente;
- cliente muda os requisitos várias vezes durante o projeto;
- cliente pergunta toda semana quanto tempo falta para ficar pronto;
- para cumprir prazo, só cortando funcionalidades;
- para cumprir o prazo, só sacrificando a qualidade.
Em um projeto tradicional de desenvolvimento de sistemas temos 5 grandes fases:
- Definição: nessa fase são definidos os requisitos do projeto. Normalmente isso é feito a partir de conversas com o cliente para levantar todas as suas necessidades;
- Projeto: com os requisitos em mãos, começamos a desenhar as telas, as estruturas de dados e os planos de testes;
- Codificação: é a fase “mão na massa”, quando a programação é de fato feita;
- Testes: para garantir que a codificação tenha sido feita apropriadamente;
- Implementação: é o momento de colocar o sistema em produção.
Essa metodologia de desenvolvimento é conhecida como “cascata” (waterfall em inglês), pois cada fase depende da fase anterior para acontecer. Uma conseqüência desse método de desenvolvimento em “cascata” é que quanto mais avançado estiver o desenvolvimento de sistema, maior será o custo de alterar o projeto, custo esse que pode vir de diferentes formas, tais como corte de funcionalidades, corte de qualidade de desenvolvimento, aumento de prazos e conseqüente aumento de valores.
Mas qual é o problema com as metodologias tradicionais de desenvolvimento?
Elas supõem que o futuro é bem definido e conhecido e, consequentemente, que os requisitos não mudarão ao longo da vida do projeto. Os projetos de desenvolvimento de sistemas e sites podem levar meses e é difícil garantir que nada mude nesse período em relação aos requisitos que levaram à necessidade desse sistema ou site.
Quando se supõe que o futuro é bem definido e que os requisitos não mudarão, não haverá necessidade de interação entre o cliente e a equipe de desenvolvimento. Contudo, sempre pode acontecer de o cliente aparecer com uma necessidade de mudança do projeto e , após isso acontecer algumas vezes, é natural implementar contratos entre cliente e desenvolvedor visando salvaguardar os requisitos. São documentos, processos e controles de horas que garantem que se algo mudar na especificação do projeto, alguém vai pagar por essa mudança, que sempre é vista como algo negativo para o projeto.
E por que tem que ser assim? Não seria possível ter um custo de mudança que não crescesse muito ao longo do projeto? Afinal, mudanças em projetos são inevitáveis pois o mundo à nossa volta está em constante mudança.
As metodologias ágeis de desenvolvimento surgiram exatamente para permitir maior flexibilidade no processo de desenvolvimento de sistemas e minimizar o custo de mudanças ao longo dos projetos.
No próximo post falaremos sobre os princípios que norteiam o desenvolvimento ágil de sistemas. Fiquem ligados!