Siempre que en Kabytes escribo sobre algún framework recuerdo que nunca exprese mi opinión acerca de su utilización. Para evitar que esto siga ocurriendo decidí escribir esta entrada, completamente abierta a las distintas opiniones de cada uno de ustedes.
Comencemos por lo básico, ¿Que es un Framework?
Un framework o infraestructura digital, es una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, con base a la cual otro proyecto de software puede ser más fácilmente organizado y desarrollado.
En un lenguaje un poco más ameno, podríamos definir a un Framework como un soporte, una capa intermedia entre un lenguaje de programación crudo y el programador, útil para agilizar el proceso de desarrollo, brindando a los programadores de una serie de funciones y métodos para evitar perder tiempo programando soluciones ya escritas.
Es así que dentro de los lenguajes más populares, por ejemplo, podemos citar:
En mi caso hago un uso bastante intensivo del framework para JavaScript jQuery, también hice varias pruebas con otros framework para PHP (Cake, Zend y un poquito de Symfony), y finalmente comencé hace unos meses a jugar un poco con el framework para Ruby de moda,estoy hablando de Rails. Las conclusiones que obtuve son variadas.
Ventajas de utilizar un framework
- Velocidad de desarrollo. Una vez que aprendemos los aspectos básicos de utilización de un framework, la velocidad de desarrollo aumenta considerablemente. Frameworks como Ruby on Rails son increíblemente rápidos y ágiles, sin exagerar Rails utiliza como uno de sus principios el paradigma CoC (Convención sobre Configuración) ganando simplicidad, a la vez que no perdemos flexibilidad. Solo con esa mentalidad y el soporte provisto por todo el framework, desarrolla un sitio convencional (y no tanto) es cuestión de horas.
- Código optimizado. Si bien esto no es una ley, en general un framework que cuenta con una comunidad importante siempre se encuentra optimizado, al menos, sabemos que hay personas trabajando en mejoras constantemente. Lo mismo ocurre con aspectos fundamentales como la seguridad. Utilizar un framework puede ahorrarnos muchos dolores de cabeza. Obviamente queda en nosotros también hacer un buen uso de esta plataforma, pero en general y si programamos con cierta logica y cuidado, no tendremos demasiados problemas.
- Reducción de costos. Utilizar un framework muchas veces nos permite abstraernos a un nivel de programación low-level. No tenemos que preocuparnos de los aspectos de desarrollo más básicos, de esta manera podemos centrarnos en los aspectos más esenciales que se encuentran relacionados directamente con el trabajo que debemos realizar. Esto no siempre va a ocurrir, pero en general si el proyecto no es sobre algo muy especifico el framework va a tener mucho del trabajo resuelto.
- Estándares y convención de código. Dos aspectos que tranquilamente podemos utilizar en nuestras aplicaciones sin la necesidad de un framework. No obstante tener que utilizarlos de manera casi obligatoria nos empujan a mejorar nuestros programas. Y perdón que vuelva con Rails, pero programar para este frameworks es un placer, código limpio y sencillo, fácil de mantener y todo gracias a la implementación de convenciones.
Desventajas de utilizar un framework
- Tiempo de aprendizaje. Aprender a utilizar un framework no necesariamente es algo que podamos hacer en un par de días. En mi experiencia si bien ahorramos mucho tiempo, también tenemos que dedicar muchísimas horas en aprender los aspectos básicos y no tanto. A mayor conocimiento del framework, más jugo le podemos sacar.
- Dependencia. Una vez que escribimos un programa para determinado framework es casi imposible migrar a otro sin tener que reescribir todo el código. En ese sentido cuando comenzamos un proyecto con un framework prácticamente nos estamos casando con él.
- Falsa sensación de conocer el lenguaje. Esto es importantísimo porque veo que mucha gente esta confundida en este aspecto. Programar para determinado un framework no nos hace conocedores del lenguaje para el que esta creado. El mejor ejemplo: Saber programar con jQuery no significa saber programar en JavaScript. Mi recomendación, aprendan el lenguaje y luego aprendan el framework.
Conclusión
Decidan en base al proyecto a realizar. Los frameworks son cada día más potentes, sin embargo nada va a reemplazar al programador con amplios conocimientos sobre determinado lenguaje.
Creo que existe un equilibrio justo a la hora de decidir si usar o no un framework, en mi caso evalúo:
- Si el proyecto es MUY simple. No utilizo un framework, no tiene sentido cargar toda una estructura, un esqueleto con cientos de funciones, si el trabajo a realizar no requiere más que unas lineas de programación. Por ejemplo, si van a realizar un sitio con un formulario para recibir consultas y nada más, utilizar un framework ni merece la pena.
- Si el proyecto tiene una complejidad baja-intermedia. Es probable que utilice un framework. Sitios del tipo institucionales podemos crearlos en cuestión de horas. Me animo a decir que minutos, obviamente sacando de lado la parte gráfica. Un framework para un proyecto de una complejidad intermedia es realmente una bendición.
- Si el proyecto es complejo. Si el proyecto es complejo, no es algo común, probablemente no utilizaría un framework, aunque en este punto en particular habría que evaluar que tan útil es el framework en base a nuestros requerimientos. Es solo cuestión de analizar las ventajas y desventajas en cada caso en particular.
Mi consejo más honesto, utilicen el sentido común. No caigan en el simplismo de aquel que dice “los frameworks son para programadores vagos”, ni en el fanatismo de aquel que programa todos sus bibliotecas y repudia a aquellos que utilizan herramientas para economizar y valorar su tiempo. Los frameworks son herramientas que bien utilizadas son de gran ayuda.
ejosvp
13 años ago
interesante pero creo que las desventajas dependen del framework a usar, por ejemplo yo uso symfony/php desde hace muchos años y hace unos meses empece a usar las version 2.0.x de Symfony y debo decir que el tiempo de aprendizaje fue casi nulo, solo basta saber PHP y POO para empezar a desarollar, por otro lado no veo ¿por que un proyecto estable desarrollado sobre un framework deba ser migrado?. Sobre lo ultimo tienes razon, en muchos frameworks la forma de programar es muy diferente al lenguaje puro como symfony1, jquery y otros.
saludos
Emanuel
13 años ago
Creo que el tiempo de aprendizaje es relativo al framework. Es mas rápido aprender Flask o Bottle (Framework para python similar a Sinatra) que Django, eso no significa que Django sea difícil. Pasa algo similar con Spring vs Play Framework, Sus curvas de aprendizajes son diferentes, pero ambos cumplen el mismo objetivo
Ruben Caramutti
13 años ago
Interesante. Creo que de PHP te falto incluir dos frameworks muy interesantes: PRADO y Yii (Yii en realidad es una evolucion de Prado). En mi emrpesa utilizamos PRADO y una capa que desarrollamos para darle mayor funcionalidad. Hemos desarrollados aplicaciones (web) ENORMES tanto utilizando MySQL como ORACLE (en ambos casos via PROPEL como ORM). Estamos esperando que aparezca la oportunidad para aplicar Yii que es mas agil y veloz (a nivel de JS) ademas de mas versatil por que esta mas empowered. Saludos.
Fran Moreno
13 años ago
Hola, interesante artículo, sólo tengo dudas en lo último que comentas, cuando un proyecto es grande no usarías un framework. Cual es el motivo? optimización? Creo que cuando es un proyecto grande, es cuando más motivos hay para usar un framework, hacer un desarrollo completo a mano puede llegar a ser una locura con el tiempo, si no está perfectamente organizado desde un principio.
Un saludo.
Jesús
13 años ago
Interesante y muy razonado. Felicidades por el artículo.
Pablo
13 años ago
Recién este año empece con cakephp, fui casi 7 años programador con mi propio framework y me arrepiento de no haber utilizado antes cakephp, me di cuenta de las deficiencias de mi framework. La verdad es que es muy dificil (hasta imposible) que una sola persona realice un trabajo como el de codeigniter, zend o cakephp. Si no es necesario reinventar la rueda para que hacerlo, ademas liberarte de tanto trabajo motiva a la inovacion, yo estoy 100% a favor de los frameworks en trabajos medio/avanzados.
Laravel: Un framework PHP para los más puristas | Kabytes
12 años ago
[…] En Kabytes | Usar o no un Framework […]
javier
12 años ago
Me llega tu mailing habitualmente… la verdad, te felicito por todo lo que haces para desasnar a la gente ,, !!! Sinceramente… GRACIAS !!!!!
Fernando
12 años ago
Por fin encontré respuesta a mis dudas!!! Ahora si ya tengo más claro cuando y que frameworks utilizar. Gracias por la información (Y)
Luis
11 años ago
Muy bien por el artículo, cuando empecé a utilizar un framework para algunos de mis desarrollos empecé a creer que estaba dejando de programar, en pocas palabras me sentía un vago, con el tiempo he aprendido que hay que ser equilibrado entre ser purista y programar en el lenguaje nativo y el de apreciar tu tiempo y utilizar un framework. Claro cuando me puse a escoger que framework aprender es otro dilema más profundo, puesto que hay tantos que te sientes igual como cuando escoges qué distribución de linux utilizar, sin embargo creo que como punto de partida, podría recomendar que el Framework respete estándares(los PSR de Php por ejemplo), tenga una buena comunidad y documentación alrededor y muy ligado a esta última, que su desarrollo sea activo y que no dependa directamente de empresas que sólo quieren verdes.
Saludos.
Eric
11 años ago
Yo tengo duda amigo, como diferenciarías entre una librería y un framework? JQuery por ejemplo, saludos
Gorka Muñoz
11 años ago
Hola muy interesante tu artículo, sobre todo las conclusiones finales. Gracias a este me he inspirado para escribir uno yo también diferenciando las ventajas o no de los frameworks http://gorkamu.com/2014/05/framework-vs-flat-code/ . Gran trabajo. Un saludo
Framework vs Flat PHP - ¿Eres un Chuck Norris Dev o un mariquita?Gorka Muñoz
10 años ago
[…] Un framework es una herramienta que por lo general te hará la vida mucho mas fácil a la hora de empezar un proyecto nuevo pero que en ocasiones te puede dar muchísimos dolores de cabeza, sobretodo cuando estas empezando y aun no tienes ni idea de como funcionan todos sus entresijos. La definición formal de framework la he sacado del blog de Kabytes. […]
Cristian
10 años ago
Yo opino que en algo tienes razon y es que muchos hoy en dia por saber dominar un framework al 70% sienten que saben el lenguaje a un 1000% yo en lo personal codifico soluciones que a un que ya esten escritas en muchos frameworks (js, php, etc .. etc), por que te hacer tener un control total sobre lo requerido y no estar depenciendo de una configuracion ya establecida eso señores es lo delicioso de programar 😀