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! :)

Related Posts Plugin for WordPress, Blogger...
Publicado em por Aurelio Jargas e arquivado em Software com as tags , , , .

16 respostas a Programação ao vivo

  1. Diego disse:

    Fala Aurélio! Apesar de não ter comentado acompanhei as suas atualizações do Money Log via Twitter e estou com o beta em mãos. Irei testar e depois comento os resultados.

    O moneylog tem sido o principal responsável pelo meu controle financeiro nos últimos 2 anos.

    Obrigado e parabéns pelo excelente trabalho:)

  2. Felipe Diesel disse:

    Uma sugestão que te dou é experimentar o git e o http://github.com. O git por ser uma ferramenta fantástica e você ainda pode fazer commits offline! Veja só! e o GitHub por ser ainda mais social que o GoogleCode. E troquei e vale a pena.

    Veja isso: http://whygitisbetterthanx.com/

    Abraço e parabéns.

    • Vinícius disse:

      O ponto que o Aurélio citou sobre o Google Code é muito importante, Google Account muita gente tem e pode participar mais facilmente. GitHub ou BitBucket, para git e hg respectivamente, são basicamente para programadores.

    • Valeu pela indicação Felipe! Tenho ouvido falarem muito sobre este tal de Git, parece ser muito bom mesmo.

      No momento não tenho como investir tempo em aprendizado de um sistema novo e numa migração destas, mas vou voltar reler teu comentário quando o SVN me tirar do sério :)

      Abraço!

  3. Ae Aurélio, se tu quiser integrar tudo “ao vivo” use o friendfeed cara, á show de bola http://friendfeed.com lá você coloca tudo que é feed :D

    Espero que goste da idéia!

  4. Sérgio disse:

    Acho que tá na hora de tomar vergonha na cara e organizar-me.

    Identifiquei-me
    “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.”

    Forte abraço, Sérgio.

  5. Roger Leite disse:

    Quando comecei a ler o post, logo percebi que o git mais http://github.com/ é a sua cara! Pra falar a verdade, até me assusto por vc não usá-lo. Como o Felipe disse, o git é sensacional, entre um monte de coisas, permite commit “offline”.

    Sobre o que o Vinicius falou, de ser mais “social”, no github vc consegue criar páginas para o projeto, por exemplo: http://guilhermechapiewski.github.com/correios-api/

    Acho que vale a pena dar uma “testada”! :D

    Sucesso!

    • Massa o lance de poder fazer o site do app já no github. No Google Code é um pouco mais restrito, apesar de que o Wiki às vezes é mais indicado pra haver colaboração.

      Agora, esse lance de commit offline não me faz muito sentido. Se estou trabalhando, estou na internet pois preciso dela. Sem internet não tem trabalho, então não quero nem ver códigos de programação na minha frente! :)

      Valeu pela dica Roger!

  6. Thiago disse:

    Você pode tentar usar o mercurial, um sistema de controle de versões distribuido tão bom quanto o git. E o bom é que o google code agora dá suporte a ele. Veja mais aqui http://google-code-updates.blogspot.com/2009/04/mercurial-support-for-project-hosting.html

  7. Uma vez que estão puxando a brasa para o GIT, vou puxar a brasa para a minha sardinha, ou seja, para o Bazaar. Na minha opinião é melhor que o SVN,. git, mercurial,… e o melhor de tudo feito em PYTHON (só por isso já deverias te interessar por ele, Aurélio ;)

    O site do sourceforge melhorou muito. Ele tem um esquema de feeds parecido com o do google: http://sourceforge.net/projects/gmousetool/.

    Outro site muito bom é o launchpad, da Canonical. E integra-se maravilhosamente bem com o Bazaar.

    Programar mais ao vivo? Faz o seguinte: Coloca uma webcam na tua máquina, conecte-se em um messenger durante o desenvolvimento e o pessoal vai te falando, na hora, corrige isso, corrige aquilo. Ah, bota essa feature.. tira aquela…

    Falando sério, acho que já estás em um ponto bom de interatividade. Se for muito interativo, muito “ao vivo”, acho que isso te distrairá.

    Ah, depois de um tempão que volto ao site (só leio os feeds). O design está muito bonito. Parabéns.

    • Oi Marcio,

      Sabe que não ando mais tão apaixonado pelo Python como eu era antigamente? Esse esquema de Python 3, quebra de compatibilidade, sei lá, me deu uma esfriada. Estou mais curtindo um JavaScript ultimamente.

      Webcam eu não curto, e neste caso, concordo contigo que interatividade demais acaba é atrapalhando o fluxo do raciocínio.

      Valeu pela opinião!

  8. André Taiar disse:

    Eu utilizo o Git + Github e o Google Code.
    Gosto dos 2 mas prefiro o Github.

    E já estou utilizando a versão nova do Moneylog desde que ele aceita diversos arquivos com lançamentos. Muito bom mesmo! (Peguei via SVN).

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>