[Off-Topic] Alguém importante deixou a comunidade! E agora??

6 de julho de 2014 · 💬 Participe da Discussão
Se tem preguiça de ler, clique aqui pro TL;DR

Esta semana um conhecido desenvolvedor da comunidade Node.js declarou estar deixando o barco. Foi TJ Holowaychuk, um dos contribuidores mais prolíficos dessa comunidade. Como era de se esperar, a notícia gerou controvérsia, discussão e gente se desesperando.

Se você é um programador experiente, não precisa de mim para ouvir isso. Mas se as notícias recentes deixaram você inseguro, talvez o que eu tenho a dizer traga alguma perspectiva.

Antes, quero compartilhar outros artigos que li nos últimos dias:

  • My Next Chapter: a declaração de Mike Perham, um dos rubistas mais conhecidos desta geração e criador do onipresente e excelente Sidekiq. Ele não abandona o projeto; conta que está tocando um produto novo, e esse produto não envolve Ruby.

  • Saying Goodbye To Python: aqui foi o pythonista Ian Bicking, que declarou trocar Python por JavaScript, seguindo a onda do momento. Vale entender que a bolha atual de JavaScript não “exige” que você “abandone” nada. Dá para ser pythonista e usar JavaScript ao mesmo tempo, sem conflito.

  • Why I Left the .Net Framework: o desenvolvedor Jonathan Oliver resolveu explicar por que está deixando a tecnologia do dia a dia e aponta os prós e contras das ferramentas Microsoft. Nada de trollagem; é uma leitura bem interessante.

  • Java Again: quem é das primeiras gerações da comunidade Java lembra de James Duncan Davidson, criador nada menos que do primeiro Tomcat e do Ant. Ele deixou o Java, passou um tempo na comunidade Ruby e se dedicou à fotografia (procure as fotos das RubyConf de oito anos atrás e vai ver que as oficiais são todas dele). Agora declarou que está voltando ao Java.

  • Why Go Is Not Good: como o nome diz, é uma crítica que argumenta que uma linguagem recém-lançada deveria ter sido melhor pensada para cobrir casos que outras linguagens já resolvem.

  • Rust vs Go: de novo com um certo tom de “dor de cotovelo”. Rust realmente parece uma tecnologia superior a Go em design de linguagem e recursos, e o texto demonstra a frustração de ver Go mais popular mesmo assim.

  • Why Perl Didn’t Win: leitura obrigatória sobre as circunstâncias de uma das linguagens mais populares do fim dos anos 80 ao fim dos anos 90, que caiu no esquecimento e no desuso. Até o Swift, lançado pela Apple semanas atrás, já tem mais usuários ativos que o Perl 6. Uma das conclusões: qualquer coisa nova precisa mirar os problemas do futuro, não os do passado.

Quem é das primeiras gerações das comunidades Ruby e Rails vai lembrar dos “traumas” que passamos:

  • Zed is Not Dead: de 2008, quando um dos nossos desenvolvedores mais prolíficos, Zed Shaw, criador do Mongrel e um dos primeiros a encarar o desafio de medir e otimizar a performance do Ruby, declarou que estava deixando a comunidade e migrando para Python.

  • Bomba: Merb e Rails se fundem!: também de 2008, quando a equipe do Merb estava em rota de colisão com o Core do Rails. A solução, feliz para muitos e infeliz para alguns poucos, foi engolir o Merb dentro do Rails 3, e ela deixou mortos e feridos. Em retrospecto, vale ler “Learning from Rails’ failures”, de Matt Aimonetti (que também migrou para Go) e que está entre os feridos dessa insurgência, e “The Rails/Merb Merge In Retrospect”, de Giles Bowkett (ainda rubista), que analisa os resultados com olhar bem crítico.

  • Twitter muda de Ruby para Java: de 2011, quando o Twitter declarou que estava substituindo as partes da infraestrutura de mensagens escritas em Ruby por uma solução proprietária em Scala. O que a notícia original dizia e o que as pessoas escolheram memorizar são coisas diferentes, mas o fato é que aquilo virou uma bela dor de cabeça de relações públicas para nós. Felizmente já passou.

E esses são só os links que li e lembro de cabeça. Existem dezenas de outros.

Quem ainda é jovem ou inexperiente em comunidades de software, em especial quem é novo no Node.js, deve estar se perguntando: “E agora? Se alguém importante como o TJ diz que está saindo, eu não deveria sair também?” Se fizer sua pesquisa direito, vai ver que não é a primeira vez. Em 2012, o criador do Node.js, Ryan Dahl declarou que continuaria acompanhando o projeto, mas não estaria mais no dia a dia de codificação. “Putz, o mundo acabou!”

Isto não é uma Má Notícia. Esta é uma Excelente Oportunidade! (Sério!)

Em 2006, quando eu estava começando minha militância no mundo Ruby e Rails, eu já sabia o que vinha pela frente. Éramos os novatos, imaturos, com tecnologia incompleta e muita expectativa, então o caminho seria o mais difícil possível. Foi por isso que escrevi o artigo Evolução pela Concorrência.

Muita gente imagina que o melhor dos mundos seria aquele em que ninguém questiona o que você faz, todos deixam você em paz e acreditam nas suas promessas que, claro, você pretende cumprir um dia. (yeah, right…)

Eu discordo. Qualquer promessa ou expectativa que valha a pena precisa ser questionada, pressionada, escrutinada. Se ela é tão frágil que não aguenta crítica, ataque direto e indireto e sabotagem, então a promessa já era fraca e não merecia seguir em frente. Quanto antes cair, melhor, porque menos tempo a gente perde.

Por isso eu sempre abraço os ataques: espero estar pronto para revidar em dobro ou morrer tentando. E não esperaria menos da comunidade Rails. Todo mundo ainda acredita que restrição é ruim, mas eu já disse antes que restrição é importante, porque é o único lugar de onde nasce a inovação.

Quem precisa recorrer ao velho truque de falar mal dos outros, o famoso “não tenho vontade de melhorar, então vou prejudicar o outro para parecer maior” (escrevi sobre isso em 2007, “Para eu ganhar, o outro precisa perder…”), se declara fraco por conta própria. Pare e lembre de artigos, palestras e entrevistas em que você ouviu alguém que admira falando mal de outra comunidade. “Ah, Ruby, aquele negócio de menininha. Porque nós, homens, usamos JavaScript.” Isso me dá vontade de rir e um pouco de pena, porque para mim fica claro que a pessoa sempre vai ser fraca.

Todas as declarações acima, e outras parecidas (“Estou deixando Node”, “Estou deixando .NET”, “Estou deixando Ruby”, “Estou deixando X”), eu honestamente acredito que vieram sem má intenção ou má fé, ao menos não conscientemente. Mas tenho uma teoria. Quem faz declarações assim quer validação dos pares, ou pior, quer que os pares o sigam, o que também é uma validação da própria posição. “Não gosto mais do meu brinquedo velho, mas também não quero que ninguém brinque com ele.” É uma posição bem infantil.

Tomando a comunidade Ruby como exemplo, vários nomes meio que “largaram” suas atividades principais sem bater a porta nem agir com infantilidade. Chad Fowler está na Alemanha tocando o Wunderlist, focado em desenvolvimento mobile e back-end, e não fala mais de Ruby. Ilya Grigorik teve sua startup comprada pelo Google e acabou sumindo também. Matt Aimonetti, depois do episódio Merb vs Rails, se retirou em silêncio e hoje trabalha com Go.

Ryan Bates, um dos mais queridos da comunidade pelo trabalho incansável de anos no RailsCasts, parou de publicar faz meses e não declarou nada a respeito. David Chelimsky, mantenedor do RSpec, passou o bastão adiante e saiu sem alarde. José Valim, um dos principais nomes por trás do Rails 3, hoje está com Elixir e Erlang e raramente comenta algo sobre Ruby.

“O.M.G! Quer dizer que tudo acabou!? Foi pelos ares!?”

Não. Nesse meio-tempo, centenas de novos rubistas surgiram e tocaram o trabalho para a frente. O exemplo mais imediato são Carlos Antônio e Rafael França, que meio que assumiram o manto do José Valim no Rails Core. Evan Phoenix assumiu o manto do Chad Fowler na Ruby Central. Avdi Grimm meio que assumiu o do Ryan Bates com o excelente RubyTapas, e por aí vai.

Uma comunidade é feita de indivíduos, e cada indivíduo rende mais quando age para maximizar o próprio benefício. O efeito colateral disso é que ele acaba influenciando e puxando outros para cima junto com ele. São sempre trocas voluntárias para benefício mútuo. Ninguém age sem nenhum benefício próprio; há quem acredite que sim, e são justamente esses que chegam mais rápido ao “burnout”, porque logo a pergunta vira:

"Por que eu me canso tanto de colaborar nessa comunidade, me estresso, e mesmo assim nem todos apreciam o que eu faço? Eu faço tudo por eles!"

Essa é a pergunta errada, e pergunta errada leva a resposta errada. Alguns começam a achar que os outros lhe devem algo, já que dedicaram tanto do tempo livre (ainda mais no mundo open source) para “ajudar os outros”. E “os outros” acham que não devem nada, porque ninguém pediu esse esforço em primeiro lugar. Na prática, “os outros” estão certos.

Se você participa de uma comunidade, faz isso por você mesmo. Pode ser porque entende que ajudar os outros faz parte da sua recompensa pessoal. Pode ser porque isso traz paz de espírito ou consciência limpa. Ou porque você é bom estrategista e sabe que certas contribuições vão abrir portas lá na frente. O motivo não importa, desde que exista uma recompensa que você não cobra dos outros de forma obrigatória. Cobrar respeito, educação, compaixão, nada disso faz sentido sem contrapartida. Ninguém pediu para você fazer o que faz; se está fazendo, entenda que é por você. Essa é a definição de trabalho voluntário.

E deixando bem claro: trabalho voluntário é trabalho sem remuneração financeira, e não trabalho sem benefício ou puramente altruísta. Se o seu trabalho é remunerado, a conversa é outra, e aí o melhor conselho é o do Don Draper:

Voltando ao assunto, imagino que os nomes que citei, os que se retiraram de forma parcial ou silenciosa, entendem isso. Foram buscar satisfação pessoal em outro lugar. Não devem nada a ninguém, e ninguém deve nada a eles.

Já quem sai com declaração bombástica está, consciente ou não, jogando na cara dos outros: “você não me valorizou, agora perdeu a chance, e eu sei que vai sentir minha falta!” Não está escrito assim, mas é o que faz sentido. Do contrário, por que jogar no ventilador e transformar aquilo em controvérsia pública? Todo argumento por escrito é só parte da razão, nunca “a” razão.

Você, Indivíduo

O outro lado da moeda é quem segue, admira e idolatra uma dessas pessoas que largaram o lugar onde você está. Dependendo do nível de admiração, você fica sem chão, atordoado, sem saber para onde correr. Aí acontece uma de duas coisas: ou você procura outro ídolo e começa o famoso “ele nem era tão bom assim”, ou afunda na depressão e no desespero do “não sei o que vai ser agora”.

Meu conselho: "não tenha ídolos, tenha referências."

Pare de achar que você deve alguma coisa aos outros e, por tabela, pare de jogar nos outros a responsabilidade de ajudar mais gente. É isso que está acontecendo: você não entende o seu propósito e acha que os outros têm que fazer aquilo que você mesmo não faz. Pior, você deixa os outros decidirem o caminho que você vai tomar. Se a insegurança é tão grande assim, pare um instante e reflita sobre o que você “é” antes de tudo.

Seu único propósito na vida é cuidar de si mesmo e produzir, sem atrapalhar o caminho dos outros. Quando você faz isso, o efeito natural é que colaborações espontâneas aparecem, comunidades evoluem e todo mundo sai ganhando. Uma comunidade onde todos cobram todos cresce sem propósito.

Sobre tecnologia, opinião, proposta e promessa, lembre também: você quer estar sob “ataque” e restrição constantes. Não existe nada pior do que ser ignorado. Escrevi outro artigo, tradução de alguém bem mais sábio que eu, a Kathy Sierra, chamado Dilbert e a zona de mediocridade, onde cito:

Quanta coragem você tem? Até onde você (ou seu empregador) iria para evitar a Zona de Mediocridade? A menos que você esteja disposto a arriscar provocar ódio passional, talvez nunca sinta o amor. Scott Adams concorda. Num post recente no blog do Dilbert, ele escreveu: "Se todo mundo que for exposto a um produto gostar dele, o produto não terá sucesso... A razão pela qual um produto que 'todo mundo gosta' vai falhar é que ninguém o 'ama'. A única coisa que prevê sucesso é paixão, mesmo que só 10% dos consumidores a tenham."

E daí se alguém deixou a sua comunidade? Será que ela é tão frágil que uma pancada, não importa o tamanho do impacto, vai fazer tudo desmoronar? Se você acredita que a sua comunidade é apenas resistente, você tem razão: passado certo ponto, ela desmorona. Mas se ela for resiliente, maleável e adaptável, ela sobrevive. É o que garante a sobrevivência das espécies, a Lei do Mais Adaptável (não do mais “forte”; lembre da diferença entre resistente e resiliente, você quer ser o segundo).

Você é adaptável? Ou está só procurando validação dos outros, deixando que eles decidam por você? Uma coisa eu garanto: se um dia eu desistir do que faço, ninguém vai ficar sabendo por um comunicado escrito. Isso eu já tinha decidido no dia em que comecei.