27 Ene 2016

Cinco cosas a notar desarrollando en Magento

Cinco cosas a notar desarrollando en Magento

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 2010) sentí la misma sensación que pudiera tener un estudiante frente a los mandos de un Boeing 747. Esa sensación de apretar botones, ver luces y empujar palancas sin saber realmente lo que pasaba.

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 2016, pero no por ello menos importante.

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.

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. Pero hoy en día hay herramientas que nos facilitan la vida enormemente.

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, 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.

Artículos relacionados