Aquellos que ya llevéis unos cuantos años programando y os halláis enfrentado a unos cuantos proyectos, seguramente habréis empezado a crearos un índice de códigos que reutilizáis cada vez que se da la ocasión.
Por ejemplo: Si creo webs desde cero con cierta asiduidad, la arquitectura responsive la reciclo y lo único que hago es cambiar la estética y los módulos de sitio.
Otro ejemplo: Si ya he desarrollado un sistema de autocorrección de formularios, o un sistema de login, cada vez que deba volver a hacer uno, reutilizo el que ya hice en su día.
Pues bien, estos índices de código que vamos creando a lo largo de nuestra carrera profesional, constituyen nuestro propio framework. ¿Y porqué la gente utiliza frameworks de terceros o algunos clientes piden desarrollos específicos en uno u otro framework? ¿No bastaría con copiar y pegar funciones de un proyecto a otro?
A continuación te explicamos por qué.
¿Qué es un framework?
Un framework, entorno de trabajo o marco de trabajo, es un conjunto de herramientas que permiten agilizar mucho el desarrollo web, omitiendo las tareas repetitivas, y evitando así errores de código.
O dicho de manera metafórica: Si yo tomo ensalada todos los días, sin un framework tendría que estar cultivando lechugas, tomates, recogiendo aceitunas para hacer el aceite… Perdiendo así una grandísima cantidad de tiempo y recursos.
Si por el contrario, a mi me suministran ya preparada la materia prima, puedo centrar mi tiempo y esfuerzo en innovar creando una ensalada diferente cada día: Hoy cherrys, lechuga y queso de cabra. Mañana lechuga, mostaza y miel y nueces.
El tiempo que tardaría en crear una cosa u otra, sería el tiempo que tardaría en llamar a las funciones de los elementos ya creados (lechuga, tomate, salsas…), y por supuesto, evitaría errores al no tener que reescribir las funciones cada vez.
Modelo Vista Controlador
Para facilitar el entendimiento y el mantenimiento del código, los frameworks trabajan, habitualmente, bajo el Modelo Vista Controlador (MVC), ésto es, dividen el código en tres bloques:
- Modelo: Es la parte encargada del tratamiento de las bases de datos. Contiene todas las funciones que extraen, modifican o actualizan la información contenida en ellas: Updates, Selects, Inserts…
- Vista: Este bloque es el encargado de generar la interfaz gráfica, siendo aquí donde insertaremos el HTML y PHP.
- Controlador: Es el enlace entre los dos bloques anteriores. Transmite las órdenes pedidas por la Vista y las hace entendibles por el Modelo, para que éste pueda extraer los datos que se le demandan.
¿Por qué usar un framework?
Como ya hemos comentado, un framework ahorra mucho tiempo al evitarnos tener que programar una y otra vez los mismos elementos repetitivos.
Sí, pero… para eso ya tengo «mi propio framework«. ¿Por qué perder tiempo aprendiendo el código de otros?
La razón es sencilla: Al igual que el Esperanto fue un idioma creado para que todo el planeta pudiese comunicarse en una lengua común, un framework es un espacio neutral de trabajo común entre programadores.
O por decirlo de otro modo: Tu propio framework te sirve a ti, pero ¿y a un tercero? Si trabajas en un desarrollo grande, donde hagan falta varios programadores, si cada uno aporta sus propias funciones, entenderlas y conectarlas entre sí será mucho más tedioso que buscar un lugar de encuentro común. Por no hablar de que muy probablemente, haya errores, variables y funciones repetidas, etc
Y eso es sólo la punta del iceberg porque, ¿y si tienes que ocuparte tú de un desarrollo a medio terminar de otra persona? ¿O y si tienes que realizar la actualización de código de una web programada sin framework? Tendrás que entender la lógica que hay tras ese programa, cuál es la estructura de sus ficheros, etc
Otro gran problema es la seguridad: Por muy bueno que tú seas programando, un framework es el producto de miles de horas de trabajo de un equipo de decenas de programadores expertos. Así que es bastante probable que a ti se te hayan colado agujeros de seguridad que ellos no han obviado.
Por lo tanto, un framework nos permite:
- Acelerar el proceso de desarrollo
- Evitar código repetitivo
- Utilizar buenas prácticas de programación
- Programar más seguro
Y por ello, tanto para desarrollos grandes, como para el mantenimiento futuro de proyectos y para trabajos en equipo, utilizarlo es una buena opción, aunque debamos invertir algunas semanas en conocer el framework que se emplea en ese entorno.
¿Debería usarlo siempre?
Uno de los argumentos más comunes en contra de los frameworks, es que no tiene sentido cargar tantos archivos, librerías y funciones para un proyecto de poca envergadura: «Lo lastraría».
Si bien esto es correcto para muchos de los frameworks antiguos, la optimización y correcta programación ha ido haciendo que estos entornos carguen únicamente aquello que se utiliza, y por lo tanto no sea éste un contraargumento vigente.
Aquellos que llevamos muchos años programando, intentamos aplicar siempre la lógica: «No tiene sentido reinventar la rueda cada vez, ni matar moscas a cañonazos«. Así que yo no utilizaría frameworks para cosas sencillas, ni intentaría embarcarme en proyectos titánicos utilizando programación a pelo.
Algo deben tener de malo…
El mundo de la programación avanza tan rápido, que ahora mismo hay frameworks para prácticamente cualquier lenguaje de programación y cualquier enfoque, lo que multiplica el tiempo que debes invertir para aprender a usarlos, ya que cada empresa trabajará con uno.
Por si fuera poco, cada 2 o 3 años sale un nuevo framework que promete revolucionarlo todo. Se pone de moda, todos empiezan a usarlo y… 3 años después, vuelta a empezar. Así que puede ser frustrante invertir tiempo en aprender a manejar herramientas que se queden obsoletas tan rápidamente.
¿Cuáles son los frameworks más utilizados?
A fecha Octubre de 2017:
Javascript:
- Angular
- ReactJS
PHP:
- Laravel
- CodeIgniter
- Zend
- Symfony
CSS:
- Bootstrap
- Foundation
- Pure CSS
¡Ahora tan sólo te queda lo más difícil, adivinar cuál será el próximo trendy y ponerte a aprenderlo!
¿Tú también has dudado entre usar framework o programar a pelo? ¿Qué frameworks utilizar? ¿Crees que deberíamos añadir alguno a la lista? ¡No dudes en comentarnos!
Escribir comentario