Quinta-feira de madrugada navegando pelo Twitter, encontro o link para um post do TJ Holowaychuk dando adeus ao Node.js. Na hora logo lembro dos comentários do Filipe Deschamps, que tinha notado que o TJ estava bem negativo ao ecossistema Node.js e começando a falar muito bem de Go.

Pois bem, o post justamente explica o que estava acontecendo, e o anúncio de sua despedida foi um verdadeiro “BOOM” na comunidade, afinal o cara é simplesmente uma máquina de criar bibliotecas, e boa parte delas são utilizadas no dia-a-dia de um desenvolvedor Node (ex.: Express e Mocha).

Em época de Copa, cabe fazer uma comparação da saída do TJ, como a saída do Neymar da seleção canarinho, afinal ele não é apenas um “cuspidor de código js”, como também é um grande influente na comunidade devido ao incrível trabalho realizado aos longos dos anos, portanto a sua opinião tem um bom peso.

E por causa desse peso, que quero compartilhar com vocês algumas opiniões minhas de alguns trechos do post, com o intuito de provocar mais reflexões sobre eles.

“Node does some things well, but ultimately it’s not the right tool for the type of software I’m interested in these days.”
Natural, ainda mais no atual momento que estão surgindo tantas novas “ferramentas”. Ainda mais no back-end, onde existem tantos frameworks maturos para se usar e linguagens sólidas, e outras que estão ganhando grande força para resolver certos tipos de problemas (ex. o próprio Go para concorrência).
“The more I’ve been working with distributed systems, the more I’m frustrated by Node’s direction, which favours performance over usability and robustness.”
Usability e robustness não são problemas do Node em si, e sim do JS. Não vi muitos códigos em Go, mas sei que são mais robustos, pois a própria linguagem tem várias regrinhas (até algumas chatas), pra evitar que você faça cagada.
“Personally I’m most excited about Go because of its iteration speed, it’s exciting to see that they’re eager to reach 2.0 and from what I hear, they’re not too afraid to start breaking things already which is great.”
Isso é o grande calcanhar de Aquiles do JS (ES) em si, afinal qualquer mudança é um parto, e os próprios membros mais influentes da comunidade, trocem o nariz para algumas mudanças que serão feitas no ES6 (ex.: a sintaxe pra definir class – uma funcionalidade que é defensiva, devido as críticas que JS recebe por não se poder definir classes).
“Again — I’m not saying Go is the absolute best language out there and that you must use it, but it’s very mature and robust for its age (roughly the same age as Node)”
Em vários pontos ele fica comparando Go (linguagem) com Node (plataforma), como o David fala: comparando bananas com pregos.
“I also don’t want to wait 3 years for the community to defragment, when we have solutions that work now, and work well.”
Em vários pontos dá pra notar magoas com os cores members do Node, nesse fica mais claro ainda.
“Node fails however because: […] callbacks suck”
Para alguém com tanta experiência com Node, me surpreendeu essa reclamação. Afinal, callbacks são um saco mesmo, mas pra fazer async é preciso, não tem jeito, por isso que existem boas práticas pra evitar problemas (callback hell).
“Moral of the story, don’t get stuck in your own bubble! See what else is out there, you just might enjoy programming again. There are a lot of awesome solutions out there, my mistake was waiting to long to play around with them!”
Concordo plenamente da parte da bolha. Mas no geral achei bem agressiva as críticas, muitas comparativas de como Go é melhor que Node. Sendo que são coisas bem diferentes, e nascidas de forma totalmente diferentes. Go é uma linguagem “coxinha”, bem nascida. E Node é uma plataforma nascida do caos do JS, que se aproveitou do poder do V8 e libuv.

E vocês o que acharam? Algum motivo pra pânico ou é só uma marolinha?

Pra mim é só uma marolinha, e algo natural de se acontecer com o passar dos anos, afinal desenvolvedores não podem ficar presos a tecnologias, e se você encontrou uma que te ajuda a resolver melhor os seus problemas, Go for it!

Não podemos ficar criando pânico, afinal a comunidade de Node a cada dia cresce mais, e tudo está ainda só começando (o Node nem chegou a versão 1.0).

Nós desenvolvedores seremos pra sempre gratos pelas grandes contribuições feitas pelo TJ, foi sem dúvida um trabalho incrível! Que ele tenha o mesmo sucesso em suas novas aventuras!