terça-feira, agosto 18, 2009

Agile está morto! D-us salve o Agile!

Morte do Agile? Será que o José Papo enlouqueceu, alguns devem se perguntar? Não enlouqueci não! Na realidade, o que pretendo argumentar aqui é minha opinião (reforçada por outros papas do desenvolvimento de software, como o Ivar Jacobson) de que hoje já deveríamos considerar a distinção entre Agile e “Engenharia de Software Tradicional” como algo do passado. Na realidade, o que argumento é que os princípios e práticas pregados pelos agilistas são a Engenharia de Software da atualidade e do futuro próximo.

Ainda em muitos lugares Agile é visto como uma novidade, mas a realidade é que se você deseja realizar projetos de qualidade e com alta produtividade só conseguirá realmente utilizando as práticas adotadas pelos agilistas.

Assim como o Jacobson, já começo a ver as guerras metodológicas como coisas do passado, brigas de egos entre metodologistas... he, he! Em vez de ficarmos falando de uma metodologia ou processo versus outro devemos focar nos melhores princípios e práticas que nos trarão vantagem competitiva no desenvolvimento de produtos de software com qualidade.

Os princípios já estão claros quais são para as novas organizações de desenvolvimento de software: Os princípios do Manifesto Ágil.

Já as práticas podem mudar e devemos usar aquelas mais interessantes para cada projeto. Se o projeto é complexo e tem um modelo de entidades com um negócio muito rico porque não usar a prática de desenvolver um modelo de domínio, como descrito no FDD? Se temos uma equipe que ainda não se conhece bem porque não usar pair programming do XP?

Outras práticas deveriam ser obrigatórias, pois garantem a qualidade do produto. Desenvolver um novo sistema sem testes unitários automatizados é assinar uma sentença de morte para o projeto antes mesmo dele terminar.

Uma outra notícia interessante que mostra ainda mais essa guinada das empresas para o uso do Agile como o padrão da Engenharia de Software de nossos tempos: Na versão 7.5 do Rational Unified Process é possível encontrar uma série de práticas, obrigatórias ou opcionais. O fundamento do RUP se chama “Agile Core”. Este contém as práticas de desenvolvimento iterativo, planejamento de projetos em dois níveis, Time completo, Test-Driven Development e Integração Contínua.



Essa nova versão reforça ainda mais duas mensagens:

- A primeira é que o RUP está ainda mais Ágil e de forma ainda mais clara.
- E a segunda é que se você ainda usa os artefatos do RUP, mas faz tudo em cascata, sem testes unitários automatizados e sem integração contínua tenho que reforçar a má notícia: você não está usando o RUP!!! Portanto, não culpe o processo ou metodologia pelo fracasso do projeto caso não esteja seguindo seus princípios e práticas fundamentais.

Uma observação importante para aqueles que não entenderam a analogia que fiz no título de meu post. A analogia é com a famosa frase dita quando um rei morre: "O Rei está morto! D-us salve o Rei!". Apesar de parecer apenas definir a sucessão do rei para seu descendente, na realidade esta frase possui significado mais profundo.

Esse significado foi magistralmente detalhado no livro sobra história das idéias no período medieval do historiador judeu Ernst Kantorowickz de título "Os Dois Corpos do Rei". A frase na verdade é um reforço da idéia existente no período medieval de que o rei tinha dois corpos, um físico e outro espiritual. O corpo físico podia morrer, mas o corpo espiritual sempre vive. Essa é analogia que faço então com Agile. Agile, como nome e como corrente, pode morrer. Mas Agile como conceitos, princípios e práticas fundamentais da engenharia de software ficará ainda por muito tempo incorporado na engenharia de software.


Veja as Estatísticas