Newsletter para devsEntra

Programación a medida, Framework o CMS. ¿Con cuál me quedo?

Como programadores, habitualmente nos enfrentamos a uno de estos tres escenarios:

  • Un cliente nos propone un nuevo proyecto.
  • Queremos formarnos para ampliar nuestro stack.
  • Simplemente estamos empezando en el mundo de la programación.

Sea cual sea el escenario en el que te veas involucrado la pregunta que ronda por nuestras cabezas es siempre la misma:

¿Qué elijo: Programación a medida, Framework o CMS?

Creo que antes de poder arrojar algo de luz sobre el tema y darte mi opinión sobre el mismo, es justo que hagamos una pequeña introducción con la definición de estos tres conceptos.

¿A qué podemos llamar programación a medida?

Cuando nos referimos a la programación a medida hablamos de una programación que se hace desde cero para crear una aplicación. Es el programador sólo ante el código elegido.

En este ámbito entran también las librerías que este lenguaje permita incluir. Estamos hablando de librerías ORM para abstraer la base de datos, cualquier librería de Testing, una librería que te ayude a gestionar las fechas de manera correcta o una librería que gestione las peticiones web en el caso de que estés desarrollando una aplicación web.

En este caso es el programador es el que elige el lenguaje, las librerías y el código que las rodean.

¿En qué consiste la programación basada en Frameworks?

Aquí vamos a enfocarnos principalmente en los Web Frameworks o Web Application Frameworks, y es que la misma palabra Framework traducida lo dice: marco de trabajo.

Cuando trabajamos con Frameworks seguimos estrechamente ligados al código, pero eso si, el Framework nos marca unas reglas de nomenclatura, la estructura de archivos y directorios e incluso la nomenclatura a nivel de código.

Bajo mi punto de vista es un punto intermedio entre la programación a medida y el CMS, pero más pegado a la programación a medida por razones obvias, todavía tu sistema de programación está estrechamente ligado al código. Los Frameworks están estrechamente ligados a un lenguaje.

Como ejemplos de Frameworks tenemos: Laravel (PHP), Django (Python), Vue (Javascript).

¿Cuándo hablamos de CMS?

La siglas de CMS corresponden a Content Management System (sistema de gestión de contenido).

Si bien en las dos opciones anteriores veíamos que nuestro sistema de programación estaba estrechamente ligado al código (tenemos que tener conocimiento de algún lenguaje de programación), en este caso, los CMS están vinculados a los componentes: módulos, plugins, extensiones, etc.

El hecho de que el sistema se vincule a componente nos permite poder construir aplicaciones sin tener conocimientos de ningún lenguaje de programación.

Igualmente los sistemas de gestión de empresa o venta se pueden incluir dentro de los CMS. En este caso hablamos de los CRM, ERP e incluso Ecommerce.

Como ejemplos más claros de CMS tenemos:

  • Wordpress.
  • Drupal.
  • Joomla.
  • Magento.
  • Prestashop.

¿Qué debería elegir: Programación a medida, Framework o CMS?

Aunque tomar una decisión respecto a qué sistema escoger a la hora de realizar un proyecto se basa en muchos factores, vamos a intentar sintetizarlos en cinco:

La experiencia

Sin duda la experiencia puede llegar a ser un handicap a la hora de decantarte por una tecnología u otra.

En un ejemplo claro: no importa si desarrollar una página web corporativa es más fácil de llevar a cabo con Wordpress que haciéndola con programación a medida o un Framework; si nunca has instalado un CMS Wordpress pero si que has realizado alguna web corporativa con cualquiera de las otras dos opciones, siempre te va a resultar más fácil llevarla a cabo con un sistema con el que te sientas cómodo.

El dinero

Cuando te enfrentas a la tesitura de: ¿me conviene aprender una tecnología nueva para la cantidad de dinero que el proyecto me va a reportar? es cuando tienes claro por lo que decantarte. Y es que aquí se pone de manifiesto un punto que no hemos visto hasta ahora, y es el de escoger la tecnología en función de la balanza dinero/aprendizaje.

Eso si, bajo mi punto de vista nunca hay que decantarse por cobrar poco dinero por algo que nos sea fácil de implementar. Recuerda que en algún momento en el pasado, has tenido que invertir tu tiempo para poder dominar una tecnología en el presente.

Daniel Primo nos habla aquí de dinero:

Este es un fragmento del episodio Programación a medida vs Frameworks vs CMS dónde Dani cuenta con todo lujo de detalles su experiencia trabajando con los tres modelos.

Suscríbete para escuchar el episodio completo y mucho más contenido sobre desarrollo y programación web.

El tiempo

Este factor se ha puesto de manifiesto en el punto anterior y cae por su propio peso: a falta de tiempo nunca es bueno escoger una tecnología que no dominamos.

Sería distinto si el proyecto que tenemos entre manos es un proyecto paralelo, el cual normalmente no está tan atado a una fecha límite. En este punto es en el que tenemos más libertad de decidirnos por una tecnología u otra sin tener que estar pendientes al calendario.

El tipo de proyecto

Aunque a veces el complicado de identificar el tipo de proyecto pero siempre hay algo que nos puede dar una pista.

Quizás sea más fácil verlo con algunos ejemplos (opciones siempre escogidas dando por hecho que dominamos medianamente bien las tres opciones):

  • Web corporativa de bajo coste: en este caso el CMS sería la mejor opción debido a que la infraestructura base del mismo puede solucionar la mayoría de requerimientos que pueda necesitar el proyecto. Sin hablar de la fácil implementación de pequeños plugins, plantillas para el frontal, etc.
  • ECommerce: Aunque la mayoría de CMS robustos del mercado implementan todo tipo de plugins para realizar venta de productos, hay que andarse con mucho ojo porque estos tipos de plugins/componentes suelen llevar implementaciones extras con las que no contamos en un principio: control de stocks, pasarelas de pago, etc. No queremos que la implementación que pensábamos en inicio que se sería una instalación y configuración de un CMS, se convierta en una programación a medida encubierta.
  • Funcionalidad concreta: Un sistema de votación. En este caso, en el que la funcionalidad es muy concreta, conlleva una serie de parametrizaciones muy especificas o a la medida del cliente; no queda otra opción que realizar una programación a medida.
  • Frontal de visualización de datos: En el caso en el que hay que mostrar datos a un usuario que además necesitamos que sean reactivos con la interacción del mismo, la mejor opción es optar por un Framework.

La personalidad del programador

Sí, aunque pueda parecer que este es un factor que no afecta, tiene mucho peso.

Hay programadores a los que le gusta arriesgar, que tienen la necesidad constante de aprender tecnologías nuevas; hay otros a los que le gusta sentirse seguros y cómodos con lo que conocen.

Si eres de un grupo u otro vas a decantarte por una opción u otra.

Conclusión

Está claro que escoger una opción u otra no es una tarea matemática que se resuelva con una formula.

Hay muchos factores a tener en cuenta y que no siempre están tan claros:

  • ¿He calculado bien el tiempo que voy a invertir en este proyecto?
  • ¿Me compensa aprender una nueva tecnología si el proyecto va a tener un coste de 20 horas de ejecución en una tecnología que ya conozco?
  • ¿La balanza tiempo/dinero es lo suficiente jugosa como para salir de mi zona de confort?

Lo realmente importante es sentirse seguro con la decisión que se haya tomado, y si la decisión no ha sido la correcta, tener siempre presente que hemos sumado puntos de experiencia para que la siguiente vez que nos encontremos en la tesitura estemos mas preparados.

Muchos de los suscriptores de la Academia Online Zona Premium han pasado por estas mismas dudas y ahora pueden reunirse en un lugar donde preguntar y aclarar esos puntos oscuros antes de la decisión definitiva sobre qué camino elegir.

Suscríbete a la premium y empieza a disfrutar de nuestra comunidad de developers.

Escrito por:

Imagen de Daniel Primo

Daniel Primo

CEO en pantuflas de Web Reactiva. Programador y formador en tecnologías que cambian el mundo y a las personas. Activo en linkedin, en substack y canal @webreactiva en telegram

12 recursos para developers cada domingo en tu bandeja de entrada

Además de una skill práctica bien explicada, trucos para mejorar tu futuro profesional y una pizquita de humor útil para el resto de la semana. Gratis.