Todo sobre Node.js: por qué escribir backend en JavaScript y cuánto se paga por ello

Contamos cómo funciona el backend en JavaScript, si vale la pena aprender Node.js cuando hay PHP y Python, cuál es el futuro de esta tecnología y cuánto ganan los programadores de Node.js.
¿Qué es Node.js?
Node.js es un entorno de ejecución de código JavaScript fuera del navegador, que permite escribir código del lado del servidor para páginas web, aplicaciones web y programas de línea de comandos.

Node.js no es un lenguaje de programación independiente, sino una plataforma para usar JavaScript en el lado del servidor. Con esta plataforma, se puede trabajar con archivos, redes, bases de datos y otros recursos del sistema en el servidor.

En cuanto al lenguaje, tanto el frontend como el backend utilizan el mismo JavaScript. La diferencia está en el conjunto de API que utilizan los desarrolladores frontend y backend. JavaScript en el navegador utiliza las API web, que proporcionan acceso al DOM y la interfaz de usuario de las páginas y aplicaciones web. JavaScript en el servidor utiliza API que proporcionan acceso al sistema de archivos de las aplicaciones, solicitudes HTTP y flujos.
Breve historia de Node.js
La plataforma Node.js fue presentada en 2009 por el ingeniero Ryan Dahl, y su desarrollo fue patrocinado por la empresa Joyent. Joyent es conocida por su apoyo a proyectos de código abierto, incluyendo Node.js, Illumos y SmartOS.

Para crear Node.js, Ryan Dahl utilizó el motor V8. La plataforma se implementó con un modelo de entrada/salida no bloqueante de bajo nivel, basado en un modelo orientado a eventos. Esto significa que Node.js puede manejar múltiples solicitudes simultáneamente sin bloquear otras operaciones.

A finales de 2014, el ingeniero Fedor Indutny, que formaba parte del equipo principal de desarrollo de la plataforma, creó un fork popular de Node.js llamado io.js. El fork surgió debido a la insatisfacción de los desarrolladores con la política de la empresa Joyent.

La plataforma io.js superaba a Node.js en rendimiento, pero los creadores del fork decidieron reunirse con Node.js en 2015 para influir en el desarrollo de la plataforma principal. Actualmente, el desarrollo está formalmente dirigido por la Node.js Foundation.
¿Dónde se utiliza Node.js?
Creación de aplicaciones de servidor

Node.js permite desarrollar aplicaciones de servidor potentes y escalables. La plataforma se utiliza para crear servidores web, APIs, aplicaciones en tiempo real y otras aplicaciones de servidor, SSR para React y otros frameworks frontend.
Desarrollo web

Con Node.js se pueden crear aplicaciones web completas, trabajar con bases de datos, gestionar enrutamiento y procesar solicitudes de clientes.

Node.js es especialmente adecuado para el desarrollo de aplicaciones en tiempo real, que responden a las acciones del usuario en tiempo real. Por ejemplo, podría ser un editor en línea similar a Google Docs, que permite a varios usuarios trabajar en un mismo documento al mismo tiempo.
Transmisión de datos en tiempo real

Node.js es excelente para la transmisión de datos en tiempo real, especialmente cuando se trabaja con grandes volúmenes de datos o en tiempo real. Esto hace que la plataforma sea útil para el desarrollo de sistemas de procesamiento de flujos de datos, transmisión de video, chats y otras aplicaciones que requieren una transmisión eficiente de datos.
Herramientas de desarrollo

Node.js también se utiliza para crear sistemas de construcción de módulos, entornos de desarrollo, herramientas de automatización de tareas (como la construcción de proyectos y la ejecución de pruebas) y otras herramientas que facilitan el desarrollo y el trabajo con código JavaScript.
Internet de las cosas (IoT)

Node.js proporciona capacidades para la comunicación con dispositivos, procesamiento de datos de sensores, control y supervisión de dispositivos, así como integración con servicios en la nube. Para ello, existe el entorno de programación Espruino, que permite desarrollar sistemas integrados e IoT basados en microcontroladores. También se basa en JavaScript.
Línea de comandos

Node.js también se puede utilizar para crear herramientas y scripts de línea de comandos en el servidor. La plataforma proporciona acceso a los recursos del sistema y permite automatizar tareas en la línea de comandos.
Arquitectura de microservicios

Node.js es adecuado para construir arquitecturas de microservicios, donde los componentes individuales del sistema pueden implementarse como servicios separados que interactúan entre sí a través de una API.
¿Por qué aprender Node.js?
Elegir JavaScript en el lado del servidor para el backend proporciona una serie de ventajas al proyecto:
  • JavaScript es uno de los lenguajes de programación más populares, y al aprender Node.js tendrás la oportunidad de utilizar el lenguaje no solo para crear páginas web, sino también para desarrollar aplicaciones de servidor.
  • Mayor eficiencia en el desarrollo gracias al uso de un solo lenguaje para el frontend y el backend, y la posibilidad de reutilizar código.
  • Node.js tiene la capacidad de utilizar npm, el administrador de paquetes más grande.
  • Node.js utiliza un modelo de ejecución asíncrona, lo que permite manejar eficientemente múltiples solicitudes simultáneamente (hasta 10000 conexiones activas) sin bloquear.
  • Node.js permite crear aplicaciones de servidor potentes que pueden manejar solicitudes de clientes, trabajar con bases de datos, procesar archivos y mucho más.
Cómo se diferencia el backend en JavaScript de PHP y Python
Si en el navegador JavaScript domina por completo y no se ven competidores para este lenguaje en el frontend, la situación es diferente en el desarrollo del backend. Aquí, JavaScript compite con PHP, Python y otros lenguajes.

El backend en JavaScript es menos popular que PHP. Los sistemas de gestión de contenido más populares, incluyendo WordPress, Joomla! y Drupal, están escritos en PHP. Solo WordPress alimenta alrededor de un tercio de todos los sitios web en Internet.

PHP no permite escribir código asíncrono de forma nativa, por lo que se ejecuta un proceso separado para cada cliente. En Node.js esto es más sencillo: gracias al modelo asíncrono, se pueden manejar varias solicitudes a la base de datos al mismo tiempo.

Python se considera uno de los mejores lenguajes para aprender a programar. Python es versátil: se utiliza tanto en desarrollo web como en Data Science, Machine Learning y otras áreas. Node.js está más orientado al desarrollo web, especialmente a la creación de aplicaciones de servidor, servicios web y APIs.

Si la velocidad de procesamiento de datos es fundamental y es necesario manejar cálculos complejos, es recomendable elegir Python, ya que tiene un mejor rendimiento. Para un procesamiento más rápido, Python utiliza bibliotecas potentes como NumPy y Pandas.
¿Cuánto ganan los desarrolladores de Node.js?
Según datos del servicio "Hireline.io" para el año 2022, el salario promedio de un profesional en tecnologías de la información fue de aproximadamente 32,147 pesos mexicanos.

En julio de 2023, al buscar Node.js en indeed.com se muestran alrededor de 500 vacantes en México. 150 vacantes ofrecen salarios de 25.000 a 35.000 pesos mexicanos. Además, hay 32 vacantes con salarios de hasta 45.000 pesos mexicanos, 9 vacantes con salarios de hasta 55.000 pesos mexicanos.
Cómo instalar Node.js
  • 1
    Ve a la página de descargas en el sitio web oficial de Node.js.
  • 2
    Verás dos opciones: LTS y Current. Se recomienda elegir la versión LTS (Soporte a Largo Plazo), ya que es más estable y tiene un soporte prolongado.
  • 3
    A continuación, elige la versión para el sistema operativo que te convenga: Windows, macOS o Linux. También puedes descargar la imagen Docker oficial de Node.js o utilizar Node.js con plataformas adicionales, como Linux en sistemas Power LE.
  • 4
    Después de seleccionar la versión, comenzará la descarga del archivo de instalación de Node.js. Espera a que se complete la descarga, ejecuta el archivo de instalación y sigue las instrucciones del asistente de instalación.
  • 5
    Una vez finalizada la instalación, abre la terminal y escribe el comando node -v en la línea de comandos. Si Node.js se ha instalado correctamente, verás la versión de Node.js, por ejemplo, v20.2.0 (el número de versión puede variar).
Escribiendo el primer código en Node.js
Vamos a intentar crear un programa muy simple en Node.js. Para empezar, crea una nueva carpeta para tu proyecto. Luego, abre cualquier editor de texto y crea un archivo con la extensión js. Por ejemplo, hello.js.

Abre el archivo hello.js en el editor de texto y escribe el siguiente código:

console.log("¡Hello, World!");
Después de eso, guarda el archivo con el código que has escrito.

A continuación, abre la línea de comandos y ve a la carpeta de tu proyecto. En la línea de comandos, escribe el siguiente comando para ejecutar el programa:

node hello.js

Después de ejecutar el comando, verás la salida "¡Hello, World!" en la consola.
También te puede interesar:

Guía de Nest.js: qué es y cómo escribir tu primer código
Expertos sobre las perspectivas de Node.js
Hablamos con tres expertos en Node.js y les preguntamos su opinión sobre cuánto tiempo seguirá siendo popular la plataforma, por qué vale la pena aprenderla y cuánto tiempo se tarda en aprender el backend desde cero hasta el nivel de junior.
Igor Kamyshev: según las tendencias, Node.js se volverá aún más popular
*Igor Kamyshev, desarrollador de aplicaciones web en Aviasales. Desarrolla el ecosistema de bibliotecas para Node.js.
Por qué aprender Node.js. Node.js es una tecnología inusual. El ecosistema moderno de JavaScript fue creado por no programadores, por lo que hay muchas ideas frescas e inusuales en él. Comenzar a escribir aplicaciones en Node.js es más fácil que en Java, Ruby o PHP. Además, es una plataforma bastante madura, muchos problemas ya están resueltos y los mejores enfoques son conocidos y documentados.
Perspectivas del backend en JavaScript. Cualquier backend puede ser escrito en cualquier lenguaje. La cuestión es la velocidad de desarrollo y la confiabilidad de esa solución. Las aplicaciones para Node.js se pueden escribir rápidamente, pero para garantizar la confiabilidad, es necesario esforzarse. Es importante tener en cuenta que JavaScript es un lenguaje con una tipificación dinámica débil, por lo que para compensarlo es necesario planificar la arquitectura de la aplicación de antemano y dedicar más tiempo a escribir pruebas.

En mi opinión, Node.js es adecuado para una amplia gama de backends, desde tiendas en línea hasta servicios educativos. Según las tendencias de crecimiento, Node.js se volverá aún más popular. Es difícil evaluar cuándo se detendrá este crecimiento, pero en este momento es un hecho.
Cuánto tiempo se tarda en aprender Node.js. Node.js es una plataforma súper minimalista. Básicamente, para entenderla, es suficiente aprender JavaScript y leer 10 páginas de documentación de Node.js. Supongo que si nunca has programado antes, puedes dominar todo lo necesario en 5-6 meses y convertirte en un miembro de pleno derecho del equipo.
Andrei Melikhov: el mercado necesita desesperadamente desarrolladores fuertes con experiencia en otros lenguajes
Andrei Melikhov, experto en programación en Yandex Cloud, presentador del podcast «Devshakhta»
Por qué aprender Node.js. Aunque muchos lo deseen, los sitios web todavía requieren renderizado en el servidor. Esto se debe no solo a tareas de SEO, sino también al tráfico móvil. Si no queremos complicarnos la vida y utilizamos el mismo código en el servidor y en el cliente, nuestra elección prácticamente se reduce a JavaScript.

Por supuesto, también hay exotismo compilado en JS, pero a excepción de TypeScript, todo esto todavía es bastante difícil de tomar en serio. Entonces, necesitamos JS en el servidor, y aquí el jugador principal es Node.js. Sí, vale la pena recordar que existen otras soluciones que permiten ejecutar JS fuera del navegador, pero en comparación con Node.js, su participación es insignificante. Eso es lo primero.

En segundo lugar, en algún momento es necesario trabajar con datos almacenados en el servidor. Creo que cualquier desarrollador web debería entender al menos a nivel básico cómo funciona esto. Y aquí Node.js es una excelente opción, ya que permite crear un servidor web completo con una barrera de entrada mínima.

En tercer lugar, a pesar de todas las burlas y desconfianza, Node.js ha madurado hasta convertirse en una herramienta casi adulta y sigue desarrollándose. Hoy en día, finalmente tenemos herramientas decentes, tipado estático e incluso un buen framework (Nest). Podemos recomendar Node.js con confianza como una solución de servidor para proyectos grandes y de larga duración.
Perspectivas del backend en JavaScript. Si hablamos específicamente del lenguaje, vemos que JS gradualmente se está convirtiendo en el objetivo de compilación en lugar de ser el lenguaje en el que se escribe el código. Y en el caso de Node.js, la principal razón aquí es TypeScript, ya que a diferencia del navegador, no necesitamos transpilar JS a JS, tenemos control total sobre el entorno de ejecución. Sin embargo, las posibilidades que nos brinda TypeScript son mucho más amplias que simplemente azúcar sintáctico.

Y si tomamos herramientas modernas como Nest, las utilizan activamente. Un proyecto moderno en Node.js implica tipado estático, inyección de dependencias, patrones de diseño. Tal vez esto signifique que se pierde la simplicidad y la facilidad de JavaScript, pero a cambio obtenemos confiabilidad y simplificación del desarrollo y el mantenimiento en proyectos grandes.

Inesperadamente, JavaScript se ha convertido en el lenguaje para todo. Servidor, navegador, teléfonos móviles, aplicaciones de escritorio, IoT: JavaScript se siente bastante bien en todas partes. Una dirección completamente nueva resultó ser las AWS Lambdas (serverless), donde JavaScript también se ha mostrado muy bien. Así que sí, los desarrolladores serán demandados. Pero si hablamos del servidor, creo que el mercado necesita desesperadamente desarrolladores fuertes con experiencia en otros lenguajes.
También te puede interesar:

¿Merece la pena aprender JavaScript: perspectivas, situación del mercado laboral, opiniones de expertos
Por dónde empezar a aprender Node.js. Deberías comenzar aprendiendo UNIX y, en general, los fundamentos de las redes informáticas. Después de eso, puedes intentar escribir una aplicación simple en Node.js, preferiblemente sin frameworks (incluido Express). Una vez que entiendas qué son TCP/UDP y HTTP/HTTPS, puedes intentar escribir un backend completo en Express que envíe datos a través de AJAX y renderice HTML. También tendrás que familiarizarte con Nginx o HAProxy, entender qué es el equilibrio de carga. Sería muy útil tener al menos un conocimiento mínimo de qué es Docker y para qué se utiliza.

El siguiente paso que recomendaría es sumergirse en TypeScript y probar Nest. Una buena opción es aprender Angular + Nest, ya que Nest está fuertemente influenciado por Angular y utiliza conceptos similares.

Recomiendo encarecidamente el libro "Node.js Design Patterns" de Mario Casciaro.
Alexey Zolotykh: el mercado laboral necesita desesperadamente desarrolladores de Node.js
Alexey Zolotykh, líder de equipo en MoiOfis, coorganizador de la conferencia HolyJS
Por qué aprender Node.js. Últimamente, Node.js se está convirtiendo en una tecnología cada vez más madura. Se están desarrollando herramientas serias para la depuración, el seguimiento y la detección de otros problemas. La comunidad está acumulando experiencia. El movimiento hacia microservicios está compensando las deficiencias en la falta de tipado estático al reducir la complejidad. Y sí, para proyectos grandes todavía tenemos TypeScript.

Creo que Node.js definitivamente tiene futuro y definitivamente tiene espacio para crecer. Al mismo tiempo, la barrera de entrada es muy baja. Esto permite no pensar en tecnologías y complejidad, sino simplemente concentrarse en el producto.
Perspectivas del backend en JavaScript. En general, estoy en contra de estar atado a tecnologías. Un buen ingeniero debe elegir la tecnología en función de la tarea, en lugar de tratar de ser el tipo con el martillo para el que todo a su alrededor es un clavo. En este momento, Node.js tiene una velocidad decente en algunos aspectos, una barrera de entrada baja, una alta popularidad y una gran cantidad de bibliotecas para todo. Por otro lado, muchos problemas aún no se han resuelto. Pero creo que esto suena como un desafío.
Cuánto tiempo se tarda en aprender Node.js. Todo depende de la persona. Si eres curioso y persistente, creo que no menos de seis meses.
Leer otros artículos de Blog
Lee otros artículos relevantes del mundo de la tecnología y el espíritu empresarial.