La pregunta del millón: ¿Magento, Prestashop, WordPress, Symfony, PHP a pelo..


LaPreguntaDelMillonEs el gran dilema en el desarrollo de aplicaciones web. Te hablan sobre un proyecto; con unos requerimientos, unas especificaciones. Debes elegir con las premisas que te dan: presupuesto, tiempo de entrega, calidad, flexibilidad, mantenibilidad, practicidad.. ¿Existe ya una solución para el proyecto? ¿Se puede partir de un CMS y modificarlo? ¿Son demasiadas las modificaciones que se van a hacer al CMS? ¿Es viable partir de un framework de calidad? ¿Buscamos máxima calidad, o menor precio? ¿Hay muchos desarrolladores disponibles en el mercado para mantener el proyecto?

Es habitual partir de una decisión ya tomada. Por ejemplo, muchos llegan diciendo: quiero que me hagas un WordPress, o un proyecto en Symfony. Es el momento de parase a pensar, ¿es la mejor opción? ¿más nos vale parar y volver a empezar de otra forma? Mal asunto que te digan sí y amén sólo pensando en pasarte por caja. Igual no es lo que necesitas, te puede costar mucho tiempo y dinero, y al final no es lo que esperabas tener. Puedes pensar que usar un Joomla con unos módulos puede ser una buena solución para montar una red social (no lo hagas). O puedes pensar que modificar un Magento al extremo es lo mejor (agárrate que vienen curvas si lo haces).

Pensar que una solución es siempre la mejor para todos los casos es un error. Y si la experiencia me dice algo, es que no hay que apurarse para elegir. Es muy habitual plantear mal un proyecto informático; y transcurridos unos meses o años, arrepentirse para luego cambiar toda la tecnología. Recomiendo delegar en personas cualificadas técnicamente para esto, no te obceques en que una solución es la mejor, y ten muy en cuenta los contras de cada camino de inicies tomar. En la tecnología, lo que es pan para hoy es hambre para mañana. Hay que actualizarse mucho y todo cambia a una velocidad vertiginosa. La sabiduría está en la multitud de consejeros, y cuantas más personas de perfil técnico te asesoren, mejor tomarás una decisión técnica. Ahora bien, decide, y cuantas menos empresas anden metiendo mano a un mismo proyecto web, mejor que mejor.

Construir desde cero

Logo de PHPPrimero cito esta solución, que normalmente no uso. Construir desde cero una web sólo lo aconsejo para esos casos en los que se trate de información puramente estática. Cuando sea una web que se va a hacer una vez y no volver a tocar. Quizá es un experimento, o es que necesitamos que sea HTML puro y duro con algo de CSS y Javascript. Esta solución solo la uso en los casos de pequeñas funcionalidades.

Es decir, sólo para proyectos de 1 tarde, unas horas, o poco más. Quizá una funcionalidad externa puntual. Sólo uso la construcción desde cero en pequeños desarrollos que se centran única y exclusivamente en una funcionalidad. Por ejemplo, imaginemos que simplemente queremos poner una cookie a los visitantes según la fecha y hora del día, usando unos parámetros recibidos en la URL.

Construir desde cero es como muchos dicen, volver a inventar la rueda. No lo aconsejo para nada, huye de esto siempre que puedas.

Usar un framework de desarrollo ágil como Symfony

Symfony logoEsta es la solución que muchos no duchos en el desarrollo confunden con desarrollar desde cero. Usar un framework de desarrollo web es un tema muy avanzado. Se pueden construir webs en poco tiempo, muy robustas, con muy buena calidad y brutalmente flexibles. En el caso de Symfony tienes generadores de formularios, te puedes independizar del tipo de base de datos y posteriormente cambiarla. Tienes componentes de seguridad hechos por expertos en seguridad, ya no necesitas ser un ciberexperto en seguridad para hacer aplicaciones web seguras. Tienes robustos sistemos de programación que te harán el día a día más sencillo. Se establece una estructura estándar que todo el mundo PHP está conociendo cada día más. Y un largo etcétera..

Los principales frameworks de desarrollo web como Symfony, Laravel o Zend, incorporan una cantidad ingente de herramientas. Te proporcionan lo necesario para construir en muy poco tiempo soluciones muy profesionales. Esta solución es la que siempre intento recomendar, ya que el resultado siempre se podrá adaptar. Si el tiempo de entrega o el presupuesto no es bastante tendremos que pensar en otra solución.

Resumiendo, cuando no existe nada parecido, no nos queda más opción que decantarnos por un framework. Cuando modificar un CMS existente para adaptarlo es excesivo, inestable, caro, o muy lento. O cuando quieres el resultado más limpio y profesional posible, recomiendo usar un framework de calidad.

Principales CMSs Vs framework de desarrollo

Quizá usar un CMS prefabricado sea una buena solución al principio. Pero si es muy grande la cantidad de modificaciones, o necesitamos agilidad en hacer dichas modificaciones, desearemos haber elegido un framework.

Si tenemos que entregar pronto y barato, está claro, usemos un CMS como WordPress o Prestashop. Pero no nos olvidemos para lo que se han hecho. Pensemos en la cantidad de módulos disponibles que ya hay. Y contemplemos si tendremos que modificarlo en exceso o no. Quizá tenemos un especialista, y tengamos muy claro que llevarlos al límite modificándolos no es una buena idea. Si tantas son las modificaciones que necesitaremos es mejor construir desde un framework.

Si hemos construido la solución con un framework bien reconocido en la comunidad de desarrollo como Symfony, estaremos seguros que todo sigue unas normas. Estaremos seguros de que tenemos una calidad difícilmente mejorable. Y si queremos estar constántemente modificando la web, querremos haber elegido esta solución. Si por el contrario queremos ser prácticos, rápidos en la entrega, y no es un problema ceñirnos a las características de un CMS, adelante entonces..

Los principales CMSs: Magento, Prestashop, WordPress, etc..

Si ya estamos seguros que hemos descartado el uso de un framework o construir desde cero llegamos a esto. He elegido para comparar los tres que considero los principales. Son los que me suelo encontrar en el día a día. Aunque hay muchos más que no dejan de estar muy interesantes como Sylius o Drupal.

Logo de WordPressEmpecemos,  si lo que necesitas es algo rápido para publicitar información, escribir sobre algún tema información, o incluso montar una pequeña tienda prefiero recomendar WordPress. Si quieres montar una web informativa, sin virguerías, un blog, web corporativa.. cosas sencillas. Podemos usar el bien conocido WooCommerce que es un plugin de WordPress para montar una pequeña tienda. Pero no nos olvidemos lo que tenemos. Es una solución práctica, rápida y económica. Ahora bien, ajustémonos a lo que hay en el marketplace de módulos y temas.

Logo de PrestashopEn el momento en que queremos subir un peldaño en la complejidad de una tienda tenemos Prestashop. Es una solución robusta cuando tenemos muchos productos y no tenemos muchos recursos informáticos/económicos. He visto tiendas con miles de productos que funcionan muy bien en un Prestashop. Pero volvemos a lo mismo, si hemos elegido Prestashop, no nos olvidemos que tenemos un CMS prefabricado. Es una excelente solución, centrémonos en los módulos y plugins existentes. O más nos valdrá tener a un fuerte especialista en Prestashop si son demasiadas las modificaciones. Y si son demasiadas las modificaciones, más nos valdrá haber elegido un framework. Quizá lo ya construído en Prestashop puede ser un problema; quitarlo o modificarlo puede ser más complejo que contruir desde un framework. Tema aparte, ya las últimas versiones de Prestashop vienen reconstruidas sobre Symfony. Sí, has leído bien, Prestashop se ha reconstruido con Symfony por debajo.

Magento logoComo tercera solución, usando un CMS, presento Magento. Es una gran solución, necesita más infraestructura informática, pero proporciona un punto de partida muy completo. No es comparable a Prestashop o WordPress. Es para grandes tiendas online, teniendo un framework de desarrollo propio. Magento se construye sobre el Magento Framework, que a su vez se contruye sobre Zend Framework y Symfony. Es una solución muy robusta y muy flexible, pero lento de modificar y caro de mantener. Internamente está muy bien desarrollado. Incorpora Prototype antiguamente, y en las nuevas versiones jQuery, con muchas plantillas desarrolladas sobre Bootstrap (mobile-first). Magento 2 empieza a incorporar elementos de Symfony. ¡Sí! también has leído bien, algunos componentes de Symfony dentro de Magento 2 😉

¿No hay más soluciones?

Sylius logoSólo me queda citar a dos contrincantes, que a mi entender, son muy buenas soluciones. Y no van a dejar de dar guerra. Son soluciones muy muy potentes. Se trata de Drupal y de Sylius. Drupal se reconstruyo en Symfony desde hace ya tiempo. Mientras que Sylius acaba de nacer siendo de siempre hecho sobre Symfony. Sí, no paro de hablar de Symfony, pero es que es todo un referente en el desarrollo web 😛

Drupal logoNo olvidemos tampoco a soluciones autoadministradas como Shopify, Vtex o Wix que últimamente están también de moda. Esta opción es contratar el servicio, es decir, se trata de alquilar una web y simplemente meter el contenido para usar. Ahora bien, tengamos claro que no modifiquemos nada. O si necesitamos modificar algo en estos sistemas tendremos que ir al propietario, o entrar en una espiral de formación del personal inacabable en la que los resultados vendrán lentamente y con cuentagotas.. Está claro que no lo recomiendo ¿verdad? Como desarrollador no, no lo recomiendo, pero quizá hay proyectos en los que un Shopify es la mejor solución. Shopify es muy buena solución si queremos desentendernos de todo y simplemente usar una web, pero no te salgas de lo que hay..

Conclusiones

Algo en claro podemos sacar de todo esto. Haciendo un poco de analista programador, buscando una perspectiva global de todo. Parece que Symfony es un framework en el mundo PHP, que está conviertiéndose en un estándar del que tomar ejemplo. Queda claro descartar soluciones sin framework. Y todo apunta que Symfony es una buena solución si buscamos máxima calidad o máxima flexibilidad. Si se trata de un proyecto raro, algo muy novedoso está claro que Symfony es el punto de partida.

Para hacernos una idea de la importancia de Symfony en el desarrollo web, sólo hay que fijarnos en cuántos proyectos se están reescribiendo en Symfony. El último que conozco es Prestashop. Magento incorpora algunos elementos de Symfony. Joomla también, Drupal fué de los primeros en reconstruirse con Symfony. phpBB también y muchos otros están incorporando las técnicas más avanzadas que representan el uso de un framework de desarrollo ágil de aplicaciones.

Si queremos ser más prácticos, con rápida entrega y sin demasiadas florituras, vayamos a un CMS como WordPress o Prestashop. Y si tenemos tiempo y dinero, y queremos muchas funcionalidades como punto de partida, vayamos a un Magento. Quizá un Magento sencillo es un buen punto de partida y quizá no demasiado caro. Pero quizá esas funcionalidades que traen los CMSs luego son más un problema que una ayuda. Habría que sentarse a debatir sobre los requerimientos.

Espero haber arrojado algo de luz en todo esto.

Compartir..

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *