Archive for September, 2009

[Dev in Rio 2009] Balanço do evento

Saturday, September 26th, 2009

Ufa… Depois de uma semana de correria para o fechamento do Dev in Rio finalmente estou conseguindo escrever um post!

Mesmo tendo sido idealizado, planejado e executado em pouco mais de 20 dias, o Dev in Rio 2009 foi excelente, um sucesso total! Conseguimos reunir em plena segunda-feira cerca de 400 pessoas para falar de desenvolvimento de software, se divertirem no Dojo e terem um dia de muita diversão que terminou no maior #Horaextra de todos os tempos.

O Dev in Rio 2009 começou na hora programada quando eu e meu amigo Henrique Bastos abrimos o evento. Rapidamente falamos sobre o evento e sobre como seria o nosso dia. Tratamos de como achamos importante a interação entre comunidades e aprender com pessoas especializadas em tecnologias diversas. Aproveitamos também para agradecer muito aos nossos patrocinadores, apoiadores, comunidades e amigos que nos ajudaram muito mais do que vocês possam imaginar.

Dev in Rio 2009 - Abertura
* Henrique Bastos e eu na abertura do Dev in Rio.

Abrindo os trabalhos, disparamos as duas trilhas do Dev in Rio 2009. No auditório principal, aconteceriam as palestras programadas, enquanto no foyer seria realizado o Coding Dojo.

O Coding Dojo é uma arena de programação organizada pela turma do Dojo Rio em conjunto com o Dojo@SP. A idéia é atacar problemas simples e lúdicos, utilizando técnicas de programação como Test-Driven Development e Modelagem SOLID. Este definitivamente foi o gol de placa do dia – o Dojo funcionou muito melhor do que nós poderiamos imaginar (exceto o Dojo de Java que não foi lá muito popular, tenho que admitir).

Dev in Rio 2009 - Coding Dojo
* Coding Dojo do Dev in Rio: 3 metros de código na parede!

Dev in Rio 2009 - Coding Dojo
* Galera participando do Coding Dojo do Dev in Rio.

A primeira palestra foi a do Ryan Ozymek, que entrou em cena com seu famoso pinguim para falar de sua experiência com software livre e a comunidade Joomla! Ele detalhou o funcionamento de uma grande comunidade de desenvolvimento e deu sua visão de empresário sobre como usar software livre para alavancar os negócios da sua empresa.

Logo depois, Guilherme Silveira e Nico Steppat trataram de um tema bastante polêmico: Java está morto? Abordaram os fatos de que existem muitas coisas além da linguagem no mundo Java e que apesar da linguagem estar “caducando” a JVM ainda pode ser muito útil.

Depois do almoço, Fabio Akita não deu trégua para quem estava com sono e fez uma excelente apresentação sobre o ecossistema Ruby on Rails com direito a videos, screencast e bastante informação além do código. Ele não sabe mas tirou o fôlego das meninas da tradução simultânea!

Na sequência, o (praticamente carioca) Jacob Kaplan-Moss fez sua apresentação sobre Django, o framework web para perfeccionistas desenvolvido em Python. Ele falou dos conceitos e valores que guiaram o desenvolvimento do projeto, além de mostrar um pouco de código para dar uma idéia ao público de como usar o Django na prática.

A última palestra do dia foi feita por Jeff Patton, que falou sobre desenvolvimento de produtos com métodos ágeis. Utilizando como narrativa a história de um projeto realizado em conjunto com Obie Fernandez, diversos problemas comuns no desenvolvimento de software (e suas soluções) foram destacados.

No final, nosso grande amigo Vinicius Manhães Teles liderou um bate-papo entre palestrantes, comunidades e o público. Tivemos a impressão de que se não controlassemos o relógio a conversa teria varado a noite, pois não faltavam assuntos e perguntas interessantes. O público participou bastante e foram levantadas questões como empreendedorismo e polêmicas como a estúpida regulamentação da profissão de analista de sistemas.

Dev in Rio 2009 - Discussão
* Discussão liderada por Vinicius Teles. E antes que alguém pergunte, não, não é o cara do Myth Busters que está na foto, é o Jeff Patton.

Enquanto isso tudo rolava, eu, Henrique e o Gustavo Guanabara e a Flavia Freire (jornalista da Arteccom) passamos o dia gravando um gigantesco Podcast do evento, entrevistando o pessoal e filmando os bastidores. Falamos com palestrantes, patrocinadores e participantes sobre todos os assuntos abordados nas palestras! Guanabara, termina logo de editar esse treco porque eu tô ansioso pra ouvir! :) Veja o “making of” de alguns dos Podcasts com o Ryan Ozimek, com Guilherme e Paulo Silveira e com Fabio Akita e Marcos Tapajós. Assim que finalizarmos as edições vamos divulgar todo esse material.

Dev in Rio 2009 - Gravação do Podcast
* Guanabara gravando Podcast com Fabio Akita e Marcos Tapajós (e datalhe: ao fundo Guilherme Silveira e Paulo Silveira fazem Pair Programming).

Como o evento foi realizado numa segunda-feira, fechamos o evento convidando todos os participantes (ao som de “Estamos todos bêbados” do Matanza e com coreografia de Sylvestre Mergulhão e Henrique Andrade) para uma edição épica do #Horaextra no Lapa 40º. A entrada era gratuita para quem apresentasse o crachá do Dev in Rio 2009 e assim realizamos o maior #Horaextra de todos os tempos:


* Veja mais videos do Dev in Rio 2009.

Tenho certeza de que esse post não consegue transmitir 0,001% do que foi o Dev in Rio 2009 e a minha felicidade de ter conseguido realizá-lo. Gostaria de agradecer mais uma vez o apoio fundamental de toda a galera da Globo.com que viabilizou o evento, dos nossos patrocinadores Caelum, Locaweb e D-Click e de todos que nos apoiaram de alguma forma: Associação PythonBrasil, Fábrica Livre, Myfreecomm, OpenSourceMatters, Arteccom, DojoRio, Dojo@SP, #Horaextra, PythOnRio, RioJUG, RubyInside Brasil, Guanabara.info e todas as pessoas que participaram do Dev in Rio 2009. Sem vocês nada disso teria sido possivel.

Dev in Rio 2009 - Galera no final
* Participantes da mesa redonda do Dev in Rio.

Se você não foi no Dev in Rio, tenho duas coisas para te dizer: (1) você perdeu uma farra das melhores mas (2) em breve vamos disponibilizar os vídeos das apresentações para amenizar sua dor. :)

E que venha 2010!

Colaboração e Open Source dentro da empresa

Thursday, September 24th, 2009

O Github sem sombra de dúvidas mudou a forma como funciona a colaboração em projetos Open Souce. Já existiam alguns websites de colaboração nesse sentido (e até bem conhecidos) como o SourceForge, Google Code, Savannah e vários outros. Todos eles tem várias qualidades mas o Github na minha opinião foi o que conseguiu ser o mais bem sucedido: eles uniram uma interface bem agradável a uma rede social de programadores e o sistema de controle de versão Git.

Colaborar com outros projetos é bem fácil no Github, basta fazer um fork do projeto que eu pretendo colaborar, fazer minhas modificações e depois um “pull request” para o dono do projeto avaliar e integrar (ou não) o meu código ao dele. Antes do Github não funcionava muito diferente disso mas o que ele fez de bom foi facilitar esse fluxo e criar uma rede social bem interessante em torno desse mundo.

Isso é bem diferente de como as empresas normalmente funcionam. No caso da Globo.com, por exemplo, todos os repositórios sempre estiveram amontoados nos servidores CVS e Subversion e consequentemente “escondidos” (pouco visíveis) de possíveis colaboradores. Alguns até tinham permissão de commit restrita para um pequeno grupo e o processo de colaboração era ainda mais difícil. Não dá nem para abrir um branch seu, você tem que fazer as modificações localmente e mandar um patch por e-mail, e o merge geralmente não é muito fácil de fazer quando você tem um grande fluxos de merge para lá e para cá. Imagina então quando você trabalha na versão “v1″ do código e enquanto você produz a “v2″ um outro desenvolvedor pede merge antes de você? Era preciso esperar o merge terminar para dar checkout da versão nova e ficar mais uma vez fazendo o inferno do merge.

No início desse ano resolvemos experimentar usar o Gitorious, que é uma ferramenta similar ao Github porém Open Source e que você pode instalar num servidor da sua empresa. Isso tinha 2 objetivos: (1) criar uma cultura de “enterprise” Open Source e (2) facilitar a colaboração em projetos em que vários times trabalham e commitam ao mesmo tempo.

No início foi um inferno e houve uma rejeição muito grande de muita gente. O modelo de trabalho com o Git é bem diferente do que com CVS e Subversion. Você tem branches (e clones – que é um conceito um pouco diferente) que podem ser locais ou remotos, commits locais que não vão direto para o servidor e pulls/pushes. As pessoas tendem a fazer relações do tipo “o push é o que manda as coisas para o servidor, então ele equivale ao commit”. Mas então o que é o commit do Git? Enfim, não dá pra trabalhar pensando assim, é preciso dar um reset e entender a arquitetura desses sistemas de controle de versão distribuídos para entender que faz sentido sim ter um commit e só depois do push que o código está no repositório (no remoto, porque no local já estava). :)

Também foi difícil aprender a trabalhar com merges. No modelo antigo você evita fazer merges o máximo possível porque o trabalho para fazer isso é enorme. Geralmente você só faz quando acabou de fazer tudo para ter trabalho uma vez só. Ainda bem que existem ferramentas para ajudar (como as ferramentas das próprias IDEs) senão seria complicado. Se você trabalha da mesma forma com o Git geralmente vai se dar mal, porque não existem (não existiam mas estão começando a melhorar) as mesmas ferramentas de merge visual do CVS ou Subversion, e era um parto para fazer a coisa toda funcionar após fazer um merge de uma semana de fork. Com o Git funciona ao contrário: como o merge é automático (na maioria dos casos ele consegue se virar) então a estratégia é fazer merge toda hora, várias vezes por dia, o máximo que der.

Depois de alguns meses de “fricção” hoje já dá para ver um monte de frutos começando a aparecer. Por exemplo, no último sprint do meu time nós precisavamos usar um cliente Python para acessar a engine de busca da Globo.com. Como esse cliente era novo tinha uma série de problemas pequenos que precisavam ser resolvidos, mas o time que é responsável pelo projeto estava com vários compromissos e demoraria 2 semanas para trabalhar nisso. Então o Bernardo e o Andrews decidiram fazer um clone no Gitorious para contribuir com o projeto do time de busca, e eles não só resolveram os problemas como devolveram o código refatorado e com a cobertura de testes bem melhor. O outro time rapidamente integrou o novo código ao projeto e gostou tanto do trabalho deles que eles viraram commiters e agora podem fazer as modificações que forem necessárias em colaboração com o time de busca. Exatamente como funciona no mundo Open Source.

Além desse exemplo, no projeto que estou trabalhando (que é um framework para sites de publicação de conteúdo) temos vários times trabalhando no mesmo código ao mesmo tempo. Nesse momento tem cerca de 10 clones do projeto no nosso Gitorious e talvez cerca de 10 times trabalhando usando o mesmo código para fazer seus “add-ons”. O Git facilita o trabalho dos times para atualizarem constantemente sua base de código com o que entra de novo no branch master do mainline (o repositório principal do projeto) e o Gitorious torna isso tudo mais visível para todos.

Enfim, as vantages que nós passamos a ter com o Git e Gitorious são várias:

  • Todo mundo pode ver facilmente os projetos que existem e quando novos projetos são criados;
  • Todo mundo pode ver o que todo mundo está fazendo e em que estão trabalhando;
  • Todo mundo pode facilmente criar e gerenciar seus projetos (sem precisar do Sys Admin);
  • É bem facil de navegar nos projetos, ver e pegar código dos outros;
  • Todo mundo pode criar seus clones de repositórios para trabalhar em cima do seu código e do código dos outros;
  • Todo mundo pode colaborar de volta sem precisar de um processo complicado para isso;
  • É mais fácil de fazer merges constantes e gerenciar múltiplas colaboracoes simultâneas;
  • Fora as outras features interessantes que o Git tem e os sistemas de SCM antigos não como o stash, clones, merge automático e por aí vai.

Só para dizer um ponto negativo, a documentação de usuários do Git não é das melhores (mas tem melhorado bastante) e alguns comandos não são tão intuitivos (como deletar um branch remoto), mas nada que você não descubra e que não se acostume com o tempo.

Aconselho fortemente a todo mundo que puder que faça isso. Instale o Gitorious e fomente a colaboração entre os desenvolvedores da sua empresa! Se você estiver com muita grana também pode dar uma olhada no Github Firewall Install, que deve ser bem legal mas também é bem caro.

[Dev in Rio 2009] Fotos e vídeos do evento

Wednesday, September 16th, 2009

O Dev in Rio 2009 foi um sucesso total! Disponibilizamos nossas fotos e vídeos nos seguintes locais:

Eu e Henrique acabamos de terminar um vídeo super especial de recordação do maior #Horaextra de todos os tempos! Espero que vocês gostem:

Rails Summit 2009, aí vou eu (ou melhor, aí vamos nós)!

Wednesday, September 2nd, 2009

Rails Summit 2009Nos dias 13 e 14 de outubro vai rolar em São Paulo a Rails Summit 2009, um dos principais eventos de desenvolvimento de software do Brasil organizado pelo Fabio Akita e a Locaweb!

Ano passado eu fui e foi sensacional e esse ano promete ser ainda melhor! A programação está bem diferente do ano passado e conta com algumas novidades como Bryan Liles, Gregg Pollack, Jason Seifer, Pratik Naik, Richard Kilmer, Matt Aimonetti, além do pessoal que veio ano passado como Chad Fowler, David Chelimsky, Obie Fernandez e brazucas feras demais como o Fabio Kung, Marcos Tapajós, Nando Vieira, Vinicius Teles, Leonardo Borges, Carlos Brando e por aí vai. Enfim, não dá para perder de jeito nenhum!

Nós cariocas (eu, Henrique, Rafael, Sylvestre, Tapa, Vinicius, Ramon e quem mais for) vamos todos ficar no mesmo hotel pra fazermos a maior bagunça! Seguindo o exemplo do Vinicius Tapajós no ano passado, estamos divulgando o hotel pra que todo mundo possa ir pra lá e aumentar a bagunça. :)

Ficaremos hospedados no Holiday Inn Parque Anhembi que é dentro do Centro de Convenções Anhembi (o mesmo local do evento). O telefone para reservas é 0800-770-0858. Não é o hotel mais caro e nem o mais barato mas é pertinho do evento e fica bem fácil pra todo mundo. Nos vemos lá!