Este artículo está dirigido a cualquier programador PHP que quiera incursionar en Node.js. La idea no es abandonar del todo PHP pero sí sumar una nueva herramienta con la que si bien compite, también lo complementa.
Te contaré mi historia personal enfocada en estos últimos cuatro años donde incorporé Node.js y otras tecnologías derivadas de JavaScript de forma definitiva y prioritaria a mi saber en materia de tecnología.
La idea del artículo es contarte cómo fue mi camino y orientarte para que te sea fácil a ti emprender el tuyo.
Contenido
- 1 Aclaración inicial: esto no es un ataque a PHP
- 2 Tiempo de cambio
- 3 Similitudes entre los lenguajes
- 4 Estudio de JavaScript ES6
- 5 Práctica de JavaScript en Codewars
- 6 Curso de Node de Fernando Herrera
- 7 Libro Web Development with Node & Express, de Ethan Brown
- 8 Proyectos personales
- 9 Consejos extra
- 10 Un cambio de rumbo que vale la pena
- 11 Más contenido sobre programación y modo de vida freelancer en Crónicas Freelancer
Aclaración inicial: esto no es un ataque a PHP
Por las dudas me gustaría comenzar con esta aclaración. No estoy contra PHP ni mucho menos. PHP ha sido para mí una herramienta que me ha permitido progresar profesionalmente. La he utilizado durante muchos años y me ha permitido ganar buen dinero ya sea como programador PHP o a través de la monetización de sitios con WordPress, que al fin y al cabo corren sobre PHP.
No considero para nada que PHP esté muerto. De hecho, vengo escuchando desde hace años frases como: «PHP está muerto, hay que estudiar X tecnología». Después de no mucho tiempo, la tecnología X pasa a ser moda pasajera y PHP sigue vigente, seguro y actualizado.
PHP8 combinado con Laravel es una formidable herramienta de desarrollo web.
Particularmente me gusta mucho el cambio a partir de la versión 7, intensificado con la 8, y la combinación PHP con Laravel, que sigue siendo una excelente herramienta de desarrollo web.
Tiempo de cambio
Más allá de que me gusta PHP, últimamente ya no estaba disfrutando de usarlo. Cuando uno programa mucho en una tecnología llega un momento en que se aburre y quiere aprender algo nuevo y diferente.
Antes de volcarme a Node.js hice unas pruebas con Unity. Sí, el motor de videojuegos que utiliza C#. Estuve enganchado unas semanas, tal vez un mes, pero una vez más me tiró la programación web.
Como todo desarrollador web, tenía un manejo digamos avanzado de JavaScript y dominaba viejas tecnologías como jQuery y más nuevas como Vue.js.
Había realizado algunos proyectos en Node.js inlcuyendo uno para una empresa importante allá por 2018. Además, había comenzado a migrar alguno de mis proyectos de PHP a Node.js, que a cada vez me parecía más interesante.
Si bien Node.js ya estaba dentro de mi set de herramientas, me pareció que era momento de considerar a JavaScript del lado del servidor como primera opción a partir de ahora, relegando a PHP.
Tuve la suerte de tener tiempo disponible para recapacitarme y comencé a estudiar JavaScript y Node.js de manera más formal y comenzando desde cero, para descontaminarme de algún conocimiento previo que pudiera tener.
Seguramente estés pensando que no es fácil obtener tiempo para estudiar si se lleva en paralelo un trabajo. Estás totalmente en lo cierto.
Por eso, si te interesa hacer este tipo de cambios en tu carrera, lo mejor que puedo recomendarte es que te hagas un hueco de al menos unas horas a la semana para poder estudiar. Si no, te será muy difícil.
Similitudes entre los lenguajes
Si te interesa pasar de PHP a Node.js y tenés una buena base de JavaScript, el salto no te será difícil. Los dos son lenguajes de servidor y se utilizan básicamente para funciones similares, más allá de algunas diferencias, con ventajas y desventajas de ambos lados.
Cuando uno comienza con Node inmediatamente ve las diferencias. Sin embargo, los dos lenguajes son, en esencia, no tipados. En ambos se puede programar orientado a objetos y si bien JavaScript fue actualizado para tener un mejor soporte para programación funcional, las últimas actualizaciones de PHP, lo acercan más a este paradigma también.
PHP y Node.js tienen más similitudes que diferencias.
Además, como ambos son lenguajes modernos, aparecen equivalencias que si bien no siempre son directas, están más que claras. De este modo, Jest equivale a PHPUnit, npm a Composer, Laravel se empareja con Express y algunos paquetes especiales, y en general, para cada funcionalidad del lado de PHP, aparece su tecnología equivalente del lado de Node.js. Te será muy sencillo ir identificándolas.
A continuación te quiero contar sobre los pasos que seguí para, de a poco, ir pasándome a Node.js de forma definitiva y no tenerlo como segunda opción.
Estudio de JavaScript ES6
Lo primero y fundamental es estudiar ES6 (ECMAScript 2015) que es la actualización clave de JavaScript. Esta versión incorpora temas como desestructuración, arrow functions, template strings, operadores rest y spread, clases nativas y promesas.
Hay algo importante que me gustaría destacar. Todos estos temas que te nombro son fundamentales en el desarrollo web moderno. Son temas que se usan todo el tiempo. Así que si venís como venía yo, de usar jQuery o JavaScript plano, sin tener idea de los temas que te enumeré en el párrafo anterior, asumite como desactualizado. Comenzá a estudiar JavaScript, poniendo énfasis en ES6 para adelante.
Estudiar ES6 es fundamental no sólo para dominar Node.js sino para considerarte un desarrollador web moderno y actualizado.
Para estudiar JavaScript te recomiendo mucho el libro JavaScript: The Definitive Guide, de Flanagan, O’Reilly. Es un libro fundamental sobre JavaScript moderno y por eso le dediqué un artículo en este blog. Si lo vas a adquirir en 2023, es importante que consigas la séptima edición.
Algo que te puede ayudar en el camino del aprendizaje de JavaScript (y también desviarte de Node) es aprender React o Vue.js. Yo he programado en ambos y si bien al principio React me parecía horrible, con el tiempo lo terminé aceptando. Creo que React con su aversión por la mutabilidad te obliga a programar utilizando todo lo nuevo de ES6 en adelante.
La desventaja de desviarte con las tecnologías de frontend es que necesitarás todavía más tiempo para llegar a lo que realmente te interesa: Node.js.
Práctica de JavaScript en Codewars
Hace un tiempo escribí un artículo sobre mi experiencia y opinión de Codewars, la plataforma para practicar ejercicios de programación.
Si bien este sitio web puede ser polémico por varios motivos que te cuento en el artículo, también puede ser provechoso cuando estás aprendiendo o intentando dominar una tecnología.
Los katas (ejercicios de programación) de Codewars clasificados como 7kyu y 6kyu son excelentes para practicar técnicas de ES6.
Codewars y plataformas similares pueden ayudarte a estudiar la sintaxis de JavaScript.
Te recomiendo que le des una oportunidad. Al principio vas a resolver todos los problemas a la vieja usanza, con bucles for. Pero luego, al ver las soluciones aportadas por otras personas, comenzarás a acostumbrarte a usar filter, map y reduce.
En unos meses vas a ser un programador más de JavaScript buscando nuevos desafíos en CodeWars.
Curso de Node de Fernando Herrera
Hasta acá te conté mucho sobre JavaScript y poco sobre Node.js. Pero bueno, después de todo, Node.js no es más que JavaScript corriendo del lado del servidor.
Llegado el momento, con los conocimientos más consolidados, me pareció provechoso comprar un curso online y seguirlo para cubrir todos los huecos de conocimiento que pudieran haber quedado.
De todos los cursos que había en Udemy el de Fernando Herrera fue el que más me llamó la atención: Node: de cero a experto. Tenía excelentes reviews y cubría todos los temas que yo consideraba fundamentales incluyendo Express.
Hasta ese momento nunca había hecho un curso en Udemy y tenía mis dudas ya que yo soy más de los libros que de los videos.
Finalmente me decidí a comprar el curso y en pocas semanas comprobé que fue una gran decisión.
Un curso online puede ayudarte a acelerar los tiempos de aprendizaje de cualquier tecnología.
Fernando Herrera es un gran profesor y explica de forma clara. El curso tiene un enfoque práctico. Consiste en la construcción de diferentes aplicaciones utilizando Node.js. A esto se le suma el aprendizaje básico de MongoDB y la utilización de herramientas como VSCode y Postman.
Mi experiencia en el mundo del desarrollo web hizo que el curso sea mucho más accesible. Yo ya tenía muchos conocimientos de Node.js y eso me permitió avanzar con mayor velocidad de lo previsto. En ese sentido, es útil la herramienta de Udemy para acelerar la velocidad de reproducción de los videos.
Un punto a favor de este curso es que contiene una sección especial de repaso de ES6. Allí se ven los temas fundamentales que te comenté más arriba. Sin embargo, esto no reemplaza la práctica necesaria que te mencioné antes.
A pesar de que te dejé un enlace de afiliado, no es mi idea venderte el curso de Fernando Herrera. Consideralo un atajo si no disponés de tanto tiempo. Y en caso de que decidas comprarlo, esperá a que esté en oferta (alrededor de US$ 10).
Libro Web Development with Node & Express, de Ethan Brown
Este libro lo compré como complemento al curso de Fernando Herrera porque me pareció que podía contener formalizados algunos conceptos básicos de Node.js. Es que a mí me gusta tener todo por escrito.
La verdad es que Web development with Node & Express no cumplió con mis expectativas. Es una obra que está dedicada al desarrollo de páginas webs clásicas sólo que en vez de utilizar PHP y HTML, es con Node.js y HTML. Aborda temas periféricos como estructurar el contenido de una web, contratar hosting o utilizar un servidor de correos.
Obviamente yo esperaba algo más técnico y más cercano a la programación. Sin embargo, tengo que admitir que he aprendido algunas cosas de este libro. Creo que puede ser útil para aquellas personas que nunca programaron en ningún lenguaje de servidor.
Proyectos personales
A pesar de ser un curso práctico, el de Fernando Herrera fue para mí la columna vertebral del aprendizaje teórico. Lo que le faltaba para complementarlo era crear algún proyecto propio en Node.js sin ningún tipo de guía.
Así fue como comencé a soltarme con Node y a crear CRUD básicos con algunas funcionalidades especiales. También hice algunos ejemplos de APIs. Aquí es una buena idea incorporar algo de Vue.js o de React para complementar y profundizar los conocimientos de JavaScript.
De nada sirve aprender una nueva tecnología si no se la aplica en algún proyecto.
En esta etapa no queda otra que programar y programar. Con el tiempo, con cada commit, el código irá pareciéndose cada vez más al de los programadores de JavaScript y Node.js.
Consejos extra
Por último, me gustaría dejarte algunos consejos extra. Seguramente vaya ampliando esta sección a medida que siga trabajando con Node.js y encontrando paralelos o atajos para quienes vienen de PHP.
¿Tu código se ve diferente? No te preocupes
Es probable que al venir de PHP y del JavaScript pretérito, el código que escribas al principio funcione, pero no se vea igual que el que escriben otros programadores de JavaScript.
Tal vez donde vos metés un forEach o un for, ellos usan un map o un reduce. O en vez de acceder a atributos de objetos usando el punto, ves que desestructuran todo. No te preocupes por eso. Seguí estudiando y con el tiempo vas a comenzar a hacer lo mismo.
No te olvides de PHP
Pasado un tiempo es probable que comiences a confundirte o a olvidarte de la sintaxis de PHP. Si esto es así, te recomiendo nuevamente Codewars. Allí vas a poder repasar la API y las técnicas básicas del lenguaje que ya dominás, para no perderlo.
Un cambio de rumbo que vale la pena
Incorporar JavaScript de manera formal y Node.js como nuevo lenguaje de servidor me ha dado un impulso importante como desarrollador web. Ahora siento que domino más temas y que estoy dotado de una mayor versatilidad en materia tecnológica. Ya nada del mundo JavaScript me resulta ajeno y ahora domino dos enormes ecosistemas.
Y en ese sentido, también me siento parte de dos comunidades, por lo que en las flame wars… ¡todo me afecta el doble!
Más allá del chiste, recordá que los lenguajes de programación no son más que herramientas. Un destornillador no es mejor que una cuchara y un cuchillo no le gana a un martillo. Cada uno tiene su función y depende del programador saber cuándo y cómo usar cada uno.
Más contenido sobre programación y modo de vida freelancer en Crónicas Freelancer
Espero que este artículo haya sido de tu interés.
Si estás buscando hosting, te recomiendo Digital Ocean. Seguí este enlace para obtener US$ 200 de crédito para usar en un periodo de 60 días.
Te invito a que me sigas en las redes: LinkedIn, X, GitHub e Instagram. También estoy en Codewars.
Eso es todo. Muchas gracias por tomarte el tiempo de leerme.
Hasta la próxima.
Fuente foto:
Muy buena opinión, la verdad es que pensé que NODE.js era solo cambiar, pero veo que tengo mucho camino por delante.
Saludos Alejandro.
Hola, Jonathan.
Sí, es todo un camino a recorrer. Lo bueno es que Node.js comparte muchas características con PHP y eso hace que sea más fácil que pasarse a cualquier otro lenguaje como Python, Java o Go, por nombrar algunos.
Gracias por tu comentario.
Saludos