Tanto en el mundo del desarrollo del software como en otros mundos se suelen usar muchos palabrejos. Esto está bien porque, entre los que conocen el mundillo, hace que la comunicación sea fluida ya que esas extrañas palabras son conocidas por todos. El problema que suelen tener los novatos es el desconocimiento de esos términos.
En el desarrollo de software hay una palabra que se usa mucho: framework.
¿Qué es un framework?
Cuando se escribe un programa hay unas partes que son comunes y se usan siempre. Por ejemplo, en las aplicaciones para la web vamos a tener que acceder a una base de datos, habrá que mostrar unos ficheros HTML, habrá que gestionar las sesiones de los usuarios, etc.
Todas esas partes comunes hay que programarlas para cada aplicación y es un trabajo que lleva mucho tiempo. Por fortuna hay gente muy maja que se ha encargado de programar esas partes comunes, hacer un paquetito con ellas y las han puesto a disposición de los demás (unas veces de forma gratuita y otras pagando). Ese software «base» es lo que se llama un framework.
Hay frameworks para muchas cosas. Casi todos los lenguajes de programación (sobre todo para aplicaciones web) tienen sus frameworks. Sí, en plural, porque suele haber siempre más de uno.
No te sorprenderá saber que también hay frameworks hasta para CSS (Bootstrap, Skeleton) que facilitan la vida de los diseñadores web. Se trata de un conjunto de estilos básicos que se usan muy habitualmente que alguien se ha tomado la molestia de definir y compartir.
¿Por qué es bueno usar un framework?
Un framework nos puede ahorrar mucho trabajo y nos permite centrarnos en hacer de nuestra aplicación algo diferencial.
¿Qué desventajas tiene un framework?
Como siempre no todo el monte es orégano, tiene algunas desventajas:
- Nos obliga a hacer la cosas de una determinada forma. Al usar un determinado framework estamos accediendo a desarrollar la aplicación siguiendo su filosofía. Por eso debemos escoger uno que se ajuste a nuestra forma de trabajo.
- Tienen que servir para casi todo. Y eso puede ser un problema porque seguro que hay un montón de código que no vamos a usar para nada y pueden estar sobrecargando nuestra aplicación.
¿Por qué hay tantos frameworks?
Hay muchos frameworks que hacen lo mismo o parecido. Entonces ¿porqué hay tantos? Como en muchos otros aspectos de la vida hay puntos de vista diferentes, gente que piensa que las cosas se pueden hacer mejor y, por supuesto, también egos.
Normalmente suele aparecer uno nuevo porque a alguien no le gusta cómo funcionan los que ya existen. Pero siempre habrá alguien que tampoco le guste éste y así constantemente.
Una viñeta de XKCD lo explica bien (es sobre estándares pero se puede aplicar también aquí):
Frameworks en PHP
Dado que nosotros trabajamos mucho en PHP qué menos que hablar de los frameworks que hay para este lenguaje. Aquí también tenemos incontables opciones: Zend, Laravel, Symfony, CakePHP, CodeIgniter, Kohana, Yii, etc. Algunos de ellos ya son viejillos, obsoletos o están abandonados pero otros están de plena actualidad, como Laravel.
Symfony es otro muy usado. La gente de PrestaShop, es gran software para creación de tiendas online, ha decidido usar Symfony para la nueva versión 1.7.
¿Cuál es el mejor?
No hay una respuesta fácil aquí. Depende mucho de gustos, preferencias, conocimientos, lo que pide el proyecto y demás. Nosotros en Urlan Heat estamos apostando muy fuerte por Laravel pero hay otros que son igual de buenos o mejores (y también peores, claro). Cuando empieces un nuevo proyecto analiza qué es lo que necesitas, comprueba que tu forma de ver las aplicaciones coincide con la de los que lo han desarrollado, lo que ya conoce tu equipo, la curva de aprendizaje que cada opción y toma la decisión.