Magento es una de las soluciones open source de eCommerce más extensas que existen. Cualquier programador que haya descargado el código y echado un vistazo o trabajado con él sabe perfectamente a lo que me estoy refiriendo. Basado en el framework de Zend, y con una arquitectura inspirada en ciertos aspectos en el mundo de Java, puede ser intimidatoria para un recién llegado.
¿Pero dónde están las plantillas?
De las primeras cosas que puede pensar un programador que quiere desarrollar para el entorno es.. ¿pero dónde están las plantillas? ¿y cómo las cambio? ¿como extiendo su funcionalidad? o… ¡Pero para qué carajo sirven tantos archivos XML!
Recuerdo que la primera vez que (intenté) usar y programar para Magento (allá por el año 2008) sentí la misma sensación que pudiera tener un estudiante de primero de EGB a los mandos de un Boeing 747. Esa sensación de apretar botones, ver luces y empujar palancas sin saber realmente lo que pasaba. Seguro que muy similar a alguien que está aprendiendo a usar CSS por primera vez. Guiño guiño.
Curva de aprendizaje de Magento
Es cierto que para un programador, la curva de aprendizaje de Magento es más elevada que con otros sistemas como Prestashop o WooCommerce. Pero su dificultad no obedece en un capricho onírico de Martin Fowler, si no a una arquitectura (que aunque bueno, tenga sus más y sus menos, como todas) es sólida y pensada para crecer en el tiempo. Y sobre todo, extensible con facilidad. Magento es una plataforma compleja, pero pensada para crecer.
Fruto de mi experiencia de la guerra en las trincheras, creo que no está de más recomendar los siguientes puntos a tener en cuenta a la hora de enfrentarse a un proyecto de eCommerce basado en Magento:
- Usar un control de versiones. Es algo obvio, e incluso insultante de recomendar en pleno año 2015, pero no por ello menos importante. Git, Mercurial… el que queráis. Los más masoquistas pueden recurrir a CVS o SVN. Allá cada cual. Lo importante es usarlo. Tal vez en un posterior artículo hable de estrategias de branching para mantener la cordura y la salubridad dentro de nuestros desarrollos con Magento.
- Utilizar un IDE moderno. Da igual que sea NetBeans, PhpStorm, Zend Studio o incluso un emacs customizado. Pero por favor, que tenga seguimiento del código (para poder saltar a las definiciones de clases o métodos), un buen navegador de carpetas y archivos, posibilidad de lanzar debugs o test unitarios, resaltado de sintaxis, code completion, soporte para PHPDoc, refactorizados, etc. En fin, esos lujos asiáticos. Magento tiene más de 4.000 clases PHP. Gestionar eso -o cualquier proyecto de PHP moderno- con Notepad++ o TextMate puede llevarnos directos a la locura y la bebida. Buscar a golpe de click dónde está la implementación de Mage_Shipping_Model_Mysql4_Carrier_Tablerate_Collection puede acabar desgastando nuestro ratón.
- Experimentar el sistema de bloques XML. Esto es uno de los puntos en los que Magento hace perder más pelo a los desarrolladores y diseñadores. Probablemente a ello contribuya la falta de una documentación oficial (al menos hasta ahora, parece que van a mejorar las cosas en Magento 2) y a ciertos quirks del sistema. Tener además un conocimiento básico sobre XML es fundamental.
- Usar un sistema de despliegue. Si, todos lo hemos hecho. Subir archivos por FTP uno a uno. Entrar por SSH y hacer un hotfix con vi de esa petada tan fea en la tienda online en producción mientras nos caen goterones de sudor frío. Pero hoy en día hay herramientas que nos facilitan la vida enormemente. Por ejemplo, capistrano, de la que en Intercastilla somos un gran fan. O incluso algunas SaaS como beanstalkapp que usamos para otros proyectos. Es un tema de el que da de hablar varios artículos aparte, y elijáis el sistema que elijáis, lo importante es que minimicéis las inconsistencias: que no haya errores en producción mientras vuestros cambios se terminan de subir. Lo que se conoce como Blue/Green Deployment.
- Entender perfectamente la jerarquía de temas. Y haber leído la Guía de diseño, para comprender cómo funcionan los temas y paquetes.
Seguramente haya más cosas que me deje en el tintero, pero estos son, a lo largo de los años, los puntos a los que considero prestar más atención como iniciados en la programación de sistemas de eCommerce en Magento.
No hay comentarios