Mi viaje de vuelta a Vanilla JS: ¿Por qué lo hago?
¡Hola a todos! Roberto por aquí. Llevo unos cuantos años ya en esto del desarrollo web, y si me seguís un poco, sabréis que he navegado por aguas muy diversas. He pasado por los brazos de Angular, me he sentido cómodo con React, he explorado las bondades de Vue, y por supuesto, he metido las manos en la masa con Node.js y sus ecosistemas. Cada una de estas herramientas, frameworks o librerías, nos ha ofrecido soluciones increíbles, ha acelerado nuestro desarrollo y nos ha permitido construir aplicaciones cada vez más complejas y robustas. Son, sin duda, pilares fundamentales del desarrollo moderno. Sin embargo, últimamente me he dado cuenta de algo. Algo que me ha hecho frenar el ritmo, mirar atrás y preguntarme si no estaríamos, en ocasiones, complicando innecesariamente las cosas.
La tentación de la abstracción
Creo que todos, en mayor o menor medida, hemos caído en la tentación de la abstracción. Los frameworks nos prometen estructuras, patrones, optimizaciones, y una manera de pensar que, a priori, parece la solución a todos nuestros males. Y muchas veces, lo son. Nos sacan de apuros, nos permiten construir rápido, y nos dan una comunidad con la que apoyarnos. He de confesar que he disfrutado de esos momentos, de la velocidad que te da un componente bien hecho en React, de la estructura que te impone Angular, o de la flexibilidad que te da Vue. Pero también, he empezado a sentir una especie de nostalgia. Una llamada a las raíces. Una necesidad de entender el motor, no solo de conducir el coche. Y por eso, he decidido emprender un viaje de vuelta. Un viaje a Vanilla JS. JavaScript puro y duro.
¿Por qué ahora? Las razones detrás del retorno
Sé lo que podéis estar pensando: "Roberto, ¿estás loco? ¿Volver a Vanilla JS en pleno 2024?". Puede que sí, pero hay razones que me pesan. La primera y más importante para mí es la simplicidad. Cuando trabajas con Vanilla JS, eliminas capas de abstracción. No hay un DOM virtual que gestionar aparte, no hay un sistema de templates que interpretar, no hay un compilador de por medio que te oculte el código JavaScript que realmente se ejecuta. Tienes el navegador y tu código. Así de directo. Esto me permite entender mejor qué está pasando, cómo se está manipulando el DOM, cómo se gestionan los eventos, cómo fluye la información. Siento que mi comprensión del navegador y de JavaScript a un nivel más profundo se fortalece día a día.
Otra ventaja que estoy redescubriendo es el rendimiento. Si bien los frameworks modernos están muy optimizados, a veces, la sobrecarga que introducen puede ser significativa en proyectos pequeños o medianos. Con Vanilla JS, tú tienes el control total sobre lo que se ejecuta. Puedes optimizar hasta el último detalle, asegurándote de que solo se carga y se ejecuta lo estrictamente necesario. Esto se traduce, en muchos casos, en aplicaciones más rápidas, ligeras y con un menor consumo de recursos. No es que los frameworks sean lentos, ¡ni mucho menos! Es que con Vanilla JS, tienes la capacidad de ser excesivamente preciso en la optimización si así lo deseas.
Además, está la independencia. No dependes de las decisiones de una comunidad o de los cambios de una librería externa. Tu código es tuyo, tuyo y del navegador. Si mañana React decide cambiar su forma de hacer las cosas, o Vue introduce una nueva API, puede que tengas que adaptar tu proyecto. Con Vanilla JS, mientras el navegador soporte una característica, tu código seguirá funcionando. Te da una libertad y una longevidad que, para ciertos tipos de proyectos, es invaluable.
Y, sinceramente, hay un componente de aprendizaje continuo. El mundo del desarrollo web avanza a una velocidad vertiginosa. Constantemente surgen nuevas herramientas, nuevos paradigmas. Me encanta mantenerme al día, pero también creo que es fundamental tener unos cimientos sólidos. Volver a Vanilla JS es, para mí, reafirmar esos cimientos. Es recordar por qué JavaScript es tan potente de por sí, y cómo podemos sacarle el máximo partido sin añadir capas innecesarias.
Los desafíos y redescubrimientos
No os voy a engañar, no todo es un camino de rosas. Volver a Vanilla JS implica enfrentarse a desafíos que habíamos dejado atrás gracias a la magia de los frameworks. La gestión del estado, por ejemplo, se convierte en un ejercicio más manual. Tienes que pensar bien cómo vas a organizar tus datos, cómo vas a actualizarlos y cómo vas a reflejar esos cambios en la interfaz de usuario. Nada de hooks de estado mágicos o sistemas de store predefinidos. Tienes que construirlo tú o, como mucho, apoyarte en patrones más básicos.
La modularidad también requiere una planificación más cuidadosa. Sin un sistema de módulos de framework, necesitas pensar en cómo vas a organizar tu código en archivos separados, cómo vas a importar y exportar funcionalidades. Aunque hoy en día tenemos los módulos de ES6, su integración y gestión en proyectos más grandes puede requerir más esfuerzo inicial que simplemente importar un componente de una librería.
Y, por supuesto, la reutilización de código. Si bien JavaScript puro ofrece muchísimas posibilidades, crear componentes UI reutilizables y mantenibles de forma aislada requiere una disciplina y un diseño que, con las herramientas adecuadas de los frameworks, a veces se daba por sentado. Ahora, tengo que pensar más en la composición, en la separación de responsabilidades, en cómo hacer que mis funciones y bloques de código sean lo más genéricos y potentes posible.
Pero, paradójicamente, estos desafíos son los que me están resultando más gratificantes. Me obligan a pensar más, a ser más creativo, a buscar soluciones elegantes y eficientes. Es como redescubrir las herramientas de un artesano después de haber usado máquinas modernas. Tienes que ser más hábil, más preciso, pero el resultado final puede ser, en muchos aspectos, más puro y satisfactorio.
¿Significa esto el fin de los frameworks? ¡Ni de lejos!
Quiero ser muy claro con esto. Este no es un manifiesto anti-frameworks. Los frameworks son herramientas fantásticas y seguirán siendo esenciales para muchos proyectos. Si estás construyendo una aplicación empresarial compleja, un dashboard interactivo con miles de funcionalidades, o un proyecto que necesita escalabilidad masiva, un framework bien elegido será probablemente la mejor opción. Te ahorrará tiempo, te dará estructura y te facilitará la colaboración.
Lo que sí creo, y lo que me ha llevado a este viaje, es que quizás hemos caído en una especie de "framework dependency". Nos hemos acostumbrado a que las herramientas hagan el trabajo pesado por nosotros, y en el proceso, podemos haber perdido un poco de esa comprensión profunda de cómo funcionan las cosas bajo el capó. Mi objetivo con este regreso a Vanilla JS es precisamente reconectar con ese conocimiento. Es como un músico que, habiendo dominado sintetizadores y efectos, decide volver a la guitarra acústica para entender mejor las cuerdas y la resonancia de la madera.
Reflexiones finales y el futuro
Este viaje a Vanilla JS me está enseñando muchísimo. Me está haciendo un mejor desarrollador, no porque esté usando una herramienta "más avanzada", sino porque me está obligando a pensar de forma más fundamental. Me está recordando el poder intrínseco de JavaScript y del navegador. Me está enseñando que la simplicidad no está reñida con la potencia, sino que, a menudo, son caras de la misma moneda.
¿Qué proyectos estoy haciendo con Vanilla JS? De momento, son más bien proyectos personales, pequeñas utilidades, o partes de proyectos más grandes donde el framework se siente excesivo. Estoy experimentando con Vanilla JS para construir interfaces de usuario interactivas, para manipular el DOM de forma eficiente, e incluso para explorar la API del navegador de formas que antes no me había planteado.
Si estáis sintiendo esa misma curiosidad, esa misma llamada a las raíces, os animo a que lo probéis. No tenéis que abandonar vuestros frameworks favoritos de la noche a la mañana. Empezad poco a poco. Cread una pequeña utilidad, refactorizad una pequeña parte de vuestro proyecto, o simplemente dedicaos un tiempo a leer la documentación nativa del navegador. Os aseguro que redescubriréis un mundo de posibilidades y, sobre todo, reforzaréis vuestro entendimiento de lo que significa construir aplicaciones web en su forma más pura. Este viaje de vuelta a Vanilla JS es, para mí, una forma de crecimiento. Una forma de entender mejor el oficio. Y, sinceramente, una forma de disfrutar más aún del desarrollo web. ¡Ya os iré contando cómo me va!