Em Abril teremos o primeiro curso de Node.js e como instrutor não poderíamos encontrar parceiro melhor que Emerson Macedo.
Durante esta semana algumas pessoas me perguntaram se eu vejo futuro em Node.js e porque a eGenial lançaria um curso que ainda nem existe mercado consolidado ainda. Para responder estas coisas resolvi escrever este pequeno post para explicar a motivação deste treinamento.
Para entender a motivação primeiro precisamos entender o que é Node.js. Minha experiência com Node é muito pequena para poder falar com propriedade sobre o assunto mas o objetivo principal da tecnologia fica bem claro até mesmo nos primeiros estudos.
Nodel.js é um tecnologia baseada em evented programming. Nada de novidade já que utilizamos isso há anos em aplicativos desktop ou mesmo no browser com Javascript + Dom ou Flash. A diferença é que Node.js é voltado para evented programming no server, mas até aí também nada de novidade já que existem alternativas bem sólidas como Ruby Event Machine.
Bibliotecas como Event Machine e Twisted (Python) são criadas sobre linguagens com um paradigma central não baseado em eventos, isso também não impede que sejam tecnologias bem acabadas e com casos de usos de muito sucesso.
Node.js tem uma linha um pouco diferente pois ao invés de recriar o modelo de eventos utiliza Javascript como linguagem, o que lhe dá todas as vantagens de uma linguagem, a qual usamos completamente voltada para eventos, extremamente poderosa e em plena ascensão.
E qual a vantagem disso? Apesar de você também conseguir criar aplicações web convencionais como em Rails ou PHP a vantagem real não é esta. Como Node.js é baseado em evento ele cria um ambiente ideal para situações onde é necessário bastante assincronismo.
Pense em aplicações como Google Docs onde várias pessoas alteram o mesmo documento com resultado aparecendo simultaneamente para todos. Outros exemplos poderiam ser um web analytics com as informações aparecendo em tempo real, jogos online, dashboards para sistemas de vendas, chats, e muito mais. Os casos de uso são infinitos.
Quem já tentou desenvolver algo assim fazendo um pooling com Ajax ou Flash em um backend convencional sabe que a medida que o trafego aumenta é como se seu servidor estivesse sofrendo um DOS. O resultado é que você precisa começar a aumentar hardware ou usar várias técnicas como cache mais avançado. As coisas começam a complicar.
Se seu backend é orientado a eventos um forma mais otimizada é seu cliente assinar um canal com seu backend e ficar escutando pelas alterações. Ou seja, seu cliente passa escutar os eventos que ocorrem no seu servidor e pode trabalhar com os resultados quando eles estiverem realmente prontos ao invés de ficar perguntando isso o tempo inteiro. Resultado é uma arquitetura bem mais simples e uma carga muito menor em seus servidores.
Seres humanos ficam sempre perseguindo a ferramenta mágica que fará tudo e você só precisará aprender aquela única tecnologia.
Como, eu (Daniel), ministro treinamentos de Rails/Ruby sempre escuto gente perguntando se Node.js é melhor do que Rails. É bem natural esse questionamento pois Rails continua puxando o carro da inovação e melhorando a cada dia a forma de desenvolvimento. Se aparecer uma outra tecnologia que é ordens de magnitude mais vantajosa que Rails então eu achei a bala de prata. A verdade é que isso não existe.
Essas perguntas tipo X é melhor que Y são sempre difíceis de responder, mas em especial no caso de Node.js é até bem simples. Os casos de uso são diferentes.
Rails continua sendo uma ferramenta fantástica para desenvolvimento web no paradigma de request/response convencional. Node.js é perfeito para assincronismo, principalmente entre cliente e servidor. Utilizando cada ferramenta no local correto você terá um arquitetura bem mais adequada e nada impede de ter em um mesmo sistema partes em Node.js e outras em Rails/Python/Java e etc.
Sendo assim, acrescentar Node.js ao seu cinto de utilidades vai expandir sua gama de soluções para casos onde você teria muito trabalho com as ferramentas que já conhece.
Node.js é baseado na linguagem mais utilizada do mundo e roda sobre uma máquina virtual que já se provou eficiente (V8), então as raízes da tecnologia são sólidas. O que ainda evolui é o próprio framework e seu ecossistema. Mas devo mesmo investir em algo ainda tão novo?
Há 5 ou 6 anos atrás as pessoas faziam a mesma pergunta sobre Ruby e Rails. Devo investir nisso? Em 2006 eu resolvi aprender Rails e hoje trabalho fulltime com a tecnologia, tendo muito mais sucesso que tive com PHP ou Delphi pois agora já tenho uma boa experiência em um mercado aquecido. Se Node.js vai explodir como Rails ainda é impossível saber, no entando isso não faz a menor diferença.
Em 2004/2005 eu trabalhava praticamente fulltime com Adobe Flex mas já faz alguns anos que mal abro a IDE. O que aprendi com Flex passou a ser inútil? Claro que não! Tudo que aprendi com a tecnologia ainda é completamente utilizável com jQuery por exemplo. O modelo de eventos é o mesmo, o modelo de propagação pelo dom é o mesmo, a organização de JS pode ser feita da mesma forma e por aí vai.
Uma coisa é fato. O modelo de evented programming no backend é uma necessidade e vai crescer mais ainda. Node.js vai se tornar a solução mais popular desse paradigma? Apesar de fortes indicativos que sim, ainda é difícil dizer. Mas os conhecimentos que você aprenderá serão extremamente úteis independente do nome da ferramenta. Mas uma coisa é fato: Javascript vai tomar uma proporção gigantesca e maior do que já é.
Neste ano estamos com quase 20 cursos diferentes programados mas a motivação real é ter uma grade com todas as disciplinas fundamentais para criar um profissional de altíssima qualidade.
Apostamos em Rails bem no início do framework e hoje temos 6 cursos de Ruby na grade e com um aceitação muito fenomenal, contribuindo para melhorar o mercado brasileiro.
Node.js é uma ramificação do Javascript para eventend programming no server que usa base tecnológica sólida (JS e V8) e que está evoluindo a passos largos.
Sem sombra de dúvida é uma das melhores alternativas para o que se propõe, então temos o dever de incluir isso na nossa grade e mostrar ao nosso público a importância de estar atento para novas e melhores soluções para problemas antigos.
Para puxar essa bandeira nós não poderíamos encontrar ninguém melhor do que meu amigo Emerson Macedo. Um profissional com um nível técnico muito alto, evangelizador de Javascript e Node.js, atualizado nos assuntos e com uma didática fantástica.
Esperamos vocês no curso de Node.js com Emerson Macedo.