¿Qué es un framework?
Imagina que estás construyendo una pequeña aplicación web: cuentas de usuario, un feed, una página de configuración. Antes de que aparezca en pantalla cualquier idea tuya, necesitas código que convierta URLs en páginas, código que se comunique con una base de datos, código que mantenga las contraseñas seguras y código que redibuje la pantalla cuando algo cambia. Nada de eso es idea de tu aplicación. Toda aplicación lo necesita, y la mayor parte es igual de un proyecto a otro.
Podrías escribir toda esa "plomería" tú mismo, y así se hizo durante años. Es lento, ahí es donde viven los errores sutiles, y cada equipo terminaba con una versión ligeramente distinta y ligeramente rota de la misma maquinaria. Un framework es la respuesta acumulada a ese problema: la plomería compartida, escrita una sola vez y puesta a prueba por miles de proyectos, empaquetada con una estructura que te indica dónde va tu propio código. Tú construyes las partes que hacen único a tu proyecto; el framework se encarga de las partes que todo proyecto repite.
Los frameworks no son solo cosa de la web. Existen en todos los ámbitos donde se construyen programas, y este capítulo trata sobre la idea en sí misma, en cualquier lenguaje y cualquier campo.
Qué es un framework (y qué es una librería)
La palabra se usa de forma imprecisa, así que veamos la distinción que realmente importa, en código:
// Una librería: tu código está a cargo y llama a la librería cuando le conviene.
const label = dateLibrary.format(order.createdAt, "MMM D");
// Un framework: el framework está a cargo y llama al código que tú conectas.
export default function OrdersPage() {
return listOfOrders();
}La primera línea eres tú al mando: tu programa se ejecuta y toma prestada una herramienta para una tarea puntual. La segunda es diferente por naturaleza. Tú nunca llamas a OrdersPage directamente. Lo escribes, lo colocas donde el framework lo espera, y el framework lo llama en el momento correcto, aquí, cuando un visitante abre la página de órdenes.
Ese cambio de mando tiene nombre: inversión de control. Con una librería, tu código controla el flujo del programa y toma prestados ayudantes. Con un framework, el framework controla el flujo, y tu código completa los espacios que él te deja. Una forma útil de recordarlo: tú llamas a una librería; un framework te llama a ti.
Esta misma forma aparece en todos los rincones de la programación. Django recibe la petición web y llama a tu función de vista. Flutter ejecuta la aplicación y les pregunta a tus widgets qué dibujar. Unity ejecuta el bucle del juego y llama a tus scripts en cada cuadro. pytest encuentra tus funciones de prueba y las ejecuta por ti. Son campos distintos, pero una sola idea: el framework es dueño del motor, y tú aportas las piezas para las que fue diseñado.
Si te ayuda una imagen: una librería es una caja de herramientas que está a tu lado mientras construyes, y tomas una herramienta cada vez que te resulta útil. Un framework se parece más a la estructura de un edificio, que ya está en pie cuando llegas. Las paredes, el cableado y las tuberías ya tienen su lugar, y tu trabajo va en las habitaciones que hacen que ese edificio sea tuyo. Ambos te ahorran esfuerzo; la diferencia está en quién decide la forma de la construcción.
Qué te da un framework, y qué te cuesta
El argumento a favor de un framework es concreto. Problemas que te tomarían semanas llegan ya resueltos, y resueltos por personas que se topraron primero con los casos límite más difíciles: manejo de contraseñas, validación de formularios, ruteo, renderizado. Tu proyecto obtiene una estructura que un nuevo compañero de equipo puede reconocer en minutos, porque es la misma estructura que la de cualquier otro proyecto hecho con ese framework. Y heredas un ecosistema: plugins, tutoriales, preguntas ya respondidas, y una reserva de personas para contratar que ya conocen cómo moverse en él.
Los costos son igual de concretos, y merecen la misma mirada honesta. Un framework es una dependencia grande que no controlas, con sus propios errores, su propio ritmo y sus propias opiniones. Hay una curva de aprendizaje antes de que se renderice tu primera página, y parte de lo que aprendes es conocimiento sobre el framework, no sobre programación en general. Tu código se adapta a sus formas, lo que hace que dejarlo sea más difícil cuanto más tiempo lo uses. Y los frameworks cambian con el tiempo: llegan versiones mayores, se repiensan patrones, y mantenerse al día es un trabajo continuo que no tenías con código plano.
Ninguna de las dos listas gana por sí sola. El equilibrio depende por completo del proyecto, así que la pregunta que hay que hacerse frente a cualquier framework es "¿este framework hace más simple este proyecto en particular?". Un framework se gana su lugar cuando hace más simple tu proyecto. Cuando lo logra, úsalo con gusto. Cuando no, los próximos dos capítulos tratan sobre cómo reconocer eso a tiempo.
Hacia dónde va esto ahora
Con esta idea ya clara, la pregunta natural que sigue es qué hay realmente disponible: Los tipos de frameworks recorre las grandes familias, desde la web hasta los videojuegos y las pruebas, con las opciones más populares de cada una. Después, Elegir y aprender un framework se pone práctico sobre cómo elegir uno, aprenderlo, y saber cuándo no necesitas ninguno. Y si los ejemplos de JavaScript de arriba te resultaron poco familiares, el curso de JavaScript cubre el lenguaje en sí, que es el primer paso correcto antes de cualquier framework construido sobre él.

