¿Debo usar un CMS o desarrollar desde cero?

Debo usar un CMS o desarrollar desde cero

Tienes un proyecto que te gustaría desarrollar, ya sea viniendo de una idea de negocio o por requerimiento de un cliente. La primera pregunta que se nos viene como desarrolladores es el stack a utilizar. Para que el proyecto avance de una manera efectiva, deberíamos quitarnos la bandera de puristas y ser más objetivos en nuestras decisiones.

Como desarrollador entiendo el sentimiento de querer controlar todo, conocer cada parte de la maquinaria. Además, queremos cumplir el reto para resolver algoritmos más complejos. Sin embargo, cuando se trata de crear soluciones, una buena decisión te puede ahorrar muchos dolores de cabeza.

¿Cuáles son los motivos para considerar si debo usar un CMS?

Para empezar, definamos el verdadero propósito de un CMS (Content Management System) también conocido como Sistema Gestor de contenidos. Su función principal proporcionar herramientas que permitan crear, editar y organizar información, de tal manera, que tengamos un sistema totalmente funcional desde un principio.

Lo primero que deberías tomar en cuenta es estudiar los requerimientos del proyecto, con ello podrías trazar una ruta de tiempo, identificar los módulos que son must have y responder cual será tu función como desarrollador para generar valor a través del proyecto.

Además existen factores que deberías considerar en las buenas prácticas en el desarrollo de software:

  • Tiempo de desarrollo: Cuando creas un nuevo proyecto, deberías mucho énfasis en el tiempo. Usa inteligentemente tu tiempo y utiliza los recursos a tu favor.
  • Mantenimiento: Es inevitable tener ciclos iterativos en el tiempo de vida de un sistema sino queremos caer en la obsolescencia programada. Evalúa que tipo de mantenimiento estaríais haciendo en el software una vez liberado.
  • Seguridad: Por lo general, en las comunidades de desarrolladores cuidan mucho ese aspecto.
  • Flujo del proyecto: Evalúa si los módulos son a la medida de acuerdo a los procesos internos de la empresa o proyecto. No es lo mismo implementar un sistema donde generas contenido que un sistema de reclutamiento.

Casos Prácticos

Debo aclarar que no existe una receta de cocina a la hora de tomar una decisión. Pero puedo compartir, en mi experiencia, en que situaciones los CMS son mejores de acuerdo a los puntos anteriores:

Caso 1

Un cliente me pide un sitio web con el contenido editable, pero a la vez quiere integrar sus webinar con una campaña de email marketing.

  • Bajo esas circunstancias tomaría la opción de usar WordPress.
  • Desarrollo un plugin para gestionar el webinar en caso de que no existiera alguna otra solución estable
  • Con ese mismo plugin, podría encargarme de notificar al gestor de email marketing los eventos que sean necesarios

Como te darás cuenta, me apalanqué en el trabajo de la comunidad de WordPress para las cuestiones de contenidos y enfoque mi experiencia en soluciones más enfocadas.

Caso 2

Una startup me pide que desarrolle un sitio con dos páginas de aterrizajes. La primera debe permitir obtener información del prospecto para después mandarles información de su servicio. La segunda página de aterrizaje es un carrito de compra donde ellos ofrecen sus ebooks y camisetas.

  • Para generar contenido, usaré un CMS.
  • Tengo dos opciones: La primera sería usando Prestashop o Magento porque su principal aplicación es la creación de tiendas de comercio electrónico. La otra opción podría usar WordPress apoyado de un plugin de eCommerce.
  • Me decantaré por la segunda opción porque investigando más a fondo con los fundadores, ellos están en un proceso de validación de su producto y por lo tanto no necesitan un sistema tan complejo como prestashop que fue creado para gestionar una gran cantidad de productos. Además su modelo de negocio de ellos va mas por el servicio y la consultoría.
  • Como ellos usan mailchimp para gestionar sus campañas de email marketing, usaré un plugin que permita al cliente recabar información de sus prospectos. Toda la gestión lo hacen con la plataforma
  • Por último, como mencioné antes, usaré un plugin gratuito de eCommerce, usaré WooCommerce porque cuenta con una comunidad muy activa de tal manera que tengo soporte casi garantizado. Ademas, es fácil integrar PayPal y los cobros por tarjeta.

A pesar de que esta solución aparentaba ser mas compleja, tomamos la decisión de usar soluciones estables que cubrían todas las necesidades de los fundadores.

Caso 3

Una agencia especializada en reclutar personal de seguridad me pide que le desarrolle un sistema para gestionar su personal. Además, el cliente me proporciona la información que necesita del reclutado, el estricto proceso de reclutamiento y la documentación que valide todo ese proceso.

  • No conozco un CMS que se acerque a lo que necesita este cliente. Si intentara usar uno e intentara adaptarlo, podría generar una crisis en el mantenimiento.
  • En estas situaciones podría apalancarme a través de un Framework. Donde tenga resulta la autenticación  y tenga definido algún patrón de desarrollo. De esa manera no sacrificó la seguridad y aún estaría creando soluciones completas pero con un desarrollo simple.
  • Diseño las estructuras de datos para almacenar los datos del reclutado, su documentación, proceso de selección y los registros de asignación. Para darle un seguimiento a su rendimiento con el cliente.
  • Módulo para generar y editar información.
  • Sección para asignar registros de entrevista.
  • Herramienta para subir la documentación al sistema.
  • Funcionalidad para registrar la asignación del personal a un cliente.
  • Defino las información que se necesita descargar.

La solución es mas compleja que la descrita anteriormente, pero intento justificar en esta situación de porque no pude usar un CMS. La ventaja es que cualquier cambio en el proceso interno de la empresa, el software permite que sus cambios sean rápidos porque no estamos ante una solución genérica como en caso de los CMS.

Como conclusión

Los CMS cuentan con herramientas que nos pueden ahorrar mucho trabajo y permiten que ofrezcamos valor con retos más enfocados. Su principal función es enfocarse en soluciones muy demandadas, sus módulos llegan a ser muy genéricos. Para propósitos específicos nos juegan como un arma de doble filo.

Mi objetivo es poder generar un debate, porque en el desarrollo no existen las soluciones correctas. Entonces esto corre a criterio según la experiencia de cada programador. Me gustaría saber tu opinión ¿De que manera lo resolverías tú?