terça-feira, 29 de abril de 2014

"Ponto fora da curva"

Ser chamado de "maluco", "caozeiro", "inventor de moda" e outros adjetivos menos publicáveis, é algo ao qual toda pessoa adepta da inovação deve estar acostumada. O que incomoda é quando os adjetivos são proferidos por pessoas do seu círculo de relacionamento.

Bem, as reações diante da minha última palestra foram fortes. Muitos (graças a Deus) aplaudiram, enquanto outros torceram a cara. Isso é normal e esperado, afinal, tratava-se de um assunto mais polêmico que mamilos (parafraseando meu amigo Daniel).

Diante dessas situações, minha resposta é sempre a mesma: Mostro o que os outros estão pensando. Isso prova que eu posso até ser "um ponto fora da curva", mas não estou sozinho.

Vamos dar mais uma olhada no que andam falando sobre novas tecnologias para aplicações corporativas, incluindo: Node.js e MEAN stack.




Por que eu aprendi Java?

Nos idos de 1997, Java ainda era uma novidade incipiente. Naquela época, eu era instrutor de cursos oficiais Microsoft, e estava comprometido com suas tecnologias (MS Visual C++, MS SQL Server etc). Bem, durante um curso oficial de Visual Basic (ainda não era o .NET), um aluno teceu elogios ao Java e ao Borland Delphi, e eu, no papel oficial de instrutor, reconheci os méritos e comecei um discurso marketeiro de crítica ao Java. Bem, o aluno ouviu atentamente o que eu disse, e terminou com uma afirmação: "Você deve conhecer muito bem o Java, para se posicionar dessa maneira".

Aquilo caiu como uma pedra na minha cabeça! Eu estava falando mal de coisas que eu não conhecia! Estava apenas repetindo discursos marketeiros. Eu me senti como uma velha fofoqueira, falando mal da vizinha só porque ela era jovem e bonita.

Então, resolvi que, a partir daquele dia, eu iria me dedicar a aprender Java (e Delphi), até para poder criticar com maior propriedade.

E foi assim que começou um relacionamento de quase 20 anos com a plataforma Java. Com o passar do tempo, me tornei um Java-tudo, um faixa-preta em tecnologia Java, tirando todas as certificações possíveis, até o SCEA. Escrevi alguns livros sobre Java, incluindo dois sobre a plataforma Java EE.

Hoje, eu posso criticar a plataforma Java com total conforto e tranquilidade, pois já fiz muita, mas muita coisa com ela.

Porém, eu tive humildade para aprender Java e boa vontade em utilizá-la e divulgá-la. Eu mantive minha mente aberta para isso e cresci profissionalmente e pessoalmente com isso.

É exatamente o que essas pessoas estão perdendo ao taxar de "loucuras" e "bobagens" o que eu falo, me classificando como "um ponto fora da curva".

Mas o que os outros estão falando mesmo?

Várias pessoas importantes do Mercado de TI, sejam profissionais, acadêmicos ou pesquisadores, estão convencidos da necessidade de adoção de plataformas mais leves e desacopladas, exigidas pelas mudanças em direção à Convergência digital e à Ubiquidade da informação.

Estas duas tendências são reais, estão acontecendo agora mesmo, e você já está atrasado! Não concorda? Bem, se você é uma pessoa de TI, e razoavelmente conectado, tem pelo menos 1 smartphone, certo? E deve ter um computador em casa e outro no trabalho. Talvez, tenha até um Tablet. Já parou para pensar quantos aparelhos diferentes você usa para ver a mesma informação? Por exemplo, o Facebook! Você está no aeroporto e o embarque está demorando, então, pega seu smartphone e dá uma "checada" no seu "feed", aproveitando a internet gratuita, certo? E, quando chega no Hotel, ou mesmo em casa, abre o laptop e comenta aquele post hilário do seu amigo. E depois, usa o computador do trabalho para acessar sua conta bancária e pagar um boleto. E você também acessa sua conta a partir do seu smartphone.

Essas atitudes são exemplos práticos de Convergência digital (serviços e informações sendo disponibilizados de forma digital) e Ubiquidade da informação (você acessa a informação a partir de vários meios e dispositivos diferentes).

É assim que vamos escrever o futuro?

Você já usou uma máquina de escrever? Eu já usei. E acredite: fiz curso de datilografia! Era uma geringonça lenta, trabalhosa, pesada e barulhenta. Escrever qualquer coisa com Máquina era um processo complicado. Isso, sem falar no "errou - jogou fora". Eu usava um "treco" chamado "fita corretiva", para eliminar pequenos erros, algo como aqueles corretores brancos que vêm em canetas. 

Para criar um documento técnico, era necessário usar máquina de escrever, e os desenhos e fluxos eram feitos por desenhistas, com prancheta e normógrafo. Acredite.

Porém, fazer qualquer coisa sem máquina era pior ainda, pois teríamos que escrever à mão, o que seria ainda mais lento, trabalhoso e feio. 

Máquina de escrever, prancheta e normógrafo eram instrumentos que se fizeram úteis em determinada época. Com o passar do tempo, novas tecnologias surgiram para facilitar a nossa vida. Porém, é claro, causaram mudança de atividade comercial e desemprego. Eu me lembro de uma loja especializada em suprimentos para máquinas de escrever, que vendia, entre outras coisas, fitas, máquinas, óleo, corretores, e fazia reparos. Nos anos 90 eu vi essa loja fechar. 

Inovação provoca evolução, e evolução provoca mudanças. 

Java e Java EE foram ferramentas úteis em uma era onde a Internet era novidade, e a modalidade mais rentável era o e-commerce. Hoje, a Internet é obrigação, e existem formas de monetização de produtos e serviços totalmente diferentes. É hora de abraçar novas tecnologias e parar de criar "castelos"!

Bem, chega de papo-furado! Vamos ver o que outras fontes andam falando sobre o assunto. Como eu não tenho grana para comprar relatórios e me associar a vários institutos de pesquisa, aproveitei o que existe gratuitamente na Internet, ou seja, coisa que você mesmo pode fazer.

Eu já falei do Tecnology Radar, da Thoughtworks, do HotFrameworks e de várias outas fontes. Porém, sei que as mentes mais conservadores têm dificuldades em absorver informações dessas fontes, consideradas por eles: "Garotada da Internet". Então, busquei fontes mais tradicionais, mais respeitadas pelas mentes conservadoras. 

Forrester

O Forrester é um instituto de pesquisa de tecnologia, que produz relatórios muito interessantes sobre vários assuntos. Eu gostaria MUITO de ter dinheiro para poder ler em detalhes alguns dos relatórios que eles produzem. Como não tenho, escolhi alguns deles, com base nos resumos gratuitos que eles publicaram. Vamos ver:

"The open Web is a culture, a community — and a set of preferred technologies for Internet applications. While HTML5 is the best known of these technologies, the open Web also includes JavaScript (client and server), CSS3, Representational State Transfer (REST) application programming interfaces (APIs), and mobile frameworks such as jQuery Mobile. Together, these technologies comprise a new application platform for the Internet that will gradually replace today's web platforms (HTML4, Adobe Flash, Microsoft Silverlight, Simple Object Access Protocol [SOAP] web services, Java EE, and .NET) for most applications. This research outlines the open Web platform's key components, their readiness, and how the platform is evolving."
Traduzindo: 

"A Web aberta é uma cultura, uma comunidade - e um conjunto de tecnologias preferenciais para aplicações para a Internet. Apesar do HTML 5 ser a mais conhecida dessas tecnologias, a Web aberta também inclui o Javascript (Cliente e Servidor), CSS 3, REST e frameworks móveis, como: jQuery Mobile. Juntas, essas tecnologias formam uma nova plataforma de aplicações para a Internet, que irá gradualmente substituir as plataformas de hoje em dia (HTML 4, Adobe Flash, Microsoft Silverlight, SOAP, Java EE e .NET) para a maior parte das aplicações. Esta pesquisa mostra os componentes chave da plataforma Web aberta, sua prontidão e como a Plataforma está evoluindo."

Bom, caros incrédulos, se vocês leram com atenção, o resumo da pesquisa cita as tecnologias de apresentação que eu defendo, como Javascript Cliente e HTML 5, além das tecnologias de negócio, como: Javascript servidor e o protocolo REST. E afirma também que essas tecnologias substituirão as atuais, incluindo SOAP e Java EE. 

Agora, notaram a data da pesquisa? Janeiro de 2012! 
"Development In The Enterprise: The Mobile Path Is Clear And Getting Easier!" Abril de 2013 (Michael Facemire's Blog - Forrester)
"Having an API layer makes your back-end services more consumable but doesn’t solve the new problem that is looming: scalability and performance. Your development teams should become conversant in event-driven architectures and protocols, as well as both front- and back-end JavaScript. We’re seeing large-scale success driven by those that make proper use of technologies such as NGINX and node.js"
Traduzindo: 

"Tendo uma camada de API, torna seus serviços back-end mais "consumíveis", mas não resolve o novo problema que surge: escalabilidade e desempenho. Suas equipes de desenvolvimento devem se tornar proficientes em arquiteturas e protocolos orientados a eventos, assim como Javascript Cliente e Servidor. Estamos vendo sucessos em larga escala conduzidos por aqueles que utilizam apropriadamente tecnologias como NGINX e node.js;".

Gartner

O Gartner group dispensa apresentações. Apesar da maioria das suas pesquisas e relatórios serem pagos, ainda existe alguma coisa livre, que pode ser baixada da Internet.

"Server-side Template Engines Aren’t Going Away … Yet" Abril de 2012 (Danny Brian - Gartner Blog Network)

"The event-driven framework is the newest breed, and Node.js is the most popular in this category. ...""...Event-driven frameworks are quickly gaining popularity, especially for development cases that require constant streaming of many small pieces of data. In such cases, no server-side template engine is necessary, with all rendering being left to the browser via JavaScript DOM manipulation. ..."
Traduzindo:

"Frameworks baseados em eventos são a última novidade, e o Node.js é o mais popular nessa categoria..."
"... Frameworks baseados em eventos estão ganhando rapidamente popularidade, especialmente para desenvolver casos que requerem fluxo constante de pequenos pedaços de dados. Nestes casos, não é necessário um engine de templates server-side, com toda a renderização deixada para o navegador, via manipulação do DOM com Javascript..."

IBM

A IBM é uma empresa que sempre consegue se manter antenada com o Mercado, absorvendo as inovações e sempre se reinventando. Veja só algumas das iniciativas delas relacionadas ao Node.js.

"IBM SDK for Node.js Version 1.1" Março de 2014 (Produto)
"The IBM SDK for Node.js™ provides a stand-alone JavaScript® runtime and server-side JavaScript solution for IBM platforms. It provides a high-performance, highly scalable, event-driven environment with non-blocking I/O that is programmed with the familiar JavaScript programming language."
Traduzindo:

"O SDK para Node.js da IBM fornece um runtime Javascript standalone e uma solução server-side para as plataformas IBM. Ele fornece um ambiente orientado a eventos, altamente escalável e de alto desempenho, com "non-blocking I/O" que é programado com a linguagem Javascript familiar"

Vocês acham mesmo que a IBM iria se comprometer com uma "furada"? com uma "loucura"? Ou será que a IBM também está virando "um ponto fora da curva"? 

"Use Node.js as a full cloud environment development stack" Abril de 2011 (artigo - IBM Developer works)
"As technology innovation continues to advance at a seemingly exponential rate, new ideas arise from day one that just make sense. Server-side JavaScript is one of those ideas. Node.js, an event-driven I/O framework for the version 8 JavaScript engine on UNIX-like platforms, intended for writing scalable network programs such as web servers, is the execution of that good idea."
Traduzindo:

"Conforme a inovação tecnológica continua a avançar, a uma taxa exponencial, novas ideias surgem e fazem sentido logo de cara. Javascript server-side é uma dessas ideias. O Node.js e seu framework baseado e eventos para a versão 8 do engine Javascript em plataformas Unix, pensando para criar programas web escaláveis, como servidores web, é a execução dessa boa ideia."

Isso era em 2011! A IBM já pesquisava o Node.js e já relatava seus bons resultados com isso. Hoje, o Node.js é uma das plataformas suportadas pelo projeto BlueMix, da IBM, que é a arquitetura de nuvem aberta da IBM, baseada no CloudFoundry. 

Amazon AWS

Bem, a Amazon é outro exemplo de empresa, não tão antiga quanto a IBM, que vive se reinventando. Desde que criou o AWS - Amazon Web Services, para hospedagem de aplicações em nuvem (IaaS / PaaS), ela abriu novos mercados que vão além do simples e-commerce. E sua plataforma dá suporte total ao Node.js:

"SDK da AWS para JavaScript no Node.js"
"Comece a usar rapidamente a AWS com o AWS SDK para JavaScript em Node.js. O SDK ajuda a eliminar a complexidade de codificação ao fornecer APIs do JavaScript para serviços da AWS, incluindo Amazon S3, Amazon EC2, DynamoDB e Amazon SWF. O único pacote disponível por download inclui a biblioteca do JavaScript da AWS e documentação. "

Como isso pode ser um "ponto fora da curva"? 

Cara, se você leu esse artigo e pesquisou as referências que eu citei, pode continuar não gostando das novas tecnologias, mas tem que reconhecer que os Gigantes do Mercado estão pesquisando e usando novas tecnologias, incluindo Node.js e outros exemplos de plataforma Web aberta. Você pode até fazer cara feia, mas não pode negar que estão surgindo e sendo empregadas novas plataformas para criação de aplicações, e que a introdução da Internet nelas é uma realidade, não mais uma novidade.

Se você continua pensando que é "bobagem", então o problema não sou eu...