16 de julio de 2012

Que framework elegir para desarrollo web

English: Symfony framework's logo
Symfony framework's logo (Photo credit: Wikipedia)
Hoy en día el desarrollo web se especializa cada vez más, además que los requerimiento de los tiempos en los proyectos también son más exigentes.

Frente a este panorama, es indudable que necesitamos estandarizar nuestros procesos de modo de mantener la competitividad dentro de la industria, una manera por donde iniciar tarea, es en la elección de herramientas que aumenten la eficiencia de producción, particularmente la tarea de programación backend.

En este nivel nos encontramos con tres alternativas claramente identificables:
  • Desarrollar usando CMS.
  • Optar por un Frameworks.
  • O usar una programación Adhoc, desarrollando nuestras propias Clases.

Naturalmente, ya con el fruto de la experiencia tendremos programadas un par de clases que nos han dado buenos resultados en los últimos proyectos.

Sin embargo, allá afuera hay un montón de alternativas de poder industrial esperando ser usadas, así que

  ¿Por que seguir usando nuestra programación Adhoc? 

y no aprovechar toda la potencia de estas alternativas, que probablemente ya empiezan a usar nuestra competencia.

Desarrollar usando un CMS (Drupal, WP)

Un CMS, o Sistema Administrador de Contenidos, es una herramienta que nos permite desarrollar nuestros proyectos web con gran rapidez, pues una parte significativa de las funcionalidades se encuentran disponibles en el CMS. Populares alternativas en el Open Source son:

Sin embargo, en la generalidad siempre habrá una porción de la funcionalidad requerida que no venga de paquete en el CMS o al menos no se adapte el 100% a nuestras necesidades específicas. Por lo tanto, requeriremos desarrollarla nosotros mismos o comprarla a un tercero dependiendo de las restricciones de presupuesto y/o tiempo.

En este sentido, el uso de un CMS será adecuado cuando lo que queramos desarrollar este en sintonía con lo que el CMS nos ofrece y dispongamos de un conocimiento medianamente aceptable para ampliarlo u ofrecer soporte. En general, podemos decir que a modo de receta, si pensamos usar extensivamente en nuestros desarrollos los CMS, debemos dominar un par de estos sistemas, para procurar mantener la eficiencia de trabajo.

Por ejemplo, para proyectos de pequeñas dimensiones usar Wordpress, en desarrollos medianos MODx o Drupal, y en grandes proyectos TYPO3 o Plone son buenas alternativas de CMS's.

Usando un Frameworks (Symfony, Zend, RoR)

Otra opción es el uso de Frameworks, que están muy extendidos, de hecho existen frameworks hasta para CSS (Blueprint). Los frameworks son una excelente alternativa para montar proyectos web muy específicos, donde el CMS no sea una solución suficientemente flexible en sus funcionalidad, ni ofrezca el rendimiento adecuado.

El aspecto de rendimiento es crucial, a modo de ejemplo, probablemente con Drupal o MODx se pueden resolver casi cualquier aplicación web que podamos imaginar. El problema es que estos sistemas siempre nos implicarán una sobrecarga de recursos y a fin de cuentas en un castigo al rendimiento. En este punto es en donde los Frameworks encuentran su nicho.

Al igual que en el caso de los CMS, existe una gran variedad de Frameworks de los cuales podemos mencionar:
Al igual que en el caso de los CMS, debemos conocer las fortalezas y debilidades de las distintas opciones dentro del mundo de los Frameworks, de modo de disponer o elegir, un par de ellos para las distintas necesidades de desarrollo.

En la actualidad, en el mundo de PHP Symfony es considerado el framework más completo, para elaborar soluciones empresariales de grandes dimensiones. Symfony requiere de una significativa curva de aprendizaje, dispone de recursos muy poderosos como su integración con Doctrine (ORM).

La gran ventaja de los Frameworks es su flexibilidad y la implantación de una forma de trabajar estandarizada. Lo cual a la larga se traduce en una mejora en el control de los procesos.

Y particularmente, los efectos prácticos frente a opción de usar nuestra propia programación Adhoc, es que si necesitamos aumentar nuestro equipo de trabajo, e integrar un nuevo desarrollador requerirá un periodo de entrenamiento, pero si usamos un Framework sólo basta con solicitar un desarrollar que conozca esa herramienta y será productivo desde el primer día.