Categories
Etc. Notícias

Até a próxima, Globo.com!

Não imaginava que isso fosse acontecer tão cedo, mas 2009 é o meu último ano na Globo.com.

Meu sonho aqui era ajudar a construir uma coisa maior do que eu e ter uma história para contar. Tenho muito orgulho de ter contribuido para mudar uma empresa tão tradicional como a Globo e de ter trabalhado diretamente num dos maiores exemplos de mudança organizacional e adoção de metodologias ágeis do Brasil. Trabalhei nos produtos de maior audiência da Internet brasileira, entreguei dezenas de projetos bem sucedidos, quebrei diversas barreiras e ganhei o respeito de dezenas de pessoas. Foi incrível! Me sinto feliz por ter cumprido uma grande parte dos meus objetivos e sei que meus amigos que vão me substituir vão continuar a fazer mais conquistas e vão fazer um trabalho muito melhor que o meu, levando a Globo.com para o caminho do sucesso. E como eu já aprendi, o mundo dá voltas. Quem sabe um dia eu sinto saudades do Rio de Janeiro… 🙂

É muito difícil saber as palavras certas pra usar numa hora dessas. A Globo.com é uma empresa incrível para trabalhar e, até onde eu consigo enxergar, a melhor do Brasil. Disparada. Ela foi inspiração para dezenas de posts desse blog e eu não tenho palavras pra dizer o quanto sou grato por ter tido a oportunidade de trabalhar com pessoas tão talentosas nesses anos todos aqui. Eu adoro essa empresa, dei meu sangue por ela, aprendi mais do que em qualquer outro lugar que trabalhei e conheci alguns dos melhores profissionais desse mercado. Queria citar os nomes de todos vocês e agradecê-los por terem me ensinado tanto, mas não quero correr o risco de esquecer nenhuma sequer das dezenas de pessoas que me apoiaram ao longo desse caminho. Em todas as minhas temporadas e equipes na Globo.com fiz amigos que vou levar para a vida toda e que vou sentir muita falta. É muito triste e muito difícil deixar tantas conquistas e realizações para trás, mas o tempo não pára e eu preciso seguir em frente para conquistar todos os meus sonhos.

Em Janeiro de 2010 estou me mudando para São Paulo e partindo para vôos mais altos e novos desafios no Yahoo!, assumindo a posição de Software Development Manager. Aliás, aproveitando a oportunidade, temos várias vagas em aberto, mas isso é assunto para um outro post. 🙂

Muitos desafios me aguardam e eu espero ter bastante história pra contar. Estou muito empolgado para trabalhar em produtos novos e criar novas maneiras de facilitar e divertir a vida das pessoas. Vou trabalhar também para tornar o Yahoo! um lugar ainda mais incrível para trabalhar, com ainda mais software e produtos de qualidade e mais uma referência em desenvolvimento ágil no Brasil e – sendo um pouco mais ambicioso (no sentido positivo da palavra) – no mundo!

Mais uma vez, obrigado Globo.com. Yahoo!, aí vou eu!

Categories
Agile

2 anos de Scrum e Agile na Globo.com e algumas coisas que eu aprendi

Já se passaram pouco mais de 2 anos desde que começamos a trabalhar oficialmente com Scrum e Agile na Globo.com e um pouco mais de 2 anos e meio desde que a coisa toda começou de fato.

Depois de trabalhar diariamente com processos ágeis e uma porção de times diferentes na Globo.com, minha sensação é a daquele dito popular que diz que quanto mais você sabe de alguma coisa, mais você descobre que tem que aprender. De tempos em tempos surgem idéias novas excelentes e as vezes são coisas tão simples que eu me pergunto porque nunca tinha pensado nelas. Ou então algumas idéias que não deram certo no passado voltam à tona, são colocadas em prática e passam a funcionar muito bem. Sempre que eu acho que já aprendi como alguma coisa funciona alguém aparece com uma idéia melhor e me prova que eu estava errado em achar isso.

Me lembro quando perguntei lá no início para o Boris Gloger sobre o tempo que levaria para as coisas acontecerem. Na época ele falou que para uma empresa do tamanho da Globo.com certamente levaria de 2 a 4 anos para as coisas mudarem de fato. Eu achei um exagero e que ele estava louco, mas era eu que não tinha noção do tamanho da coisa toda. Ele estava certo.

Infelizmente eu não tenho uma história romântica para contar e estaria mentindo se dissesse que as coisas são maravilhosas depois que você adota Agile, Scrum ou o que quer que seja. Muito pelo contrário, os problemas começam a aparecer e tudo fica caótico. As vezes a quantidade de problemas chega a ser enlouquecedora e minha insônia aumentou consideravelmente depois disso. Mas eu não tenho nenhuma dúvida de que os processos ágeis são os que mais se adaptam às características de projetos de desenvolvimento de software, mais do que qualquer outra coisa que eu já tenha usado. Tivemos muito mais sucesso do que em qualquer outra iniciativa na história da empresa e as coisas acontecem muito mais e muito melhor do que aconteciam antes, mas mesmo assim ainda temos um caminho muito longo pela frente.

Hoje eu consigo entender com mais clareza o real sentido do empirismo que tanto se fala. Mesmo com pilhas de livros sobre desenvolvimento ágil na minha prateleira, eu olho para trás e vejo que o processo de “tentativa e erro” foi muito mais importante para o meu aprendizado do que qualquer teoria. Várias coisas escritas nos livros deram certo para alguns times e não deram para outros, e no fim das contas o que ficou foi uma mistura de todas essa experiências. Fomos fazendo as coisas, vendo o que dava certo ou errado, mudando, adaptando e seguindo em frente. Hoje não dá pra dizer que a Globo.com usa Scrum, XP, Lean ou Kanban. Você pode encontrar todos os seus sabores preferidos de Agile por aqui, às vezes misturados e até mesmo bem customizados e diferentes do tradicional.

Nesse tempo todo vivenciei muitos problemas, muitos sucessos, muitas derrotas, muitas falhas e muita mudança. Eu queria poder dizer que encontrei o Santo Graal do desenvolvimento ágil, mas dificilmente isso existe. E se existir, provavelmente o da minha empresa será diferente da sua e por ai vai. Porém, eu posso falar de algumas coisas que eu aprendi e que talvez possam ser úteis para outras pessoas e empresas:

Você sempre estará em transição.

Basicamente eu não acredito mais em transição ágil como eu já li por ai, que parece uma coisa que tem inicio, meio e fim. Hoje eu percebo que sempre se está em transição. Sempre surgirão projetos novos com características diferentes e sempre será necessário ajustar e se adaptar. Isso tudo fora que as pessoas e os times também mudam, e ai começa tudo denovo. É um trabalho que nunca acaba.

É muito fácil começar a fazer Scrum, o difícil é vencer a resistência das pessoas.

Grande parte do meu tempo nesses anos foi investido em quebrar barreiras e a resistência das pessoas. E não estou falando de diretores ou gerentes, às vezes os piores problemas estão dentro dos times. Os mais diversos tipos de problemas acontecem: tem gente que tem medo de trabalhar em par e expôr suas fraquezas para os outros, tem gente insatisfeita na empresa que envenena iniciativas, enfim, acontece de tudo. É muito importante trabalhar com pessoas bem intencionadas, comprometidas e que acreditam no que estão fazendo e que acreditam que as coisas sempre podem (e devem) ser melhoradas.

As pessoas precisam estar felizes.

É importantíssimo que a empresa reconheça seus talentos, que eles ganhem o que merecem e que eles trabalhem num ambiente agradável. Ninguém trabalha direito e dá 100% do seu potencial se não estiver feliz e satisfeito com a empresa. Pessoas infelizes e insatisfeitas podem acabar com um time inteiro, por isso a empresa tem que dar o primeiro passo e dar todas as condições para que isso não aconteça e, quando acontecer, resolver o problema o mais rápido possível.

Se o foco das pessoas for em “fazer telas”, “testar” ou “escrever software”, você está perdido. O foco das pessoas deve ser o produto, e não a sua função.

Muito desenvolvedor não gosta de fazer teste exploratório “porque isso é função do cara de QA”. Muito designer não gosta de fazer CSS e HTML porque isso é coisa de “desenvolvedor de front-end”. Bullshit! Imagine se um zagueiro está com a bola na linha do gol e diz que não vai fazer o gol porque não é atacante? Não tem essa, o foco é ganhar o jogo, entregar o produto, deixar o cliente feliz, não importa fazendo o que. Com o tempo você descobre a receita do time (quantidade de pessoas de cada especialidade) para que as pessoas passem a maior parte do tempo fazendo sua especialidade, mas isso não significa que elas não devem fazer ou entender de outras coisas.

Escalar não é facil. Aliás, se for possível, não escale nunca.

Times ágeis funcionam melhor quando são pequenos, porque o universo de pessoas é menor e a comunicação é melhor, as pessoas confiam mais no resto do time e por aí vai. Quando o número de pessoas e de times aumenta, a comunicação fica problemática e isso gera uma porção de problemas, desde coisas triviais como conflitos de merge até coisas mais complexas de resolver como falta de confiança, dificuldade em mudar de direção, dificuldade de passar a visão do produto, pessoas querendo aparecer mais do que outras e por aí vai. Faça um teste: reuna 30 amigos seus e tentem combinar um lugar para almoçar em no máximo 2 minutos. Repita o teste com 3 amigos e compare os resultados. Foi possível combinar um único lugar de forma unânime? Quanto tempo levou? Quais foram os conflitos de interesse? Qual foi o nível de barulho, stress e insatisfação das pessoas? Ter mais pessoas ajudou a fazer com que a decisão fosse mais rápida ou mais demorada? Talvez esse não seja o melhor exemplo do mundo mas vai ser bem fácil de perceber como times grandes se organizam com muito mais dificuldade.

Boas práticas de engenharia e desenvolvimento ágil como automatização, testes, refatoração, programação em par, integração contínua e TDD são fundamentais, imprescindíveis, inevitáveis, totalmente obrigatórias.

Todos os grandes saltos de qualidade e produtividade que demos na história da evolução da Globo.com foram porque essas práticas foram intensificadas e usadas com mais disciplina, e todas as vezes que elas não recebem a devida importância a velocidade diminui, a produtividade baixa e o time entrega menos (e com mais defeitos).

Um dos “problemas” com o Scrum é que ele não fala nada sobre usar essas práticas. Isso é proposital porque o intuito era que ele fosse bastante genérico e simples, mas como muitas pessoas gostam de seguir o livro cegamente sem pensar, elas acabam achando que não é necessário fazer o que não está escrito, e daí a probabilidade de fracasso é gigantesca. Você pode usar Scrum para produzir um marca-passo, por exemplo, mas você seria louco de não testá-lo exaustivamente só porque não está escrito? Você tem que fazer, porque é uma necessidade imposta pelo tipo de projeto. Com software não é muito diferente: se você não faz TDD, seu código fica pouco testável, e consequentemente você refatora menos ou tem dificuldade para fazê-lo. Consequentemente o tempo para implementar novas funcionalidades aumenta cada vez mais e como o cliente está sempre cobrando mais e mais coisas, você passa a testar menos para dar tempo de fazer mais funcionalidades. E por aí vai (para o buraco).

As regras são excelentes quando você não sabe o que está fazendo. Depois que aprender, quebre-as.

Geralmente quando as pessoas começam com Agile o que se recomenda é que você siga as regras à risca por algumas iterações até que você aprenda e que o processo esteja “no sangue”, e só depois que possíveis customizações devem ser feitas. Muita gente confunde isso com “sempre siga as regras à risca”. Por exemplo, hoje alguém me convenceu numa conversa que o Sprint Planning 2 do jeito que um determinado time estava fazendo estava bem inútil, uma grande perda de tempo. A sugestão foi fazer uma coisa mais “just-in-time”, ou seja, na hora que a história começar a ser desenvolvida. Muita gente pode falar que “ah, mas não é assim que o Scrum funciona” ou o clássico “aqui na empresa nós não fazemos desse jeito”. Se você tem um bom motivo para mudar as regras do jogo, discuta o assunto com o time e implemente as melhorias. Não existe essa coisa de “as regras do Scrum”, existem times produtivos com alta capacidade de adaptação e em constante evolução ou times que passam 50% do tempo discutindo o processo e não deixam o cliente feliz.

Trabalhar num ambiente ágil é muito muito muito mais divertido.

Acabei de passar quase 40 dias de férias e em conferências. Muita gente estaria odiando voltar para o trabalho depois disso, mas eu gostei. Quando eu cheguei hoje na empresa depois de mais de 1 mês a minha mesa já não era mais minha e eu não achava meu computador. O escritório mudou totalmente e o time que eu estava está todo misturado. Quando eu entrei na sala as pessoas estavam em pé discutindo, rabiscando no quadro e o barulho estava alto pra caramba. Depois de contar as novidades, de almoçar e de alguns updates, passei o resto da tarde programando em par numa tarefa que nem eu e nem o meu par faziamos idéia de como resolver, mas juntos descobrimos como fazer e resolvemos o problema. Foi um dia caótico porém muito produtivo e muito divertido, como a maioria dos que eu tenho. Tudo muda muito e está em constante evolução, e cada dia é um novo desafio. Se você gosta de ficar escondido atrás da “baia” e tem dificuldades em dividir o seu teclado com um amigo, recomendo fortemente que você não use Agile.

Agile não é o Santo Graal.

Nenhum processo de desenvolvimento (ágil ou não) é perfeito. Muita gente gosta, muita gente não gosta, alguns não se adaptam, outros se motivam a cada dia com os novos desafios e é assim que as coisas funcionam. <ironia> “Agile é tão perfeito” </ironia> que quando as coisas dão errado é muito mais fácil culpar o seu processo e reclamar que ele não funciona. Bullshit! Como o Jeff Patton fala, as pessoas fazem isso porque o processo não vai se defender de você e porque é muito mais dificil assumir e enxergar os problemas de verdade. Uma das chaves de ser bem sucedido nesses processos é entender que eles são apenas ferramentas muito simples e que se não estão funcionando é porque você precisa encontrar e resolver algum problema da sua empresa, do seu time, das pessoas ou do que quer que seja. Não bote a culpa no processo.

As pessoas são mais importantes que o processo. Foco nas pessoas.

São elas que fazem tudo acontecer. Quanto mais agentes de mudança sua empresa puder ter, melhor. A empresa tem que reconhecer essas pessoas e motivá-las para que elas motivem ainda mais seus pares e assim por diante. É preciso dar liberdade para elas criarem, tentarem coisas novas e errarem sem medo de serem repreendidas. Faça de tudo para que todos estejam felizes e motivados. Resolva os conflitos. Coloque tudo em pratos limpos. Trate todos com respeito e como amigos. Faça as pessoas crescerem e deixe (e ajude) que elas tenham visibilidade dentro da empresa. De todas as coisas que eu vi até hoje, nada é mais eficaz do que ter as pessoas certas do seu lado.

Nada disso é definitivo e eu posso mudar de opinião a qualquer momento sobre qualquer uma dessas coisas. Aliás, hoje numa conversa aprendi que é ótimo mudar de opinião, porque significa que você aprendeu alguma coisa nova/diferente que te fez pensar de uma forma nova/diferente e, portanto, você evoluiu. Fica então a última:

Crie sua opinião, aprenda mais e mude sua opinião. Esteja em constante evolução.

Categories
Eventos

[Dev in Rio 2009] Balanço do evento

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!

Categories
Engenharia de software Open Source

Colaboração e Open Source dentro da empresa

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.

Categories
Fun

Ajude a facilitar a vida dos preguiçosos e ganhe um convite para o Dev in Rio!

As inscrições para o Dev in Rio estão acabando e é melhor você correr para garantir logo a sua vaga. Caso você seja preguiçoso como eu sou, use esse script do Pyccuracy para automatizar a sua inscrição (e não esqueça de trocar essas informações “fake” pelos dados reais!):

Como um bom desenvolvedor
Eu quero me cadastrar no Dev in Rio
Para que eu possa aprender mais e ser um profissional melhor
 
Cenário 1 - Cadastro no Dev in Rio
Dado que
    Eu navego para "http://devinrio.com.br/inscricoes_bra.php"
Quando
    Eu marco a radio "tipo_participacao"
    E eu clico no elemento "tipo_participacao"
    # ... tem que esperar a página ser carregada :)
    E eu espero por 5 segundos
    E eu vejo que a página atual contém "Login - Novo cadastro"
Então
    # Login
    Eu preencho a caixa de texto "email" com "seu@email.com"
    E eu preencho a caixa de texto "senha" com "senha"
    E eu preencho a caixa de texto "re_senha" com "senha"
    # Dados Pessoais
    E eu preencho a caixa de texto "nome_cracha" com "Pyccuracy da Silva"
    E eu preencho a caixa de texto "empresa_cracha" com "Globo.com"
    E eu preencho a caixa de texto "dd" com "01"
    E eu preencho a caixa de texto "mm" com "01"
    E eu preencho a caixa de texto "aaaa" com "1980"
    E eu preencho a caixa de texto "cpf" com "12345678910"
    E eu preencho a caixa de texto "ddd" com "21"
    E eu preencho a caixa de texto "telefone" com "23452345"
    E eu preencho a caixa de texto "ddd2" com "21"
    E eu preencho a caixa de texto "telefone_celular" com "23452345"
    # Endereço
    E eu preencho a caixa de texto "cep" com "23456789"
    E eu preencho a caixa de texto "endereco" com "Rua de Exemplo"
    E eu preencho a caixa de texto "numero" com "123"
    E eu preencho a caixa de texto "complemento" com "ap 101"
    E eu preencho a caixa de texto "bairro" com "Meu Bairro"
    E eu seleciono o item com texto "Rio de Janeiro" na select "estado"
    # ... tem que esperar o treco carregar os municipios :)
    E eu espero por 5 segundos
    E eu seleciono o item com texto "RIO DE JANEIRO" na select "municipio"
    # Seu perfil - pode colocar qualquer coisa :)
    E eu seleciono o item com valor "Outros" na select "ocupacao"
    E eu seleciono o item com valor "Superior completo" na select "escolaridade"
    E eu seleciono o item com valor "Amigos" na select "conhecimento"
    E eu seleciono o item com valor "Outra" na select "areas_atuacao"
    E eu clico no botão "sis_submitbutton2"
    E eu vejo que a página atual contém "sucesso"
    # E pra terminar, espera um pouquinho pra ver que a inscrição funcionou
    E eu espero por 10 segundos

Depois disso é só rodar com o comando “pyccuracy_console -l pt-br” e pronto, você já está cadastrado! Basta agora acessar o site para efetuar o pagamento com o seu cartão de crédito! 🙂

E agora, a promoção surpresa!

Ganha uma inscrição como convidado para o Dev in Rio e um kit de brinde da Globo.com (com camiseta, pen drive de 4GB e etc.) o primeiro programador que terminar o que falta do script, ou seja, fazer o pagamento completo por cartão de crédito ou boleto bancário, tanto faz (e antes que algum engraçadinho tente, não vale ninguém que já trabalha com o Pyccuracy aqui na Globo.com, hehe).

Só estará participando da promoção quem enviar os scripts aqui pelos comentários e eu vou seguir a ordem de postagem. O primeiro script que funcionar leva o prêmio!

Divirtam-se! 🙂

Categories
Etc. Eventos Notícias Scrum

Dev in Rio 2009: eu vou!

É com muito orgulho que apresentamos o Dev in Rio 2009, uma conferência inédita sobre desenvolvimento de software que acontecerá no próximo dia 14 de setembro no Centro de Convenções SulAmérica, no Rio de Janeiro!

O evento está sendo organizado por mim (Guilherme Chapiewski) em parceria com o meu amigo Henrique Bastos e a realização está sendo coordenada pelas nossas experientes amigas da Arteccom (e tê-las ao nosso lado já garante que este será um evento para marcar o circuito carioca).

Nossa programação conta com três palestrantes nacionais e três internacionais falando sobre Open Source, Java, Ruby on Rails, Django e desenvolvimento ágil de software:

“O molho secreto”: como as comunidades do Joomla! e Open Source estão melhorando o cenário de tecnologia… e mudando o mundo!

Ryan OzimekRyan Ozimek é atual membro do Steering Committee da Open Source Initiative, membro da diretoria da Open Source Matters e co-fundador e CEO da PICnet Inc. Com enfoque em tecnologias open source, Ozimek está constantemente a procura de formas em que a Internet possa servir melhor o “bem maior” e, mais especificamente, as entidades sem fins lucrativos.

O Java está morto?

Guilherme SilveiraGuilherme Silveira é especialista em Java para a web e graduando em matemática computacional na USP, ministrou diversas palestras relacionadas ao tema em eventos e empresas pelo Brasil. Atualmente é commiter do CodeHaus pelos projetos XStream e Waffle, além de um dos responsáveis pelo desenvolvimento do VRaptor.

Nico SteppatNico Steppat é Engenheiro da Computação Aplicada na Fachhochschule Brandenburg na Alemanha, é instrutor, consultor e desenvolve há cinco anos com Java no Brasil e Alemanha, atuando agora na Caelum com enfoque especial em EJB. É o responsável técnico no Rio de janeiro. Escreve para a revista MundoJava e possui as certificações SCJP, SCWCD, SCBCD e SCEA.

Ecossistema Ruby on Rails

Fabio AkitaFabio Akita é Gerente de Produtos de Hospedagem na Locaweb e ajudou a implantar Ruby on Rails pela primeira vez num grande hosting no Brazil. Ano passado também organizou o Rails Summit Latin America, o primeiro grande evento de Rails na América do Sul. Trabalhou na consultoria americana Surgeworks LLC, prestando serviços relacionados a projetos Ruby on Rails, com o cargo de Brazil Rails Practice Manager.

Django: o framework web para perfeccionistas com prazos

Jacob Kaplan-MossJacob Kaplan-Moss é um dos líderes de desenvolvimento e co-criador do Django. Jacob é um desenvolvedor de software experiente com foco em desenvolvimento de aplicações web e arquitetura de gerenciadores de conteúdo. Em 2005, Jacob ingressou no Lawrence Journal-World, um jornal local em Lawrence, Kansas, e ajudou a desenvolver e tornar open source o projeto Django. É também co-autor do livro “The Definitive Guide to Django” (Apress, 2007).

Desenvolvimento ágil e iterativo de produtos

Jeff PattonJeff Patton cria e desenvolve software nos últimos 15 anos desde sistemas de pedidos de peças de aeronaves até fichas médicas eletrônicas. Jeff se focou em metodologias ágeis desde que trabalhou com um time de Extreme Programming em 2000. Em particular, Jeff se especializou na aplicação de práticas de user experience design (UX) para melhorar requisitos ágeis, planejamentos e produtos. Desde 2007, Jeff tem aplicado Lean thinking e práticas de desenvolvimento com Kanban e Scrum para ajudar times a focarem na entrega de valor.

Vinicius TelesPara fechar com chave de ouro, no encerramento do evento faremos um bate-papo com os palestrantes, alguns membros das comunidades de desenvolvimento e a participação especial do meu amigo Vinicius Teles!

Como se isso tudo já não fosse suficiente, enquanto todas essas apresentações estão acontecendo teremos sessões de Coding Dojo rolando do lado de fora com participação especial dos nossos palestrantes (caso eles consigam ficar por lá)! Estamos planejando fazer um Dojo de Python, um de Ruby e um de Java!

Será simplesmente incrível, ninguém pode ficar de fora dessa!

As inscrições podem ser feitas no site do evento (http://www.devinrio.com.br) e custam apenas R$ 65,00. Todos os inscritos terão direito a participar de todas as sessões, incluindo o Dojo.

Nosso encontro será numa segunda-feira, ou seja, se você não for do Rio de Janeiro já tem uma ótima desculpa para passar o fim de semana aqui, assistir uma ótima conferência na segunda-feira e voltar para o trabalho cheio de idéias na terça!!! Ainda estamos tentando fechar uma parceria com algum hotel para oferecer desconto para participantes do evento. Fiquem ligados nas novidades por aqui ou pelo Twitter!

Gostaria de deixar registrados meus sinceros agradecimentos para os nossos patrocinadores Locaweb e Caelum, além de outras organizações que nos apoiaram de alguma forma: Associação Python Brasil, Fábrica Livre, Open Source Matters e Myfreecomm. E por último, meu mais sincero agradecimento para a Globo.com pois ela é a principal responsável por viabilizar essa idéia! Obrigado por mais uma vez acreditarem nesse louco aqui tarado por desenvolvimento de software! Não tenho palavras pra dizer o quanto é gratificante fazer parte dessa equipe!

Então nos vemos no Dev in Rio 2009! Faça agora sua inscrição no nosso site! Fique ligado também no Twitter do @devinrio para concorrer a inscrições gratuitas!

Ah, e uma última coisa. Por favor, nos ajudem a divulgar o evento! Falem com seus amigos, postem nos seus blogs, Twitters, coloquem nossos banners nos sites de vocês, enfim, por favor nos ajudem a divulgar esse evento! Vamos fazer barulho no Rio de Janeiro!

Categories
Eventos

[FISL 10] Balanço do evento

FISL 10 - Globo.comO FISL 10 foi certamente um dos melhores eventos brasileiros de todos os tempos!

Como havia falado no post anterior, fiz 3 apresentações que foram muito bem recebidas pela galera (ao menos os feedbacks no Twitter e no stand foram ótimos)! Foi legal mostrar um pouco do que temos aqui na Globo.com e saber que muita gente mudou sua opinião a respeito do que somos e o que fazemos. É claro que somos uma empresa cheia de problemas como qualquer outra, mas temos um monte de iniciativas legais, pessoas legais e projetos/desafios interessantes como em poucos lugares, o que nos torna uma das empresas mais legais para se trabalhar no Brasil!

Adorei também conhecer um monte de pessoas novas que nem vou arriscar citar aqui para não esquecer os nomes. Todas essas pessoas fizeram com que o evento fosse um show!!! Veja algumas fotos no meu Flickr.

Críticas, sugestões ou comentários são sempre bem-vindos! E nos vemos ano que vem no FISL 11! 🙂

Categories
Eventos

FISL 10, aí vou eu!

Ufa! Ultimamente tem sido uma correria imensa por causa do projeto que estou participando (novidades sobre isso em breve) e de alguns eventos como o EDTED Curitiba e o CMS Brasil 2009. Aliás, se você estiver procurando material sobre as minhas palestras você pode encontrar no post do EDTED Florianópolis (que foi a mesma).

Estou partindo am alguns minutos para Porto Alegre para participar do 10o. Fórum Internacional de Software Livre! O FISL é o maior e um dos melhores eventos da comunidade de software brasileira e eu não ia ficar de fora dessa por nada.

Amanhã farei duas apresentações, uma sobre o que fazemos relacionado a software livre na Globo.com e outra sobre metodologias ágeis. Na sexta-feira tem outra apresentação que estou preparando com o Bernardo Heynemann e o Gabriel Falcão sobre o Pyccuracy, que é um projeto muito legal no qual temos trabalhado ultimamente. Além disso o evento contará com a participação de vários integrantes da Globo.com falando de diversos assuntos, tanto nas palestras como no nosso stand. Veja a programação do FISL aqui e apareça no nosso stand para saber das “apresentações relâmpago” que faremos por lá.

Categories
Carreira Etc.

Plano de cargos e salários…

Me incomoda muito o fato de que desenvolvedores precisam virar gerentes ou coordenadores para ganhar mais.

<história>
Era uma vez um desenvolvedor muito bom e muito eficiente. Ao longo da sua carreira ele foi aprimorando suas habilidades e técnicas e se tornou um super desenvolvedor com um conhecimento técnico absurdo, uma vasta experiência em arquiteturas de software e poliglota em linguagens de programação. Nesse momento ele repara que já é um desenvolvedor sênior ++ na empresa que ele trabalha e por isso não tem como ganhar mais do que ele já ganha a não ser que ele vire gerente. Então, querendo ganhar mais, o excelente técnico que programava e resolvia problemas técnicos com eficiência é obrigado a virar um gerente, porque a empresa não dá para ele outra forma de evoluir financeiramente. O detalhe é que ele não tem nenhuma habilidade para gerir pessoas ou projetos, além de que ele odeia fazer isso. O que ele gostava mesmo era de programar, mas ele não teve escolha. Resumindo: a empresa trocou um excelente técnico por um péssimo gerente e ainda está pagando mais por isso!
<história/>

Já repararam como esse padrão se repete nas empresas brasileiras?

Se você nunca parou pra pensar nisso, pense agora: é muito difícil um programador ganhar mais do que um gerente e por sua vez é muito difícil um gerente ganhar mais que um diretor. A lógica do mercado é a velha lógica do plano de cargos e salários: quanto maior for o seu nível hierárquico, mais você ganha.

O problema é que isso não faz sentido. O argumento preferido das pessoas normalmente é que “os gerentes ganham mais porque tem mais responsabilidades”. Eu discordo totalmente. Por exemplo, um amigo me contou ontem que um funcionário da empresa onde ele trabalhava tirou do ar o sistema de transações financeiras de uma grande empresa, causando com isso algumas centenas de milhares de dólares de prejuizo em poucos minutos. Neste caso, um erro de um desenvolvedor provocou uma catástrofe maior do que 10 anos de erros de uma dezena de gerentes juntos. E então, quem é que tem mais responsabilidade nas mãos?

Outra coisa que me incomoda nos planos de cargos e salários são aquelas regras do tipo “gerentes ganham na faixa de R$ X a R$ Y“: se o cara ganha menos que X não pode ser gerente e se ganhar aumento para mais que Y tem que ser promovido a diretor. Isso também não faz sentido. Em todas as empresas que eu trabalhei conheci gerentes excepcionais e gerentes absurdamente idiotas. Por incrível que pareça os excepcionais com toda sua genialidade sempre ganhavam (e ganham) o mesmo que os idiotas, por causa do maldito plano de cargos e salários. Isso pra mim soa como gado: independente das suas características individuais, uma cabeça de gado custa o mesmo que outra.

Eu trabalho e já trabalhei com vários desenvolvedores de valor altissimo. Não falo isso pelo que eles ganham ou ganhavam, mas sim porque em várias situações eles criaram soluções que melhoraram ou mudaram completamente (para melhor) a forma que as pessoas trabalhavam. Algumas dessas coisas foram tão geniais que eu diria que o valor foi inestimável. Eu também já tirei meus coelhos da cartola e sei que eles foram de grande valor para as empresas que eu trabalhei.

Não deveriam ser esses tipos de coisas que determinam o quanto as pessoas devem ganhar?

Em empresas de software, onde é comum encontrar esse tipo de pessoas, deveria ser normal ter desenvolvedores altamente especializados com remunerações maiores que as de gerentes ou diretores, mas isso é tão improvável que eu diria que é praticamente impossível – pelo menos no Brasil. Já em empresas como Google, Yahoo e cia., isso é possível e normal. Na Globo.com temos alguns casos desse tipo, mas são excessões. Isso está em fase embrionária e é muito muito muito longe do que deveria ser.

Naquela história que eu contei no início não consigo pensar em um motivo sequer para a empresa não manter o funcionário como desenvolvedor e dar o aumento que ele merece. Esqueça o plano de cargos e salários e veja como faz sentido: isso seria muito melhor para a empresa – porque o funcionário iria agregar muito mais valor sendo desenvolvedor e iria ajudá-la a lucrar muito mais – e seria melhor para o desenvolvedor – porque ele iria fazer o que gosta, o que é mais experiente e o que estudou sua vida toda para fazer.

Até quando as empresas vão continuar colocando as pessoas certas nos lugares errados?

Categories
Etc.

2009: ano novo, vida nova

O ano novo é sempre um momento de reflexão e mudanças na vida de muita gente. Comigo não foi diferente. 🙂

Em 2008, por conta do forte movimento para adoção de Scrum aqui na Globo.com, meu blog acabou virando quase que totalmente sobre metodologias ágeis e afins. Por um lado foi muito bom porque durante esse ano pude explorar vários aspectos dessas metodologias e entender profundamente vários motivos e princípios por trás de várias coisas. Por outro lado, acabei falando muito menos do que gostaria sobre minhas raizes… Minha maior especialidade e o que me dá mais prazer é explorar coisas novas, escrever código e desenvolver software. Em 2009 pretendo falar muito mais sobre isso do que qualquer outra coisa.

A segunda mudança é que estou em novos desafios na Globo.com (e por isso ando postando pouco). Depois de dois anos, muitas vitórias e conquistas, no fim de dezembro deixei minha antiga equipe de WebMedia para atuar como evangelista e líder de desenvolvimento de software na Globo.com.

O desafio dessa nova equipe é grande: impregnar a empresa inteira com práticas de desenvolvimento ágil e qualidade de software. Não estamos montando um dos famosos “escritórios de arquitetura” e nem definindo padrões para as equipes trabalharem, mas sim vamos liderar, dar apoio e estimular inovações em desenvolvimento de software, implantar técnicas de desenvolvimento ágil e boas práticas de desenvolvimento e arquitetura de software. Ok, vamos ajudar com processos também, eu assumo – afinal ninguém é de ferro. Para isso tudo vamos fazer vários treinamentos, workshops, vamos trabalhar infiltrados nos times fazendo mentoring com todos os desenvolvedores e sujando a mão de graxa; dentre outras coisas. Traduzindo: diversão garantida e muita história pra contar por um bom tempo!

Já estamos fazendo muitas coisas legais e já começo a ver alguns resultados animadores. Aos poucos vou contando as iniciativas e as novidades!