02 setembro 2007

Beta eterno

Quem usa Gmail? Alguém já parou pra se perguntar porque diabos existe a palavra "beta" escrita na logomarca deles?



Que relação isso teria com desenvolvimento ágil e com a Qualidade do processo de software?

O Gmail foi pra mim o primeiro contato com interfaces AJAX e outros conceitos ligados à Web2. A interface do sistema é mais agradavel do que muuuuitos dos programas para desktop com que estamos acostumados, apesar das várias limitações inerentes ao modelo web. Quem usa o Gmail sabe: não tem nem como comparar com outros webmails, simplesmente não tem.

E o "beta", pensou a respeito? Normalmente se usa essa palavrinha para indicar que uma dada versão de um programa está em fase de testes, experimental, ainda em amadurecimento. Indica que não se deve confirar muito no sistema, pois ainda é instável.

Ora, o Gmail não está em fase experimental nenhuma, e nem é instável, sabemos muito bem disso. Em fase de testes sim. O sistema está e sempre estará em fase de testes, mas não com o significado normalmente usado pelas metodologias tradicionais.

Essa "etiqueta" na marca do site, nesse caso, significa Qualidade. É como uma medalha pregada no peito de alguém. (Hoje em dia, os broches na lapela são mais comuns :-) )


Essa marca denota Qualidade uma vez que reconhece dois princípios fundamentais das metodologias ágeis:

* Melhoria contínua;
* Economia;

Ao reconhecer que o Gmail está "em manutenção" até hoje, o Google está praticamente dizendo que o sistema está em processo de eterna melhoria. É o reconhecimento de que um sistema de informação como o Gmail NUNCA ficará pronto. Sistema nenhum jamais ficará pronto, e é por isso que não faz muito sentido definir o escopo como ponto de contrato em projetos de software. (Eu sei, eu sei. Mal necessário...)

O princípio da economia diz que o desenvolvimento de software deve ser orientado de modo a trazer o maior retorno do investimento, o mais rápido possível. Isso quer dizer que um sistema de software precisa entrar em produção o mais rápido possível, para se tornar útil logo, e começar a recompensar o investimento feito.

Criar as condições para que um sistema entre "em produção" precocemente, em modo "beta", é uma estratégia bem mais efetiva do que tentar especificar todas as funcionalidades detalhadamente, e esperar o sistema "ficar pronto" para começar a usá-lo. O sistema nunca ficará pronto.


Olhando desse modo, é melhor tratar o desenvolvimento de software como um processo de manutenção, ao invés de compará-lo a um processo de construção. Desenvolver a primeira funcionalidade de um sistema é como desenvolver a última. Iniciar um novo projeto é como dar manutenção em um sistema vazio.

O desenvolvimento de software é um processo mais parecido com o aprendizado que com a engenharia civil. Quanto antes se estabelecer o diálogo entre desenvolvedor e usuário final, melhor. Portanto crie logo as condições para implantar seu sistema, mesmo que ele ainda não esteja "pronto".