Cuando me pongo al día con antiguos compañeros de trabajo no es inusual que me bombardeen con preguntas relacionadas a como funciona trabajar desde casa, pero particularmente se ven muy curiosos acerca del stack tecnológico que se requiere para ser considerado por empresas transnacionales o bien fuera de nuestras fronteras. Pareciera que existe lapercepción de que es necesario especializarse en lenguajes y frameworks esotéricos para estar al nivel que se requiere en un trabajo remoto para una empresa extranjera.

La realidad es que hoy en día el secreto está en una moderna navaja suiza llamada JavaScript. No existe secreto bien guardado, no es nada exclusivo que sólo unos pocos tengan acceso y mantengan las puertas cerradas para los demás. Este pequeño lenguaje que inició su historia hace poco más de 20 años está a la cabeza hoy en día del desarrollo web (tanto en el navegador como del lado del servidor) y existe una feroz demanda por desarrolladores que conozcan las peculiaridades del lenguaje.

El JavaScript moderno sin embargo no es el mismo que conocimos hace 5, 10 ó 15 años. Lejos han quedado los días en que se utilizaba para realizar triviales tareas en una página web como un script adjunto, incluso lejos han quedado también los días en que JavaScript era sinónimo de jQuery. El lenguaje ha avanzado a pasos agigantados en los últimos años que puede parecer una tarea intimidante para alguien que recién empieza a estudiarlo y aprenderlo de manera formal o informal.

El estigma que se resiste a desaparecer

Pocos lo admiten, pero quienes nunca han desarrollado en JavaScript tienden a hacerlo de menos. Pareciera que existe un estigma relacionado a su uso como un lenguaje junior que no está a la altura de las necesidades actuales y que debe ser relegado a un segundo plano como tal. He encontrado estas actitudes provenientes particularmente de quienes tienen carreras hechas en lenguajes con muchísimos años más de historia, lo cual me hace recordar el también existente estigma hacia PHP.

Sería muy fácil desestimar dichas actitudes como sencillamente el miedo a lo desconocido, sin embargo estoy seguro que la historia del lenguaje tiene mucho que ver con esta percepción. A inicios de los años noventa se libraba una feroz batalla entre los primeros productos que intentaban establecerse como líderes en un naciente mercado de navegadores web, justamente al inicio de una revolución que hoy damos por sentado: la world-wide-web. Por aquel entonces Netscape contrató a un tal Brendan Eich para desarrollar un lenguaje de tipo scripting que pudiera ser embebido en páginas web de forma fácil y de esta forma poder ganar una ventaja competitiva al introducir un grado de complejidad un poco más alto que HTML sencillamente no permitía. Eich hizo un frankenstein de lenguaje y en 10 días tenía lista la primera iteración de lo que con el pasar de los años se convirtió en el lenguaje que hoy en día conocemos. La genialidad sin embargo no es que estuviera en 10 días listo un prototipo del lenguaje, sino que al haberse ideado desde un inicio en conjunto como un lenguaje que coexistiera con HTML y fuera casi sinónimo de la web garantizaría que cualquier implementación posterior de cualquier navegador debía también adoptar JavaScript para poder mantener compatibilidad.

Es esta particular anécdota la que mucha gente utiliza aún el día de hoy para desechar una herramienta tan poderosa como lo es JavaScript como un ciudadano de segunda clase. Si bien sus inicios son anecdóticos, en cuestión de un par de años el lenguaje se fue formalizando mediante su estandarización y definición oficial y hoy en día tenemos un lenguaje que recibe constantes actualizaciones y nuevas características y puede ser encontrado hasta en una tostadora. Es por lo tanto un tanto anticuado abordar JavaScript con una mentalidad de que se trata de un lenguaje limitado y relegado a hacer operaciones triviales en algún script en cualquier sitio web aleatorio que visitamos.

La primera explosión

JavaScript ganó prominencia en buena medida gracias a una librería que revolucionó el ecosistema en la segunda mitad de la década pasada. Me refiero por supuesto a jQuery, y su principal aporte fue demostrar que JavaScript era una herramienta apta para manipulación del DOM en tiempo real.

Tomemos un par de pasos hacia atrás y hablemos acerca del DOM. Antes de que existiera una abstracción llamada DOM, las páginas web se escribían en HTML puro y eran completamente estáticas. El Document Object Model, DOM, es una abstracción que define un documento como una estructura de tipo árbol, y cada elemento de dicho árbol es un objeto. Esta abstracción no depende de ninguna plataforma o ningún lenguaje.

La genialidad de jQuery fue empaquetar una colección de funciones en una librería práctica que permitía realizar búsquedas, transformaciones y manipulación del DOM de forma fácil desde un script de JavaScript y ya no manipulando directamente el HTML. Y para acceder a sus bondades bastaba con adjuntarlo de esta manera:

<script src="jquery.js"></script>

Surgió todo un ecosistema de plugins basados en jQuery y francamente fue un punto pivotal para el desarrollo web. Sin embargo con el tiempo su uso fue menguando y si bien hoy en día aún es común encontrarse con la librería embebida en muy buen porcentaje de los sitios que visitamos, ya no es indispensable y muchos desarrolladores activamente buscan no incluirlo como una dependencia de sus proyectos debido a que la gran mayoría de funciones que anteriormente la hacían valiosa ahora ya son parte nativa de la definición del lenguaje, lo cual la hace innecesaria y pesada de incluir.

Auge y madurez

La segunda explosión y la que yo considero estabilización del lenguaje como un participante principal en el panorama actual es el advenimiento de toda una oleada de frameworks modernos, estables y altamente escalables para el desarrollo de aplicaciones web. Tanto así que a inicios de la década el lenguaje comenzó también a utilizarse de forma consistente del lado del servidor para desarrollar y mantener robustos sistemas en escenarios anteriormente impensables.

Muchos argumentan a favor de diversos frameworks como los causantes de esta etapa de madurez y de sofisticación que se vive en el mundo de JavaScript. En mi opinión el punto de inflexión fue la introducción del ya venerable AngularJS como el primer framework moderno de JavaScript que inició todo un cambio de paradigma en el desarrollo de aplicaciones. Pasamos de tener una herramienta tipo jQuery que nos permitía manipular el DOM a tener un framework que abarcaba todo el espectro del ciclo de vida de una aplicación. Con el paso del tiempo surgieron frameworks aún más potentes y sofisticados, tales como React, Vue y versiones posteriores de Angular y el omnipresente Node.js del lado del servidor por nombrar los más populares hoy en día; los cuales han ampliado el horizonte que anteriormente se creía posible y han traído consigo todo un abanico de conocimientos y habilidades a aprender para quienes desean aventurarse en hacer carrera de esto.

El panorama actual es un tanto intimidante para quien viene de un entorno que no se mueve a la velocidad despiadada del ecosistema de JavaScript. Sin embargo soy el primero en admitir que si bien toma varios meses antes de llegar a un nivel básico de proficiencia, los resultados a la larga valen la pena. Nunca antes fue posible causar tanto impacto en un proyecto gracias a que existen librerías de apoyo para practicamente cualquier cosa que se requiere y sin tener que estar constantemente reinventando la rueda.

Ya sea que nos interese especializarnos en Frontend, Backend o Full Stack para los temerarios, el camino es largo y las oportunidades laborales están allí. Tampoco hace falta limitarnos a las fronteras de nuestro propio país, hoy en día es relativamente trivial encontrar trabajos enfocados en alguna de las tantas posibilidades que ofrece JavaScript fuera de nuestras fronteras pudiendo trabajar de manera remota.