Monday, October 17, 2005

Metáforas e analogias em software

Acho que se fizermos uma pesquisa sobre que práticas de XP são mais utilizadas ou fáceis a metáfora tem grandes chances de ficar segurando a lanterna. 8 em cada 10 pessoas (aviso logo que estou chutando) acham que sua aplicação é questionável. Porém, a grande surpresa é que elas estão sim utilizando metáforas o tempo todo para desenvolver software.

A informática é um campo construído sobre o abstrato e virtual. Metáforas são um excelente mecanismo para entender estas peças abstratas e muitas delas têm sido historicamente usadas com sucesso. Hoje em dia falamos naturalmente de 'área de trabalho', 'fluxo de dados', 'rede', 'pool de recursos', 'pipes (canos)', 'crawlers' ou outros termos.

Na minha opinião a grande dificuldade de se usar a metáfora é saber elaborar uma que seja útil e duradoura. Isto dificulta, mas não impede, seu papel como ferramenta de comunicação. Além disso, muitas das metáforas que usamos acabam nascendo naturalmente durante o processo. Seja em uma conversa informal entre pares ou durante a escrita de um pedaço de código.

Outro perigo eminente é o risco da metáfora ser sobre-utilizada, ou seja, forçada para além de onde ela é aplicável. Em alguns casos isso é detectável, pois a coisa começa a ficar um pouco ridícula, em outros casos a fronteira pode não ficar clara e levar a decisões incertas. Há pouco tempo hove uma discussão na lista de XP sobre metáfora, destaco uma mensagem de Tim Haughton em que ele relata uma metáfora bem sucedida que foi sobre-utilizada por alguns.

Como tudo em XP, a utilização da metáfora é algo pequeno e pontual que influencia no todo e, talvez por isso, fica invisível a muitos olhos. Eu como xispista acredito que o todo é maior que a simples soma das partes. É assustadora a diferença que as interações entres as partes podem fazer nesta equação.

Friday, October 14, 2005

Adote XP do jeito XP

Há algum tempo -- não sei bem certo quanto, mas o suficiente para que eu possa dizer 'há algum tempo' -- venho acompanhando a evolução de XP como processo de desenvolvimento. Muitas vezes as práticas são um pouco polêmicas, precisando de um pequeno trabalho de convencimento para vencer a inércia inicial. Uma parte das pessoas acha que é tudo uma bagunça só, que coisas assim tão simples não podem dar certo. Outra parte está à procura de alternativas a processos um tanto quanto cerimoniosos. Estas últimas pessoas estão inclinadas a mudar, mas talvez não queiram arriscar tudo jogando o antigo processo fora e começando a usar um 'processo novo que estão usando por aí' do zero.

Para ambas as partes, meu conselho é

Adote XP do jeito XP.

Se você quiser apenas testar uma abordagem metodológica nova, se já se decidiu por mudar o processo antigo ou se não possuía nenhum processo e quer adotar algum, o jeito XP é fazer tudo incrementalmente. Começar com partes pequenas e adicionar outras parte também pequenas gradativamente, deixando que a interação entre elas gere um todo maior que a soma das partes. E fazer isto tudo 'na vera' e sempre pensando por que uma coisa ou outra não está dando resultados em pouco tempo.

Sim, pouco tempo. As práticas de XP foram especialmente projetadas para que apresentassem resultados após pouco tempo de adoção e, além disso, um fator decisivo para a adoção é que elas são recompensantes também em termos psicológicos. Você simplesmente se sente bem de ver a 'luzinha' verde que indica os testes passando, de saber que poderá refatorar o que não estiver agradável, de poder trabalhar lado a lado com todos os seus pares e de todos eles conhecerem tanto do sistema quanto você.

Dan Bunea publicou uma mensagem na lista de XP que esclarece um pouco essas dúvidas. É interessante ler também o restante das mensagens relacionadas, a discussão por lá está bastante produtiva. Meu resumo da idéia dele é: convença a você mesmo, convença a seus pares, convença a gerência e, finalmente, convença o cliente. E faça tudo isso praticando, colhendo os frutos eXtremamente ráPido.

Você já começou a acolher a mudança?