Oh, los famosos frameworks de JavaScript… cuánto han mejorado en nuestras vidas y cuánto daño han hecho a partes iguales. Diréis que a lo mejor me drogo un poco, pero tengo una visión clara y concisa de que los frameworks ayudan pero amargan. Y amargan, pero no ayudan a otros. Es el pez que se muede la cola.
Esta entrada será más de opinión y visión que de informar un poco. Pero aprenderemos muchas cosas con ejemplos reales de por qué entiendo yo por qué hay gente tan reacia a usarlos, como por qué la gente los ama y por qué hay tanta incertidumbre siempre.
Lo primero, ¿qué es un framework de JavaScript?
Si buscas en los motores de búsqueda, no encontrarás nunca nada que te explique exactamente lo que es un framework de JavaScript. Te dirán que es la revolución, una parte esencial del desarrollo web, la modernidad ha llegado… Pero nunca qué es exactamente.
Al fin y al cabo, un framework no es más que un conjunto de herramientas y funciones que utiliza un desarrollador para realizar su trabajo de forma más óptima, rápida y con herramientas ya desarrolladas para reducir los tiempos. Un ejemplo más claro de lo que es un framework es imaginar que queremos construir una casa y pensar en los materiales: ¿el constructor va a fabricar todos los materiales o los van a pedir al proveedor? Pues ese proveedor es el framework en cuestión, con sus «materiales» (herramientas) para no tener que empezar desde el inicio.
Hay frameworks de todas clases y estilos. Cuando hablamos de JavaScript, hay tres pilares super importantes: React, Vue y Angular. Cada uno con sus empresas por detrás en la carrera por ver quién es el mejor proveedor. Aunque siempre está la comunidad y otros frameworks que están haciendo su lucha para traer mejores novedades.
El por qué de que se han hecho tan famosos es porque gracias a lo bien optimizados que están, que trasladan la mayoría del trabajo al ordenador de quien visita la web (en vez del servidor) y que su interactividad es prácticamente inmediata; los hace casi la herramienta por elección para desarrollar webs.
Lo único malo que puede tener es que falle y no cargue la web si no se implementa algún tipo de estructura a mostrar cuando falle (pero lo mismo puede pasar si el servidor se cae). Y el otro «mal» es para el que quiera una web así, donde son mucho más caras que las tradicionales. Pero siempre hay un producto para cada bolsillo.
Creo que hay tres grandes problemas que son los que generan ese amor/odio que existe por todos lados.
Primer problema: ¿Cuándo utilizar (o no) un framework?
Siempre habrá desarrolladores que siempre partan con esta base de querer añadir un framework para todo. Incluso para cuando ni hace falta. Por supuesto que es una base muy importante, pero no tiene por qué ser necesario en ciertas ocasiones.
Hasta yo estoy loco por querer utilizar esos frameworks, a pesar de que no tengo un gran conocimientos de ellos. Quiero aprender cómo manejarlos y ver cómo resolver ciertos problemas en otros entornos.
¿Es 100% necesario utilizarlos en estos momentos?
No es que sea bueno o no, es que hay motivos en los que no tiene por qué usarse: el desarrollador no tiene experiencia, no quiere utilizar algo que ahora es volátil y cambiante en poco tiempo, implementa la solución sin framework (sabiendo que si lo hace con éste, puede que solo usara el 1% del mismo).
Hay casos que he visto últimamente que me dan ganas de decir, pues no es tan necesario meter un framework. Y es verdad: se puede simplificar mucho el desarrollo utilizando el mínimo entorno de desarrollo viable.
Aplicaciones sencillas
Jaime Gómez-Obregón es un crack al que llevo siguiendo un ya un par de años en Twitter y me encanta lo que hace. Se dedica a desenmarañar los sitios web de la Administración pública y crear herramientas super útiles para consultar todos los datos.
Y mirad qué tweet puso el otro día que me dio la vida sobre su último proyecto publicado:
Ni un framework de JavaScript como React, ni un framework de CSS como Tailwind… Nada. Ahí está su código: HTML, CSS (e incluso ha copiado de por ahí algunos estilos de Tailwind que se los ha llevado a su proyecto, es decir, el 1% del framework) y JavaScript plano. Y funciona genial. No siempre tienes por qué utilizar frameworks. Si estás más cómodo y crees que es más simple, puedes usar lo que quieras. Lo importante es el desarrollador, no la tecnología. Además todo con estándares W3C: está utilizando componentes que funcionará en la mayoría de navegadores.
En aplicaciones complejas
Otro crack de la red como @levelsio saltó el otro día que su aplicación web en el que sacaba cada mes unos 57.000 $, estaba hecho en los «males» que ahora mismo los «modernos del WebDev» le entran estupores: PHP + jQuery.
El tweet que incendió el mundo web:
Y es que empezó a contarnos cosas y estábamos flipando como condenados: prácticas ya desfasadas, no las mejores, no las recomendadas, el famoso jQuery… Pero todo funciona. Todo. Funciona.
De acuerdo de que no son las mejores prácticas, pero ahí está generando dinero. Refactorizando y mejorando el código como él está más cómodo. Pueden venir los 90 expertos mejor formados del mundo, a él no puedes decirle que está equivocado.
Ya tiene un proyecto ganador y funcional. Mínimo entorno de desarrollo viable. PHP como servidor web. jQuery como framework de herramientas para JavaScript y funciones necesarias. Lo tiene todo para las pelis de terror de algunos desarrolladores. Pero está funcionando genial.
Segundo problema: el avance tecnológico imparable
Mis problemas con aprender nuevos frameworks es que el avance de éstos no para. Sinceramente, no para. Siempre están actualizando y mejorando. Cuanto más conocidos, más mejores y más actualizaciones. Es un no parar y no hay una fuente de la verdad.
Con fuente de la verdad, siempre debemos referirnos a la documentación oficial. Estas documentaciones son las más importantes a la hora de desarrollar porque es la fuente de información más cercana a los desarrolladores. Es posible que estos documentos no sean los mejores, pero son los más seguros para aprender. Pero es normal ver que una documentación no es friendly para novatos. Y nunca lo debería de ser porque necesita que sea lo más detallada posible. Por lo que si quieres aprender y no te mola la documentación, cierras la puerta un poquito más.
Con la moda de los influencers de divulgación de programación, cada vez hay más documentación audiovisual para ayudarte a dar tus primeros pasos. Digo moda porque cada vez se está extendiendo más y se les está confiando más como fuente de verdad. No es para nada malo. Hay youtubers que son geniales, que llevan años subiendo tutoriales para todo, cursos extensos y micro vídeos para enseñarte todas las novedades. Pero la volatilidad de estos vídeos se pierden en el tiempo y su caducidad cada vez es más corta.
Un ejemplo super claro es el auge de NextJS, un framework hecho en React pero que añade más herramientas destinadas a un desarrollo de aplicaciones web con varias páginas, apartados, con relevancia SEO y muchas otras características imporantes. Pero su auge ha hecho y obligado a que evolucione lo antes posible. Entre 2021 y 2023 han hecho dos de las actualizaciones más grandes e importantes, pero ha cambiado tanto en esas dos versiones que ya se ha quedado todo obsoleto. Cientos de miles de horas de videotutoriales que ya no sirven del todo… Y te pasas horas buscando tutoriales donde veas la carpeta «src» y veas la carpeta «app» para saber que es NextJS 13 y estás con las prácticas más correctas.
También puedes ir a comprar los cursos en plataformas de pago… Para luego encontrarte que es el mismo curso de 2019 con tres vídeos más al fondo sobre las novedades… Está bien para saber manejar las cosas, pero estás aprendiendo cosas obsoletas para que luego no las uses salvo para mantenimiento. El mantenimiento lo hará la persona que lo haya desarrollado y, si tienes que hacerlo tú, fijo que siempre habrá información obsoleta en internet.
Cuando ya has agotado el filtro de YouTube de mostrar tutoriales de menos de 2 meses de antigüedad, te toca buscar libros (desactualizados), blogs (desactualizados), noticias (actualizadas a medias) y recursos que son tan simples que ya no puedes avanzar a aprender casos reales.
¿Y que te queda ya…? Estamparte de cabeza. Ahora mismo es como estoy yo. No encuentro una forma real de aprender ciertos frameworks. Ahora es una mezcla de todo lo que os he comentado e intentando filtrar contenido de calidad. Si te pones con React, verás el problema que hay con el material que usa clases o usa los nuevos hooks (que es lo que aconseja React). Si te pones con NextJS, verás los problemas que hay con el antiguo Router (carpeta src) y con el nuevo (carpeta app). Y así con todos…
La cuestión no es desanimarte. Estas palabras es para que veas lo que hay y que sepas que no puedes pararte cuando veas la dificultad. Tú tienes que aprender las ventajas que puede tener o no de usar un framework. Pero tienes que enfrentarte a ellos, tener una idea y empezar a hacer proyectos mínimos para ver las capacidades.
Tercer problema: «mira qué sencilla que es la ficción»
Este título de sección yo lo llamaría que la gente es idiota. Pero no es exactamente lo que quiero decir. Una de las razones más reales para mi de que la gente ame y odie los frameworks son los extremistas y los abducidos.
Es que el daño que hace que seas un mega fan de una tecnología o el anticristo de ésta, siempre hay una presión social por querer darle una vuelta de tuerca a las personas y hundirlas por no utilizar lo mejor.
Este problema es una mezcla de los dos anteriores: ¿y si la persona no es experta, se siente cómoda con X y solo ha podido aprender de una fuente de la verdad no actualizada pero funcional? ¿Qué hay de malo? Nada. No hay nada malo.
La idea de que, en un futuro, no puedas refactorizar o cambiar de tecnología… ¿está prohibida? ¡NO! El problema de los aspectos sociales que la gente no permite que las personas se equivoquen y aprendan de sus errores.
Esas mismas personas extremistas que quieren «expandir su cultura» tampoco lo hace mostrando la realidad. ¿Qué quiero decir? Que muchas veces hacen daño siendo simplistas. Los to-do, los CRUD simples, los «me traigo 100 entradas de ejemplo y mira como se cargan». Se quedan cortos. No son ejemplos reales, no son ejemplos de mundo real. Se puede empezar, pero hay muchas personas que tampoco están aportando nada más que un vídeo de la documentación oficial.
Por suerte, hay desarrolladores que están cambiando esto haciendo pruebas técnicas o proyectos de larga duración en vivo y en directo. Pero siempre hay otras que solo quiere una legión de seguidores y no aportar conocimiento real a las personas que de verdad quieren dedicarse a esto.
Ahora coges estos extremos y los mezclas con los medios… ¿Qué tienes? Un caos en el que deberías de salir de internet y respirar. O descargarte los vídeos y un par de PDFs y encerrarte en la tranquilidad de la desconexión. Claro, esto que te digo es un extremo y pretendía ser un consejo… ¿Entiendes que la persona correcta que debe de elegir cómo tiene que aprender solo puedes ser tú y solo tu?
En resumen…
No puedes criticar un libro sin leértelo, no puedes cancelar una película sin verla y no puedes decir que un grupo de música no sirve si no te has parado a escuchar el single.
Vivimos en un mundo tecnológico y avanza a ritmos imparables. Subirte a la ola del cambio no implica que siempre estés actualizado o tengas que forzar a estarlo. Siempre viene bien salir de la zona de confort y dejar que los desarrolladores vivan tranquilos usando lo que ellos quieren y no lo que impongas.
Piensa con cabeza qué tienes que hacer y planifica tu desarrollo sin prisas. Siéntate, no te pongas a escribir código como un loco. Relaja, piensa y disfruta programando.