Programação ao vivo

Programar para mim é uma paixão. Eu adoro criar códigos. Também gosto de testá-los, melhorá-los, formatá-los, comentá-los e tudo mais que possa ser feito para tentar atingir a inatingível perfeição. Trabalho, lapidação, polimento. É um desafio e um prazer ao mesmo tempo. É arte.

Quando eu comecei a programar, a rotina de atualizar um programa era sentar e ficar lá, codificando, codificando, codificando. Dias, semanas, meses passavam. Quando finalmente o programa parecia pronto, sem nenhum problema ou deficiência (ah tá…), era lançada uma versão nova ao público. Então o pessoal baixava e testava, e alguns investiam seu tempo para mandar um email com comentários e sugestões. Assim apareciam novos itens para implementar/arrumar/melhorar em uma futura versão. E o ciclo se repetia indefinidamente, versão após versão.

Hoje percebo que tudo está mais ágil, dinâmico, imediato, online, colaborativo, participativo, interativo. Primeiro os blogs, depois as redes sociais, e agora até a mídia tradicional começa a experimentar esta novidade.

E onde se encaixa a programação solitária neste novo cenário?

Eu não sei a resposta, mas estou fazendo experimentos, tentando encontrá-la.

Primeiro comecei a postar no blog anúncios de cada versão nova de meus programas. O pessoal utilizou a área de comentários para dar sua opinião, sugestões e relatar problemas que encontraram. Com isso consegui aumentar o retorno (feedback), recebendo bem mais opiniões do que normalmente recebia por email.

Depois mudei meus projetos do SourceForge para o Google Code. Além de ser rápido e simples, o site do Google é mais “social”. Tem Wikis, área de comentários, SVN público e Feeds para monitorar as alterações. E como muita gente já tem conta no Google (ou Gmail) e geralmente já está logado, isso facilita muito a interação.

Uma vez no Google Code, comecei a usar o SVN para o controle de versões. Até então eu usava o cVS (cp Versioning System), que consistia em fazer uma cópia do arquivo de tempos em tempos quando eu achava que era hora de guardar o progresso atual :)

cp txt2tags.py txt2tags.py.1
cp txt2tags.py txt2tags.py.2
cp txt2tags.py txt2tags.py.3
...

Nada profissional, né? Mas fazer o quê, dava preguiça de configurar CVS. Depois veio o SVN mas eu também tive preguiça de aprender e instalar e configurar e… Ainda bem que veio o Google e entregou tudo prontinho pra eu usar :)

Uma grande vantagem do SVN, foi a de me forçar a descrever cada alteração quando mandava código novo para o servidor. Logo percebi que meu atual esquema de programar horas e mandar tudo no fim do dia não iria dar certo. Tinha tantas alterações que eu nem lembrava mais o que era, ficava uma confusão. Hoje faço apenas uma alteração por vez, a descrevo (texto este que serve para o changelog) e mando para o servidor. Parece mais burocrático, mas ao meu ver aumentou a qualidade do código, pois eu foco em apenas um problema por vez.

Antes era normal abrir o editor para arrumar um probleminha, daí ao olhar outra parte do código lembrava de outro problema, daí durante os testes tinha alguma ideia de funcionalidade nova, daí ia mudar alguma coisa na interface, daí… …daí eu já nem sabia mais o que eu tinha conseguido terminar e o que tinha parado no meio do caminho. Caos. Hoje sou feliz: edita, descreve, commit. Próximo.

Outra vantagem deste esquema, é que o código no SVN está sempre atualizado. Em vez de uma mega atualização na madrugada, durante todo o dia pequenas correções vão acontecendo. O código fica mais vivo, mais ativo. E o Google Code ainda tem uma página que lista estas mudanças (veja as recentes do MoneyLog, por exemplo) ou você ainda pode assinar o feed e saber de cada alteração que está acontecendo no programa.

Esse esquema do feed é o meu preferido. O usuário pode assinar o Feed do SVN (veja o do MoneyLog, por exemplo) e ficar sabendo rapidamente quando uma novidade é implementada. Isso é praticamente “ao vivo”, pois o código que eu acabei de fazer já vai lá pro servidor, entra no feed, o usuário lê e já pode dar um “svn update” e ter o código fresquinho em sua máquina. Tudo isso em uma questão de poucos minutos. Incrível!

Não sei se você já percebeu, mas coloquei aqui no menu lateral do blog uma caixinha Nerdeando Freneticamente que é atualizada assim que eu mexo em qualquer projeto lá do Google Code. É um feed global para todos os projetos, uma mão na roda.

O passo mais recente em direção à programação “ao vivo” de verdade, comecei esta semana, no twitter. Nos últimos dias fiz algumas alterações no MoneyLog, que já estava há um ano e meio se receber atenção, tadinho. Quando eu mandava para o servidor alguma alteração substancial, anunciava a novidade no twitter com a tag #moneylog. Assim, quem é usuário do programa já podia atualizar a versão beta e ter imediatamente em sua máquina o código recém-atualizado. A pessoa já pode testar, dizer o que achou e avisar de problemas. Eu já posso imediatamente arrumar o problema e mandar para o servidor e assim o ciclo continua, numa interatividade digna de 2009.

Agora estou aqui, no blog, fazendo este texto para te contar tudo isso e te convidar para participar dessa brincadeira!

Se você já tem conta no twitter, siga-me (@oreio) para ficar sabendo em tempo real das novidades dos programas (e do livro! Mas isso falo daqui a pouco). Pode usar o próprio twitter pra dar sugestões sobre os programas, relatar problemas e tudo mais.

Se você não é usuário do twitter, não tem problema. Você pode acompanhar o que escrevo lá seguindo o meu feed do twitter. Se quiser ser mais específico, e seguir somente o que é comentado sobre o MoneyLog, por exemplo, siga este feed.

Especialmente se você é usuário do MoneyLog, há muitas novidades na versão BETA, que estou codificando agora nesta semana. Participe! Baixe o programa, use com os seus dados (que agora podem estar num arquivo TXT separado!) e me conte o que achou. A versão nova oficial deve sair dentro de alguns dias (ou semanas, sabe como é). Enquanto isso o beta vai sendo atualizado.

Então, agora não sei qual o próximo passo para a interação/colaboração total. Aceito sugestões! :)

— EOF —

Gostou desse texto? Aqui tem mais.