Menos coronelismo, mais anarquismo
Comunidades e suas contradições
H á aproximadamente 100 anos, a República Velha sofria com um sistema político/eleitoral ao qual figuras conhecidas como "coronéis" tinham grande influência sobre o estado ou regiões conhecidas como "currais eleitorais". Nessa época, capangas a mando desses coronéis intimidavam pessoas afins de obter seus votos e garantir sua hegemonia. Felizmente a Revolução de 30 pôs fim a essa insanidade e entramos na "era Vargas".
Usei este resumido paralelo da nossa história “recente” para abordar um assunto um tanto "espinhoso" e delicado: Comunidades.
Antes de mais nada, deixo bem claro que tudo está baseado na minha experiência e opinião. Também não é um texto que busca impor minhas verdades e muito menos incentivar generalizações. Combinado? Leia com moderação. hehe
Desde início da minha empreitada em T.I., tenho o Open-source como uma das principais motivações que me fizeram trabalhar na área. É incrível saber que existem inúmeros projetos sendo mantidos por pessoas (boas almas) ao redor do mundo e que muitas vezes ajudam não só programadores mas, também grandes corporações, que por sua vez economizam "montanhas de dinheiro" ao usar bibliotecas, frameworks e diversos softwares abertos nos mais diversos sabores de licenças como por ex. MIT, GNU GPL (or GLP), Apache 2.0 e muitas outras.
Naturalmente quando comecei não conhecia nada sobre programação, então iniciei lendo livros de HTML, CSS, PHP, MySQL (…) entre outras tecnologias relacionadas, que na época (há pouco mais de 10 anos), já contavam com grandes comunidades que disponibilizavam conteúdos online, snippets de código, discussões em fóruns etc. Para mim, aquele "mundo" que estava se abrindo se mostrava cada vez mais fascinante e logo comecei participar de eventos, fóruns e como a maioria da galera que tinha intensão de colaborar, ajudei em traduções de documentações (de praxe).
Um passo além
Atualização pessoal está intrinsecamente relacionada com seu sucesso. Se manter competitivo/atraente ao mercado é praticamente uma obrigação e não adianta; ou você corre atrás ou se torna "obsoleto" e cedo ou tarde, será substituído por alguém mais preparado.
Procurando me atualizar, comecei participando de eventos de PHP (na época, trabalhava com a linguagem). Em um destes eventos, estavam alguns dos mais conhecidos desenvolvedores do Brasil e do mundo na linguagem. Foi ali que fiquei ainda mais interessado em aprender e me aproximar da comunidade.
Hora do Break
Como de costume, todo evento tem aquele momento de descontração, um break pra comer algo e aproveitar para ~fazer um network~ etc. Numa dessas conversas conheci um "famoso" membro da comunidade, ele tinha acabado de palestrar (se não me falha a memória, sobre Zend/PDO).
Papo vai, papo vem e ele comentou sobre uma iniciativa para contribuir para o Zend Framework e que estavam precisando de ajuda com algumas features/bugs etc. Bingo!! Era tudo que eu queria, afinal eu já tinha um certo tempinho com a linguagem, TALVEZ eu poderia ajudar. E fui pra cima!!
Na época fiz uma library bem básica, ela fazia "slugify" de caracteres especiais e já estava praticamente pronta, pois já usávamos na empresa e parecia estável. Adicionei mais alguns unit tests, melhorei o código e enviei no privado ao "palestrante" conforme combinado.
Expliquei que publicaria o código no meu github com um namespace qualquer por não se tratar de uma library nativa do Zend e ainda não ter sido "aceita" pelos core committers naquele momento. Então o rapaz concordou, agradeceu e super me encorajou sem restrições. Bacana!
Observação prévia: Devido ao conceito de autoloader
usado no Zend, você conseguia criar packages
usando namespace
ex. Zend_My_Package ou MyPrefix_Package e o autoloader fazia o parse e encontrava a classe especificada.
Cinco minutos depois, este mesmo rapaz vai no Twitter e posta;
"Odeio essas pessoas que ao invés de contribuir com a comunidade, criam suas próprias libraries… "
— Sério! achei a atitude bem infantil. Me desculpe.
— Por quê não deu o feedback ali na revisão? Enfim…
Fiquei meio frustado mas continuei trabalhando na minha library, sem pedir nenhuma opinião e bola pra frente. Aquela altura eu já havia participado de pelo menos 3 destes eventos de PHP e nunca mais senti vontade de voltar.
Apesar do inconveniente, estava muito claro pra mim que o PHP e sua comunidade não tinha culpa nenhuma de ter um membro arrogante esbanjando soberba. Conheci outros membros e eram totalmente diferentes, inclusive lembro de um papo com um deles sobre sua ORM (Doctrine) que foi fantástico (creio que ele não teria condições de lembrar, afinal faz muito tempo). Parabéns pela humildade, grande dev! (não quero citar nomes).
Além disso, também não tenho certeza que aquele post foi pra mim, no entanto, não concordo com a posição dele em cercear a criatividade alheia "cagando regra" do que ele gosta ou não. O quê ele gosta não é relevante pra comunidade.
Menos coronelismo
O que me chamou mais atenção no comportamento desse rapaz foi como ele pensava ter autoridade sobre a comunidade PHP ao ponto de quase EU precisar "pedir a benção" dele e outros membros sobre algo que EU poderia publicar. Pra mim não fazia e ainda não faz sentido. Software livre requer liberdade também. Ora?
Daí vem uma parte do título deste artigo: "menos coronelismo".
A linguagem é Open-source, galera. Faça com ela o quê você quiser, literalmente. Não fique preso a querer a "autorização" de alguém pra fazer algo, faça e ponto. Vai errar? Sim, obvio! Mas com certeza aprenderá muito com isso!
Mesmo com essa situação desconfortável, eu sabia que isso foi um caso pontual e seria absolutamente injusto eu generalizar e condenar todas as comunidades de PHP por conta de uma situação isolada. Portanto, peço que não interpretem mal, em todas as comunidades existem as "maçãs podres" e não há muito como evitar, sempre aparece alguém cujo ego é maior que seu próprio campo de visão.
Meses mais tarde eu receberia uma boa proposta para trabalhar com Python, mas isso vou contar um pouco adiante…
Mais anarquismo
Better to die fighting for freedom then be a prisoner all the days of your life. ― Bob Marley
O Python
A minha trajetória com Python teve início trabalhando para um grande veículo de comunicação do Brasil. Antes disso, eu tinha uma boa intenção de conhecer melhor por sua sintaxe limpa, simples e também por ser amplamente utilizada em diversas áreas como: Data Science, Web ou até mesmo embarcado no hardware. Me parecia uma linguagem bem robusta e tinha sido adotada por grande parte dos pesquisadores por ter boas bibliotecas matemáticas e de processamento de imagem. Curti bastante.
Voltando um pouco, ainda antes de trabalhar com Python, resolvi procurar os grupos mais relevantes, a fim de ficar "por dentro" das últimas atualizações da linguagem, dúvidas comuns, onde teriam os Dojos, Meetup etc. O primeiro meetup que participei foi organizado pela galera do Grupy-SP lá no Yahoo Brasil e ocorreu aproximadamente em 2008 (há pouco mais de 10 anos). O evento estava super cheio e ali estavam alguns dos principais nomes do Python em SP e no Brasil. Obviamente não lembro de todos, mas sei que compareceram: Luciano Ramalho, Guilherme Chapiewski, Tatiana Al-Chueyr, Rodrigo Pimentel (rbp) entre outros que não me lembro (perdoe-me o esquecimento).
Uma das características positivas que encontrei nos grupos de Python, era o quão essa galera estava aberta e disposta a ajudar iniciantes na linguagem, ao ponto de todos os participantes do Dojo, mesmo aqueles que não sabiam nada (como eu, na época) serem fortemente encorajados a fazerem pair programming com um membro do grupo. Lembro também de um Dojo na Gonow onde estava presente o Rodolpho Eckhardt (na época do Google) e que me senti muito a vontade de "meter a mão na massa" e não ter medo em errar. Além disso, uma outra característica legal do Python (na minha opinião), é que eles não enxergam com bons olhos empresas que querem criar certificações para a linguagem, afinal fica complicado definir quem estaria capacitado a "certificar" alguém— De novo, não acredito que isso seja apenas em comunidades de Python, porém essa foi a minha experiência.
Mas onde eu quero chegar com tudo isso?
Comunidades são extremamente importantes e fazem de fato as coisas acontecerem, mas nem todas elas vão se encaixar no seu perfil ou mesmo agir da forma como você espera, portanto é importante que você não crie tanta expectativa — Assim como fiz na minha primeira oportunidade (ainda quando trabalhava com PHP).
Pra mim, comunidades não podem ter "donos", ou "coronéis" que dizem o quê você deve ou não fazer. É preciso manter uma certa "anarquia" ao ponto de você poder fazer exatamente o que bem entender.
* Se você quiser criar uma library e publicar no PyPI? Ok. Vá em frente.
* Se você quer publicar um pacote no npm? Cara, sem problemas.
Sei que isso não é algo que ninguém explicitamente proibiu e nem teria como o fazer, mas de certa forma, existem aqueles "figurões" que adoram criticar e condenar gratuitamente assim como o rapaz citado acima fez postando no Twitter. Não deixe que ninguém sufoque sua criatividade, programe mesmo, faça código ruim, código bom, mas faça! A melhor forma de aprender algo, é fazer aquelas POC's que não servem pra nada, sabe? Pode ter certeza que dali vão surgir vários insights/approaches que consequentemente vão fazer você crescer e melhorar seu código. Juro!
Conclusão
Não gaste tempo se comparando com outros, colocando "em cheque" se você é bom o suficiente. Liberte-se da Síndrome do Impostor que por muitas vezes te faz se "auto sabotar" e desencorajar a tomar ações que você gostaria de tomar.
Particularmente, eu não me sinto obrigado a ser um grande nome da comunidade, não faz meu perfil. Mas não abro mão de estar nos grupos, criar minhas libraries, enviar PR's a projetos que tenho interesse em colaborar, se os "core committers" não aceitarem meu PR, tudo bem. No mínimo você receberá um feedback e terá aprendido algo mais e na próxima talvez enviará algo com mais qualidade.
Peace!