Cómo construir un eCommerce Singular. Capítulo 1, El eCommerce Top 100

Introducción

Comienzo aquí una serie de posts sobre cómo construir un eCommerce Singular, candidato a estar en un listado de Top 100, utilizando una arquitectura de microservicios. Son dos de los temas a los que dedico mi atención últimamente en Sngular. En cierta medida es normal: por una parte Sngular es una empresa que lleva construyendo tiendas online prácticamente desde sus orígenes como MediaNet, a mediados de los años 90. Algunos de los proyectos que hemos hecho son www.lolamarket.com , el caso de ModeloNow de Grupo Modelo (ahora https://www.pepedelivery.com/), https://www.cuidadoconelperro.com.mx/ y sus dos millones de fans en Facebook, cuando hicimos Planeo.com del Grupo PRISA, y por encima de todos ellos, el caso de BuyVIP y su posterior adquisición por Amazon. Por otra parte, porque los compañeros del área de Arquitectura llevan ya unos años construyendo soluciones basadas en microservicios. Empezamos en entornos de banca, pero la realidad es que se trata de una aproximación que cada vez tiene más adopción a la hora de construir grandes sistemas distribuidos, que gestionan miles de transacciones al día y que tienen que responder y escalar ante picos de carga.

Total, que me parecía interesante compartir algunas reflexiones. El hilo argumental que voy a seguir se materializa en los siguientes capítulos:

  • ¿Qué es un eCommerce Top 100 y por qué hay que hacerlo a medida? Donde vamos a repasar los diferentes tipos de sites de eCommerce que construimos en Sngular, los criterios de cualificación con los que los clasificamos, y sobre todo, qué es lo que nosotros consideramos un eCommerce Singular. Aprovecharé para compartir algunos datos que me parecen relevantes a la hora de enunciar nuestra definición, y que además, son la clave de la argumentación de los 3 motivos por los que siempre vamos a recomendar hacerlos a medida.
  • El bloque Monolítico. Una de las principales áreas de trabajo y evolución de la disciplina de la Arquitectura de Software es la creación de sistemas desacoplados, que combinen la eficiencia en el consumo de recursos para producir resultados, la capacidad de escalar ante los picos de carga del sistema, y que puedan ser extendidos y mantenidos por un equipo de desarrollo. Desde los años 90 existe el patrón de 3 capas (presentación, negocio y datos) que aplican todos los eCommerce del mundo, pero un back-end puede terminar por convertirse en un Monolito, y eso podría ser una barrera para el crecimiento / rendimiento de un eCommerce Top 100. Por cierto, que hay empresas como Basecamp o Etsy que defienden sus arquitecturas de Monolito Majestuoso; también hablaremos sobre ello en los Apéndices.
  • Los elementos de un eCommerce. Para crear una arquitectura de referencia de microservicios sobre la que construir un eCommerce Singular, hay que tener una idea de los elementos estarán presentes en la tienda online. En este capítulo haremos un benchmarking de sites que servirá posteriormente como base para plantear la arquitectura. Me refiero a aspectos como la gestión de múltiples países, el registro de usuarios, el catálogo, las páginas de producto, las recomendaciones, el proceso de checkout, el pago en one-click, la integración de medios de pago, etc. Para escribir sobre esto intentaré engatusar a Farid Fleifel y Javier Cuervo.
  • Arquitectura de Microservicios de Referencia. Donde se presentará un modelo de arquitectura que contenga los elementos descritos anteriormente, y un planteamiento de muy alto nivel sobre qué tecnologías utilizar para construirlos. Se que muchos pensaréis que qué coño voy a contar sobre esto si la última vez que abrí un Eclipse fue en 2009, pero no os preocupéis porque en este capítulo espero contar con la visión de César Camargo, Eugenio Concepción, Iñaki Reta, Daniel Castilla, y el resto de compañeros del equipo de Arquitectura de Sngular. (Puede que os parezca un truco sucio dejar sus nombres por escrito, pero así es la vida¯\_(ツ)_/¯  )
  • ¿Cómo hacer la transición? En el último capítulo haremos una pequeña revisión de diferentes estrategias para hacer la transición de un sistema a una nueva arquitectura de microservicios, sin pérdida de continuidad del negocio (sin dejar de vender, vamos). Lo que viene siendo el símil de cambiar el motor del avión en pleno vuelo.

En fin, es un reto ambicioso porque me salen unos cuantos posts. Pero bueno, lo mejor es empezar por el principio. Así que vamos a ello. Espero que os parezca interesante 😉

Capítulo 1. ¿Qué es un eCommerce Top 100 y por qué hay que hacerlo a medida?

Estoy en condiciones de afirmar, sin posibilidad de error (incluso con apuesta de pincho de tortilla y caña) que en todas las reuniones en las que he estado donde una o más personas querían crear un modelo de negocio de eCommerce, siempre ha salido la pregunta del millón. Y contra todo pronóstico, la pregunta del millón no es “¿qué tengo que hacer para vender mi primer millón de euros online?”, sino “¿esto se hace con una plataforma o se desarrolla a medida?” La siguiente pregunta es “¿y cuánto va a costar?”.

En Sngular, como somos gente muy práctica y además transparente, estudiamos cada caso y hacemos una recomendación basada en la necesidad, el escenario y en general todas las condiciones de contorno del caso del cliente. Esto siempre gira en torno a las dos Cs Elementales del eCommerce. La primera es la de la Cualificación del tráfico y la segunda la de Conversión. El propósito de cualquier plataforma que se construya debe ser la de convertir tráfico cualificado en ventas de productos de calidad, y eso se consigue a través del diseño de una experiencia de compra construida sobre una plataforma tecnológica. Hay otros elementos del círculo virtuoso del eCommerce, como es la capacidad de hacer la entrega de los productos, y el servicio post venta que se da al cliente. Todos son importantes para lograr el éxito.

Pero lo más importante desde nuestro punto de vista es que una tienda online, es un modelo de negocio de base tecnológica. Es decir, la tecnología es una condición necesaria (pero no suficiente) para el negocio: para que funcione y crezca. Dicho lo cual, en nuestro árbol de decisión, existen cuatro categorías de eCommerce.

En el escalón más básico está el eCommerce MVP (de Minimun Viable Product) que refleja aquellas situaciones donde se está creando un modelo de venta estándar que incluye las 3 Cs Básicas del eCommerce (Catálogo, Carrito y Check-Out), en una compañía 100% online (es decir, no hay venta física), que inicia una etapa exploratoria de la viabilidad de su idea con un catálogo de productos reducido. Aquí nuestra recomendación es concentrarse en validar la idea negocio lo antes posible, con una inversión acotada. Por eso apostamos por plataformas tipo Shopify (un eCommerce as a Service) o WooComerce (que por resumir, es una extensión de WordPress) En un eCommerce MVP el rango de inversión inicial empieza en torno a los 16 o 20K y puede llegar a los 50K sólo en tecnología (es decir, sin contar otras inversiones necesarias como el sourcing o campañas captación de tráfico, etc), y un time to market que no supera las 6 semanas. Es una inversión pequeña, como pequeño es también el control que se tiene sobre la solución. Lo importante en este caso es validar el modelo con una inversión que si no cubre la expectativa no suponga grandes pérdidas; pero que si se demuestra que el modelo de negocio es viable, se pueda tirar a la basura sin gran tristeza, y pasar al siguiente escalón.

Ese sería el de un eCommerce Standard, aquellos casos en los que existe un catálogo con más o menos cierta profundidad, en un modelo de venta que empieza a considerar las 2 Cs Adicionales (Consejos y Comentarios) para incrementar el ticket medio y la fidelización de los usuarios. En este escenario, el promotor no necesita validar la viabilidad de su idea, porque ya se sabe que lo es; y tiene prevista una inversión moderada en un horizonte temporal de medio plazo (1 o 2 años). Nuestra recomendación es ir o bien a una plataforma estándar tipo Magento / Prestashop o construir sobre nuestra plataforma Sngular Billionlabs basada en PHP Laravel. La decisión fundamentalmente depende de las integraciones a realizar, de cómo se espera abordar la omnicanalidad, y en general de hasta qué punto se quiere o necesita construir sobre la plataforma para lograr materializar el site. Cuanto más estándar sea, más fácil es que se pueda construir sobre una plataforma de mercado; sin embargo, la particularidad del modelo, o del diseño, o de las integraciones pueden marcar la diferencia entre construir sobre plataforma de mercado y re-construir una plataforma de mercado. Por lo general, re-construir la plataforma es una mala idea, se pierde la continuidad con futuras versiones, aumenta la complejidad del mantenimiento y la extensión, y se acaba con un bonito Frankenstein. Si en tu horizonte te ves con un Frankenstein, lo mejor es que te plantees un desarrollo a medida desde el principio. En este tipo de eCommerce, la inversión sólo en tecnología puede empezar en el rango de los 60K-80K anuales y llegar a los 100K-120K. En cuanto al time to market, ya varía entre usar plataforma o desarrollo a medida, sin embargo nuestra experiencia nos dice que a partir de la semana 8 ya es posible tener una primera versión lista para empezar a vender online, en un proyecto que con entregas iterativas puede llegar a las 16 semanas.

eCommerce Usage Stats

Estadísticas de plataformas de eCommerce según datos de https://trends.builtwith.com/shop

 

El tercer escenario es el eCommerce Pro, el de empresas en un importante nivel de madurez que apuestan por el online como una fuente de ingresos relevantes dentro de un plan de negocio en varios países. En este caso el nivel de adaptaciones específicas es cada vez mayor, sobre todo con la integración de otros sistemas corporativos. Este tipo de proyectos tienen previstos fuertes inversiones no sólo en tecnología, también en captación de tráfico para el site. El catálogo de productos es relevante, el modelo online incluye todas las Cs del eCommerce habidas y por haber; y otros aspectos como la gestión de inventario (que puede estar distribuido) y logística de entrega (donde puede haber diferentes proveedores) o medios de pago (incluyendo por ejemplo diferentes plataformas para cada país) tienen mayor peso. Hay además una necesidad fuerte de integración de sistemas existentes (propios o de terceros), y el site forma parte de una estrategia omnicanal donde el cliente puede llegar a interactuar con la marca y el producto en tiendas físicas, en el online, en el móvil, etc. En este caso, la recomendación de Sngular es ir con grandes plataformas como Hybris / Oracle ATG / IBM Websphere según lo aficionado que uno sea a dejarse guiar los Gartner y Forrester de turno, o hacer un desarrollo completo a medida.

En general, si la tienda online requiere integrar un elevado número de sistemas legacy para procesar las operaciones; o está concebido como una plataforma en la que acceden diferentes terceros; o el modelo de negocio no encaja al 90% con el estándar de una plataforma, nuestra recomendación es un desarrollo a medida.

En un eCommerce Pro, el rango de inversión empieza en los 120K-160K anuales sólo en tecnología, y puede llegar al millón de euros cuando empezamos a meter licencias e infraestructura. En estos escenarios hay mayor variabilidad en el time to market, si bien es razonable pensar que en el mes 4 puede haber una plataforma bastante parecida al resultado final, sobre que la que se puede seguir iterando ampliando funcionalidades hasta los meses 6-8.

 

 Gartner Magic Quadrant Digital Commerce 2017  Forrester Wave Report for B2C eCommerce, Q1 2017
Gartner Magic Quadrant to Digital Commerce, April 2017 Forrester Wave Report for B2C eCommerce, Q1 2017

eCommerce Singulares según Sngular

Por último tenemos la joya de la corona. Esos que llamamos los eCommerce Singulares. La clase de eCommerce que siempre recomendaremos construir a medida, porque nuestro cliente quiere entrar en el Top 100. Para lograrlo es posible que haya que dar respuesta la creación de un modelo de venta propio, clave para la ventaja competitiva y por tanto, no cubierto por ninguna plataforma estándar. En este caso estamos hablando de inversiones por encima de los 250K sólo en tecnología el primer año, que pueden empezar directamente en los 400K-500K.

 

 DigitalCommerce360 Top500 USA DigitalCommerce360 Top500 Europa

DigitalCommerce360 Internet Retailer Top500 Report (USA y Europa)


Los datos que publica DigitalCommerce360 son muy interesantes, muestran que
el 41% de los Top 100 eCommerce de Estados Unidos desarrollan a medida su tienda online. Este dato sube hasta el 58% si lo filtramos al Top 100 eCommerce en Europa. Amazon, Alibaba o Rakuten, los gigantes del eCommerce mundial, han desarrollado a medida sus plataformas (propias, que luego abren a terceros o incluso permiten que se construya sobre ellas). Si miramos la lista de los principales eCommerce de Estados Unidos, podemos comprobar que todos han desarrollado su propia plataforma de comercio electrónico, y de hecho en algunos casos como Amazon.com o Wal-Mart la han abierto a que otras empresas puedan construir con ellas.

Facturación del Top5 eCommerce US en 2016 (Fuente: WWD)

Facturación del Top5 eCommerce US en 2016 (Fuente: WWD)

El eCommerce Singular siempre hay que hacerlo a medida

Nuestra recomendación para crear un eCommerce Singular es siempre el desarrollo a medida. Para conseguir un eCommerce que entre en el Top 100 tienes que mantener el liderazgo estratégico frente a tu competencia, tener el control sobre tu plataforma, y evitar el vendor lock-in;

  • Liderazgo estratégico. No se puede condicionar en ningún caso la implementación de una estrategia de comercio online a las capacidades o features de una plataforma, y mucho menos al roadmap de evolución que haya decidido un fabricante. Esto es fundamental: ser un eCommerce Top 100 significa innovar, liderar y estar por delante de los competidores. Construir sobre una plataforma implica tener los mismos niveles de libertad y las mismas funcionalidades que el resto de tus competidores que la usan. Crear tu propia plataforma te permite construir tu propio liderazgo.
  • Continuidad del producto. Construir extensiones o adaptaciones sobre una plataforma propietaria no evita una inversión elevada, por la especialización de las personas que tienen certificados los conocimientos para hacer las extensiones o adaptaciones sin que impacten en el rendimiento o escalabilidad. Sobre todo, tampoco garantizan que ante una nueva versión del core de la plataforma las extensiones vayan a seguir funcionando. Tu propia plataforma puede evolucionar y re-evolucionar según tu necesidad.
  • Vendor lock-in. Utilizar tecnología propietaria, es decir, no estándar, siempre tiene asociado el riesgo de convertirse en una relación asimétrica, en la que el proveedor tiene un papel dominante sobre el cliente, llegando incluso a coartar su independencia. El temido vendor lock-in. Construir una plataforma según tus propias especificaciones usando tecnología estándar y abierta te permite crear tu propio equipo de desarrollo in-house, o abrir el desarrollo de forma transparente a un amplio abanico de proveedores.

En general, una plataforma a medida permite tener el control absoluto sobre el modelo de negocio, la experiencia del usuario, la tecnología y su evolución.

Categorías eCommerce Sngular

Las cuatro categorías de eCommerce tal y como las concebimos en Sngular

 

De cualquier manera, supongamos que tienes un eCommerce Top 100 construido sobre una plataforma de terceros, que ha ido evolucionando con integraciones y extensiones. O que es un desarrollo a medida hecho entre 2010 y 2015 (me resultaría difícil pensar que a día de hoy alguien está vendiendo como churros algo en internet con un desarrollo de hace más de 8 años) Puede que esté desplegada en la nube de Amazon AWS o de Microsoft Azure; de cualquier manera, seguramente lo que tienes es, como se dice en el ámbito del software, un Monolito.

Y si estás en el momento de rehacer tu eCommerce, o tienes luz verde para crear un nuevo eCommerce Top 100, lo que deberías evitar es ponerte a construir un Monolito. Pero, ¿qué es eso del Monolito?

(Continuará…)

House D. T. (Design Thinking)

Bien, empecemos por el principio. ¿Qué es el Design Thinking? Es una aproximación a la resolución de problemas. Ah, muy bien. ¿De qué tipo de problemas? Problemas de todo tipo. Nos pensamos que esto sólo vale para crear servicios y productos digitales, pero no. Ah, qué pasa, ¿qué antes no se podía innovar? Por supuesto que sí. ¿Entonces por qué se ha puesto de moda? Por lo mismo que las aproximaciones Lean al ciclo de vida de un producto digital, o el desarrollo ágil a la construcción de software. Porque está orientado al éxito en el mundo de la transformación digital, caracterizado por la incertidumbre, la necesidad de adaptación al cambio y la evolución tecnológica que habilita la disrupción.

Vale. ¿Y qué tiene que ver HOUSE en esto?

House Design Thinking

Manos a la obra (Imagen de Cris HE)

No se si alguna vez habéis visto esa serie. Va de un doctor insoportable que dice todas las impertinencias que se le pasan por la cabeza disfrazándolas de honestidad, pero la gente se lo consiente porque acababa por resolver los casos más difíciles del hospital. Bueno, cuando termines de leer este post podrás decir que el Design Thinking es como un capítulo de HOUSE, sólo que sin un cojo cabrón que te da bastonazos (y sin que muera gente cuando te equivocas)

No es Lupus

Gracias a House descubrimos lo que es el Lupus, ya que era una hipótesis prácticamente en todos los episodios. Bueno, para mí el DT es en cierta medida el proceso de diagnóstico diferencial que hacía el doctor House con su equipo.

Si recordáis en todos los capítulos (casos) se probaban diferentes hipótesis, ninguna era la buena, salvo la que se probaba antes del final del episodio. Cosa normal por otra parte, forma parte del estilo de este tipo de series; en CSI el sospechoso culpable es el último al que interrogan y en Mentes Criminales la chica secuestrada siempre está en la última granja que registran.

Lo primero que tienes que saber sobre DT es que es un proceso para resolver problemas de forma iterativa, lo que significa que después de unas actividades más o menos descritas y consensuadas como corpus del proceso, se llega a una hipótesis. Y en la propia naturaleza del proceso se encuentra materializar esa hipótesis de una forma que permita ponerla a prueba rápidamente, antes de que caduque, y así obtener conclusiones que permitan el refinamiento. Y vuelta a empezar en el proceso.

Por tanto recuerda: nadie espera que soluciones un problema a la primera; ni House ni Horatio han resuelto un caso en su vida a la primera, pero se han hinchado a Emmys.

Los Síntomas no son la Enfermedad

Cuando los niños tienen fiebre, se les puede dar Dalsy para que les baje; pero sólo explorando el oído y viendo la otitis se les puede dar antibiótico, reducir la inflamación, curar y en el proceso, le bajará la fiebre. Pues esto es lo mismo. Aplicar el proceso de DT supone olvidarse de los síntomas del problema; e invertir tiempo en conocer y comprender sus causas, en lugar de paliar sus síntomas.

House Design Thinking

Abre tu mente, Quaid (Imagen de Peter Pham)

Una de las diferencias que aporta el Pensamiento de Diseño a otras metodologías de innovación es que las primeras etapas del proceso, el research se centra en las personas y sus propósitos, para detectar sus pain points o necesidades no detectadas. Es quizá la importancia que tiene la observación de la persona y sus problemas lo que diferencia este proceso, de otros en los que o bien el centro de la innovación es un proceso que se busca mejorar (por lo general para eficientarlo o desintermediarlo) o en los que se trabaja sobre grupos de clientes a partir de agregados estadísticos (impersonales porque se sustentan en la fuerza del número)

Todo el Mundo Miente

Hemos visto que una de las características principales de DT es que se busca el origen del problema en la experiencia / vivencia de la persona (usuario, cliente, empleado, recurso… cuanto antes olvides esas palabras y vuelvas a usar la palabra “persona”, mejor) Por eso,  una de las formas de referirse o definir DT es Human Centered Design. Podría traducirse como Diseño Centrado en la Persona, a mí al menos me gusta más, porque Diseño Centrado en el Humano suena un poco ridículo (no va a ser Diseño Centrado en el Wookie)

Precisamente, una de las frases recurrentes en los capítulos de HOUSE es que todo el mundo miente. El paciente miente. Y parte del trabajo del episodio era descubrir que el niño lleva sordo desde los 7 años pero no lo quería reconocer, que el padre oye voces, o la madre se mete unos tiros cuando nadie mira. A veces los médicos tenían incluso que colarse en casa del paciente para descubrir que tenía moho en el cabecero de la cama, etc.

En general, sabemos menos de nuestros clientes de lo que nos gusta reconocer. Por eso es tan importante para mí el pensamiento crítico, la habilidad de sacar conclusiones a partir de la objetividad evitando el sesgo o el prejuicio. Cada vez que alguien dice “es que los clientes no quieren (pon aquí lo que sea)” deberíamos preguntarle en qué datos se sustenta esa afirmación. Y si alguien dice “mi madre no usaría (pon aquí lo que sea)” hay que invitarle amablemente a dejar el equipo.

El Equipo

Aunque no lo parezca, House trabaja con un equipo de doctores que se involucran tanto en el proceso de descubrimiento del paciente, como de diagnóstico de la enfermedad; y además se reparten los papeles durante la parte de aplicar el tratamiento. Y esto es así porque cada miembro del equipo aporta desde su propia especialidad y experiencia.

De la misma forma, otra de las características del proceso de DT es la creación de equipos multidisciplinares e interdepartamentales. De esta manera, se comparte a lo largo de la organización no sólo la visión del cliente y su necesidad (¿habéis conocido a alguien de Compras a quién le importe el cliente final?) sino la resolución del problema a través de la creación de un producto o servicio. Además, se rompen silos de información y estructuras monolíticas… vamos, todo ventajas.

Deja al Doctor, que sabe lo que hace

En muchos episodios los pacientes cuestionan el conocimiento o capacidad de las personas que les están atendiendo; bueno, en episodios y en la vida real. En general y por sobre-simplificar, un doctor adquiere durante la carrera un conocimiento general de muchos temas y luego se especializa en un área concreta en la que se desarrolla profesionalmente. En el caso de HOUSE, no es sólo la especialidad la que les lleva a entrar al Departamento de Diagnóstico Médico, sino su forma de pensar, abordar problemas y en general, apertura de miras.

House Design Thinking

Vicodin, divino tesoro (Imagen de Nancy L. Stockdale)

Podríamos decir que en el caso del DT la aproximación es equivalente. Quizá el campo de conocimiento o formación en DT no tiene la formalidad ni el reconocimiento de una carrera de Medicina, es más amplio y a la vez difuso (pese a que algunos centros de formación aspiran a erigirse en referentes). Pero igualmente, serán la especialización del profesional en competencias relacionadas con la creatividad y el diseño, junto con su forma de pensar y amplitud de miras las que le llevan a formar parte del equipo de diseño.

Como decía un poco más arriba, hay una serie de prácticas o técnicas que se asocian con el proceso de DT, aunque la verdad es que son comunes a muchas metodologías y disciplinas creativas, tanto del mundo del diseño industrial, la experiencia de usuario, el desarrollo de software o la gestión de la innovación en general. Hay también un cierto consenso es que no es tan importante la formación en el proceso general, como el dominio en el uso de las técnicas concretas que cada equipo emplee durante su proceso creativo.

A veces el Enfermo Empeora

Claro, como en HOUSE el caso tiene que durar lo que dura el episodio, en el proceso se prueban diferentes alternativas hasta dar con la causa (igual que Horatio, por mucho Horatio que sea, interroga y acosa policialmente a siete antes de trincar al malo) (no como Colombo, que siempre sabía quién era el asesino desde el principio, pero ese es otro post) Durante ese proceso iterativo, House y su equipo se enfrentan al fracaso, recogen nuevas hipótesis y vuelven a empezar.

Por eso también podríamos decir que el proceso de DT requiere una predisposición mental al proceso creativo, un orden para dar con la solución, y una importante tolerancia a la frustración para ser capaz de aprender y volver a empezar.

Quizá ese es el motivo por el que en muchas organizaciones la entrada en este proceso se hace a través de pequeños experimentos (como la gaseosa)

House es Hugh Laurie

Por último, no olvidemos que HOUSE es una ficción. Una ficción que además tiene como nombre el del protagonista. Hay una serie de 8 temporadas con su nombre porque House es el dueño absoluto e indiscutible de la resolución del caso, muchas de las veces por una genial ocurrencia de última hora (durante los últimos 10 minutos del capítulo, en el bloque que sigue a la última pausa para los anuncios).  

¿Y el equipo? Los del equipo están ahí como actores secundarios, para aportar equilibrio a la trama o para dinamizar la narración.

Bien, quizá esta sea otra de las lecciones a aprender de la serie. No existe la magia. No existe House. House en realidad es un actor inglés que se llama Hugh Laurie y acabó odiando su personaje y padeciendo secuelas físicas.

No puedes confiar en la ocurrencia genial de última hora. Sólo el Chamán te dirá que el éxito en el proceso de innovación depende del Chamán. En realidad, el éxito de proceso está en manos del equipo.

El software es como un toro, ¿no?

En el año 2001 tuve la suerte de conocer a una persona que trabajaba en uno de los mayores fabricantes de software del mundo. Cuando me dió su tarjeta de visita, no pude sino observar estupefacto su título: era Evangelista Técnico. Me quedé siberet. Yo era un miserable Analista Programador, y eso de ser Evangelista me parecía lo más de lo más.

Con la edad, he llegado a asumir como algo normal la existencia de toda clase de Evangelistas; no en vano, el mundo de la informática está lleno de parábolas que intentan explicar, hacer ver, abrir los ojos, o simplemente, adoctrinar, qué es o qué deja de ser un proyecto de desarrollo de software. La mayoría de las veces, se usan para que alguien que paga por un sistema entienda que va a tener un retraso en un proyecto, un aumento del precio, la imposibilidad de lograr ciertos resultados, o todas ellas.

Software es como un toro

«En peores plazas hemos toreao»

Así que, iluminado por el trabajo ingente de Antii Aarne y Stith Thomson, me embarco en la romántica tarea de recopilar fábulas y folclore tradicional de los que vivimos en el mundo de la programación. Si conoces alguna analogía que no esté aquí recogida, estaré encantado de añadirla 🙂

Las Parábolas del Software

Lo que pasa es que el tema de las metáforas sobre el desarrollo de software tienen un riesgo inherente, ya lo decía Martin Fowler en el 2004. Utilizar esta clase de paralelismos puede no ser la mejor forma de responder a las inquietudes o problemas de la persona que está pagando por tu trabajo. Sobre todo si tu argumento se apoya en un concepto que la otra persona puede contra-argumentar, lo que en la práctica supone que has trasladado un problema a un dominio semántico diferente, en el que quizá no seas experto o no te sientas tan cómodo.

  • «9 mujeres no hacen un niño en 1 mes». Porque llega un momento en que por mucho que se añada gente a un equipo, la capacidad de reducir los plazos paralelizando el trabajo no es infinita. Sin embargo, tener un hijo es una tarea que por definición sólo puede hacer una persona y tiende a tardar en torno a 40-42 semanas. Por desgracia, lo normal es que tu proyecto de software incluya tareas que se pueden paralelizar hasta cierto límite y bajo ciertas consideraciones; y eso es exactamente lo que espera la persona que te paga por hacerlo: que seas capaz de organizar el trabajo de tu equipo dentro de ese límite.
  • «Desarrollar software es como construir una casa: necesita unos cimientos sólidos para no derrumbarse». Por eso, antes de poner las cortinas en las ventanas hay que levantar las paredes. Muy bonito, si no fuera porque el proceso de hacer los cimientos de una casa está sujeto leyes físicas, como cálculos de cargas o resistencia de materiales, profundidad, disposiciones, drenajes… Y sobre todo, donde hay normativas que cumplir. Nada de esto aplica a tu proyecto de software, la solidez de los cimientos de tu arquitectura en general depende de la persona que la diseña, y de su experiencia. Aunque hay patrones más o menos estándar, cada empresa de software construye los cimientos de sus proyectos a su manera, y la persona que los paga tiene que tener la certeza de que se están haciendo de manera correcta.
  • «Si quieres mover el baño 5cm, hay que tirar las paredes y romper los azulejos». Es una metáfora especialmente útil en aquellas situaciones en que si se hubieran pensando las cosas desde el principio, no habría que deshacer el trabajo. Nos lo recuerda habitualmente José Luis Vallejo, que además de ser mi CEO, es una de las pocas personas que conozco que ha lanzado una startup y se la ha vendido a Amazon. Sin embargo, a veces un cliente no quiere mover el baño, sólo quiere cambiar el modelo del sanitario, y para eso no hace falta picar el suelo ni romper los azulejos. Si lo haces, entonces tienes un problema.
  • «No puedes tener un Ferrari GTO al precio de un SEAT Panda». Usado para expresar que hay una relación entre calidad, potencia, rendimiento, diseño… y el precio que se ha de pagar por ello. Esta metáfora parte de la base de que una persona no sabe distinguir lo que es un Ferrari GTO de lo que es un SEAT Panda; cuando muchas veces lo único que quieren es un SEAT Panda con un motor preparado, faros tipo rally en la parrilla y unas llantas molonas.
SEAT Panda Carlos Sainz

Ojito con el Panda de Carlos Sainz (Imagen de brb83 en Slot Adictos)

  • «Esto tiene que hacerlo un experto, igual que no vas al dentista para que te opere de la cadera». No todas las personas son capaces de solucionar los mismos problemas, y con las mismas garantías. Lo que pasa es que tanto dentistas como cirujanos tienen una formación, una titulación y un Colegio que les habilita para hacer su profesión, de manera que cualquier persona puede comprobar su capacitación para esa intervención. Esto obviamente no ocurre en el mundo del software, donde muchas veces la única prueba que tiene el cliente de la capacitación del profesional proviene de su confianza en la empresa para la que trabaja.
  • «Para hacer unos huevos con bacon, la gallina se involucra, pero el cerdo se compromete» Usado durante muchos años para diferenciar el rol de las personas que son responsables del resultado del proyecto (Product Owner, Scrum Master y Equipo de Desarrollo) y los que están informados, opinan, o lo pagan. Por cierto, hace casi 5 años esta analogía desapareció de la guía Scrum, pero hay gente a la que le gusta mantenerla.
  • «No me pagas por apretar un tornillo, sino por saber qué tornillo hay que apretar». Es decir, no se juzga la tarea por la complejidad relativa a ojos de quién la observa, sino por el conocimiento que tuvo que adquirir el que la realiza. Esta es muy buena, y difícil de rebatir. En todo caso, diría que el problema muchas veces está en cuánto tiempo tarda un experto en encontrar el tornillo que hay que apretar, o que lo haga a través de un proceso de prueba y error que mine su credibilidad.
  • «Un proyecto de software es como subir al Everest: sabes de dónde sales, dónde quieres llegar y el camino que vas a seguir, crees que llevas todas las provisiones que necesitas y todos los días rezas por que no empeore el tiempo» Una metáfora útil para explicar que por muy experto que uno sea, hay circunstancias que escapan a nuestro control y que pueden hacer que todo acabe en tragedia. Esta también es buena. Sin embargo, puede volverse en tu contra si tú asumiste la responsabilidad planificar la expedición para llevar al equipo a la cumbre y ahora estás perdido en medio de la ventisca y se te ha olvidado coger el teléfono con enlace satélite.
  • «Programar es como conducir en mitad de un atasco, puedes ver lo que pasa a tu alrededor y tomar pequeñas decisiones, pero cambiar de carril no hará que el atasco termine antes» Útil para explicar que el ciclo de desarrollo es el que es, y llega un momento en que no puede acelerarse. Aquí lo que diría es que hay personas que no están dispuestas a comerse el atasco, y por eso sacan el Google Maps o el Waze antes de salir y coger una ruta más óptima, o que planifican su viaje para irse el día antes de la Operación Salida del Puente de Mayo.
  • «Un proyecto de software es como jugar con un Lego: puedes hacer una casa o un coche encajando las piezas que hayas comprado» Esta analogía que me sugería Luis Sánchez incluye además que hay es necesario un diseño preliminar tanto de la construcción como de las piezas, y que puede que no todas las piezas que tengas las necesites, ni que hayas comprado todas las que necesitas. Lo que está claro es que si el cliente quería hacer el coche, tienes que haber cogido ruedas.
  • «Cuando haces un jardín tienes una idea de cómo va a ser antes de plantarlo, aunque los detalles emergen después». Una idea de Félix Menéndez, que nos hace pensar que no sabes exactamente si debajo de la tierra habrá piedras, ni qué clase de insectos vas a encontrar, pero en cualquier caso, si no cuidas tu jardín seguramente las flores se sequen, y acabe todo lleno de malas hierbas. Interesante analogía, en este caso yo diría que es responsabilidad del jardinero haber elegido qué semillas tenía que plantar conociendo su ciclo de floración, cuándo había que regar, etc.
  • «Un proyecto de software es como hacer un pastel: necesitas una receta, reunir los ingredientes adecuados, seguir las instrucciones y respetar los tiempos de horneado» Esta idea foodie me la sugiere Daniel González, muy apropiada porque en la oficina echamos de menos las tartas que traía (a él también le echamos de menos) En este caso, es responsabilidad del cocinero haber comprado el producto en el Club del Gourmet o en los chinos. También diría que en el caso del software a medida, es el cocinero el que se ha inventado la receta, y que seguir la receta de un tercero no siempre es suficiente.
Pesadilla en la Cocina

Loca academia de cocineros

  • «Construir software es como levantar una Catedral: una combinación de arte y ciencia». Los que hemos leído «Los Pilares de la Tierra» nos sobrecogemos pensando en proyectos de 30 años y los malvados Hamleigh cuando Victor Sánchez utiliza esta metáfora. Tiene una derivada, y es que a veces las personas que están picando las piedras se olvidan de que su propósito es construir una catedral. Lo malo de construir catedrales es que a veces te coge a medio camino el cambio del románico al gótico.
  • «Desarrollar software a medida es como resolver un puzzle cuyas piezas tú mismo estás construyendo» Esta analogía es, hasta donde yo se, de mi propia cosecha. No recuerdo haberla leído, y estoy seguro de usarla desde el año 2008. Si estás resolviendo un puzzle y cambia la imagen de la referencia, seguramente las piezas que has construido ya no te sirvan. Como es mi propia analogía dejaré que seáis vosotros los que hagáis la contra-argumentación 🙂

¿Conoces más metáforas? Estoy ansioso por incorporarlas.