O Programador Militante

Antes de mais nada, é importante dizer que este não é um fenômeno novo. Tenho observado isso desde 2011, e o comportamento é basicamente o mesmo em qualquer parte do mundo. Duas histórias são importantes para começar.

A primeira é de 2012. Eu era Analista de Sistemas Sênior em... Java. Para quem me conhece, sabe que não entro em oportunidades assim porque gosto, mas porque preciso. Na época, meu conhecimento chamou a atenção de um amigo que me colocou em contato com um editor de uma revista que escreve sobre programação Java. Confesso que não fiquei animado com o convite, mas estava disposto a escrever um artigo sobre alguma coisa da linguagem para ter alguma visibilidade. O assunto era livre, desde que sobre qualquer coisa que estivesse no mundo Java. Resolvi falar sobre as linguagens que funcionam em cima da JVM, como Scala, Clojure e Groovy. Gosto de todas elas. Também estabeleci um panorama histórico entre o surgimento das linguagens e a evolução do Java, explicando que a linguagem não tinha o poder de expressão a ponto de viabilizar o surgimento de novas linguagens. Tentei ao máximo não ser enviezado em minha opinião, citando várias fontes da internet, como sempre faço em quaisquer um dos meus textos. Afinal, essa opinião não é só minha.

O editor leu o texto e me respondeu que "eu estava sendo muito pessimista em relação ao Java", que todos os pontos de falha que apontei eram "facilmente corrigidos por uso dos frameworks tal e tal", e que "seria bom eu retirar esses pontos do texto, visto que uma revista que fala de Java não deve criticar o Java".

Por que não deve? Java está acima de qualquer crítica?

Eu respondi que não iria retirar coisa alguma do texto, que ele deveria ser publicado assim, se ele quisesse publicar. Ele disse, no melhor que sua educação permitiu, que aguardaria meus ajustes. O texto nunca foi publicado, obviamente.

"Mas você não pegou pesado demais?", não. Uma coisa é criticar por criticar. A outra coisa é desenvolver uma argumentação baseada em boas fontes e analisar em cima de critérios técnicos, que foi o que fiz na época.

A situação ocorreu idêntica novamente, após uma entrevista com um cliente alguns dias atrás. Minha opinião adquiriu mais propriedade após esses 5 anos, e o que acho inacreditável é que... as coisas continuam iguais! O mesmo estilinho de entrevista, os mesmos frameworks, as mesmas práticas ruins, tudo.

Não houve qualquer grande inovação em Java. Nem um framework, nem uma metodologia, nem um paradigma novo. O que teve foi copiado de outras linguagens e frameworks. Voltar ao mercado Java em 2016 foi exatamente igual à minha última tentativa, em 2013, para nova saída em 2014. O que se mudou é que a comunidade deixou de lado as Web Applications para se dedicar à escrita de microserviços REST, o que, convenhamos, não demanda grandes saltos tecnológicos, e aplicações mais sofisticadas para Android (televisão, tablets, carros, celulares, gadgets para casa), que usam Java mas não são parte do Java. As tecnologias já existem há muito tempo: apenas passaram a ser mais usada agora, seja qualquer uma das aplicações que mereçam discussão.

Os defensores do Java normalmente me mandam links como este para justificar que Java vai firme e forte, o que não é exatamente verdade. A metodolodia dessa relação, por exemplo, é o número de hits sobre um tutorial que uma determinada linguagem tem. Ora, considerando que para escrever em Java eu normalmente preciso pesquisar mais, este número não impressiona, exceto pelo fato de que Python é o segundo lugar com um crescimento impressionante. É a maior comunidade? Sim. Tem aplicações para tudo? Sim, exceto compilar código embarcado. É aberto, open source? Mais ou menos.

É aqui que o problema começa.

O maior deles está aqui. A Google teve um gesto corajoso, reescrevendo várias coisas capengas do Java para viabilizar o Android e, em retribuição, recebe esse repolhudo processo pedindo em troca US$9 bi, em valores atualizados até então. Se eu estivesse na Google, certamente me sentiria desanimado com isso. A última decisão favorece a Google, mas a Oracle prometeu apelar.

O panorama que se desenha é desastroso. Esgotada de ideias, nada indica que a Oracle desenvolverá algo novo pelos próximos anos, e pior: ainda que a Google tenha feito a opção de troca pela OpenJDK, a Oracle quer reivindicar também o controle sobre a implementação livre. Isso apenas acelera uma já iniciada corrida de programadores para outras linguagens (como este artigo que mede a popularidade de linguagens pelo número de desafios completados por programadores). Python é a linguagem dominante por cinco anos seguidos. As duas grandes mudanças da última versão estável do Java, a 8, para a antecessora, a 7, foram a implementação do paradigma funcional e a remoção da PermGen, uma estrutura de memória que não deixará saudade, mais grandes falhas que existiram por vários anos foram removidas. Ou seja, se a Google sinalizar suporte a outra linguagem no futuro, será a sentença de morte do Java.

Olhando pelo lado da produtividade, mais problemas. Lutz Prechelt, da Universidade de Karlsruhe, conduziu estudos a respeito da produtividade pelas linguagens de programação. Ainda que inconclusivos, eles mostram o que programadores que já passaram pelo Java já sabem. Demanda ferramentas grandes e caras para funcionar, exige hardware, é extremamente prolixo no padrão de projeto, demanda mais horas para ser desenvolvido, com uma complexidade assustadora em alguns casos e não é eficiente no uso de memória e processamento.

É aqui que evoco o humor. O humor é a melhor forma de explicar o estado de espírito dos programadores. O legal é que colocam Java e Python lado a lado.

Essay

Explicado tudo isso, posso explicar a cabeça do programador militante.

O programador militante não é apenas aquele que gosta de uma linguagem: é aquele que vai advogar em causa dela. Não aceita boa parte dos fatos, selecionando os fatos favoritos. Que não admite a crítica. Vai selecionar programadores que pensem como ele e que nunca levantem uma bandeira contrária. Irá proteger seus projetos sempre que possível e migrar outros projetos que não estejam na sua linguagem do coração, ainda que isso signifique trabalhar mais e imponha severas penalidades ao desenvolvimento e tempo de entrega de uma funcionalidade.

Te lembra alguma coisa?

Quase todos os programadores Java que conheço são, de certa forma, militantes, como o entrevistador da oportunidade de dias atrás, que disse que "eu me sentia melhor programando em outra coisa" (e é verdade, eu não gosto mesmo de Java, mas sei programar há uns bons anos, e isso não deveria contar como justificativa para uma negativa de trabalho). Ou seja, fui analisado pelo que gosto. Como não acho Java a melhor coisa do mundo, não sirvo para a posição.

O desprestígio da linguagem não existe para eles: o que existe é a implicância de programadores que não empatizam com a linguagem e suas, ham, maravilhosas funcionalidades. E frameworks, sobretudo. É claro que existem programadores assim em todas as linguagens, mas não se vê uma defesa tão histriônica em outras linguagens como esta, por exemplo, com filminho e auto-elogios piegas:

A melhor forma que existe de retroceder na carreira é se privar de espírito crítico. Entre ser certo e ser eficiente, enfrento um dilema em toda entrevista de Java. Afinal, pode-se esperar em quase todas um entrevistador que seja um programador militante. Para ser eficiente, é preciso exercer a empatia em detrimento da capacidade técnica.

E, quando é a empatia que prevalece, já sabemos o que podemos esperar do trabalho.

PS: Não faço questão de passar em qualquer entrevista que minha opinião sobre uma linguagem ou framework seja importante. Quem condiciona um bom e produtivo ambiente de trabalho somos nós, programadores, independente das ferramentas usadas. Claro que linguagens e frameworks ajudam, mas é quase sempre possível chegar ao mesmo objetivo independente da linguagem ou framework usados.

PS2: O leitor deve notar que gosto de Python, mas não faço uma defesa apaixonada da linguagem, achando que é a melhor coisa do mundo, muito menos dos frameworks dela. Ainda tem seus problemas e muito a melhorar. Críticas são sempre bem vindas!