Software Empresarial/6 min de lectura

Las integraciones no son funcionalidades

Cada proveedor tiene una diapositiva que muestra a qué sistemas se conectan. Esa diapositiva es donde la honestidad va a morir.

En algún punto de casi todos los ciclos de ventas de software empresarial, aparece una diapositiva. Muestra logotipos. SAP. Salesforce. NetSuite. Shopify. QuickBooks. Filas de íconos familiares dispuestos en una cuadrícula, a veces conectados por líneas finas a un logotipo central en el medio. El mensaje implícito es claro: este producto habla el mismo idioma que todo lo demás que usted ya utiliza.

Esa diapositiva es una de las cosas más engañosas en las ventas de software, y todos en ambos lados de la mesa lo saben en silencio.

Lo que realmente es una integración

Cuando una presentación de ventas dice "se integra con SAP", lo que normalmente significa es una de tres cosas. Primero, hay un conector construido por un tercero que mueve datos en una dirección, de forma programada, con un archivo de mapeo que fue modificado por última vez en 2021. Segundo, hay un flujo de trabajo en Zapier que alguien configuró durante el período de prueba y que se ha estado ejecutando sin monitoreo desde entonces. Tercero, hay un webhook que se dispara en un tipo de evento específico, que fue lo único por lo que preguntó el prospecto durante la demo.

Lo que casi nunca significa es: existe un contrato de datos bidireccional, versionado y mantenido entre estos dos sistemas, con error handling, retry logic, validación de schema, monitoreo, alertas y un responsable designado dentro de la organización del proveedor que se hace cargo cuando las cosas se rompen.

La brecha entre esas dos descripciones es donde la mayoría de las implementaciones de software empresarial salen mal.

El modo de falla del que nadie habla

Las funcionalidades fallan de manera ruidosa. Si un botón deja de funcionar, los usuarios se dan cuenta de inmediato. Se abren tickets de soporte. Alguien contacta a un ingeniero. La falla es visible, fechable y atribuible.

Las integraciones fallan de manera silenciosa. Una versión de la API es marcada como deprecated en el upstream. Un token de autenticación expira y es rechazado silenciosamente. Un campo que solía contener un valor numérico comienza a llegar como un string, y el parser del sistema receptor lo maneja almacenando un cero. Se alcanza un rate limit a las 2 AM durante un batch sync, se omiten algunos registros y el trabajo finaliza con un estado de "success".

Los datos son incorrectos. Nadie lo sabe. El ERP muestra un recuento de inventario; el sistema de gestión de almacenes muestra otro. Se extrae un reporte el jueves. Los números no coinciden con lo que se espera, pero son lo suficientemente plausibles como para que la discrepancia se atribuya a diferencias de tiempo. Toma tres semanas y un ejercicio de conciliación manual establecer que la integración ha estado perdiendo registros silenciosamente durante seis semanas.

Esto no es hipotético. Es una descripción de algo que sucede constantemente, en empresas de todos los tamaños, en todas las categorías de software empresarial.

El vacío de responsabilidad

El problema más profundo no es técnico. Es organizacional.

Cuando una funcionalidad se rompe, hay un product manager responsable de ella, un equipo de ingeniería a cargo y un elemento en el roadmap que le da seguimiento. Cuando una integración se rompe, a menudo no vive en el backlog de nadie. Fue construida por un consultor durante la implementación. El consultor ya no está. El equipo de soporte del proveedor dice que el conector es un componente de terceros. El mantenedor del componente de terceros dice que el problema está en la API upstream. La documentación de la API upstream se actualizó por última vez cuando la versión anterior era la actual.

Las integraciones son infraestructura. No son funcionalidades. No pertenecen a un product roadmap junto a "agregar dark mode". Pertenecen junto a "mantener la base de datos funcionando" — esenciales, invisibles, poco glamorosas y catastróficas cuando se descuidan.

Las empresas que han entendido esto tratan cada dependencia de datos externos como una preocupación de ingeniería de primer nivel. Versionan sus contratos de integración. Escriben tests que se ejecutan contra sistemas externos reales de manera programada. Emiten alertas sobre anomalías en el volumen de datos — porque si un feed que normalmente entrega 4,000 registros por hora de repente entrega 40, algo anda mal, y eso es detectable sin leer los registros en sí. Asignan un responsable. No un equipo — una persona.

Sobre qué preguntar realmente

Al evaluar un software que necesitará intercambiar datos con sus sistemas existentes, la diapositiva de logotipos no es lo que debería mirar. Las preguntas que importan son más contundentes.

¿Qué sucede cuando la conexión se cae? ¿El sistema encola y reintenta? ¿Falla silenciosamente? ¿Alerta a alguien? ¿Existe una ruta de reprocesamiento manual y quién la ejecuta?

¿Quién es el responsable de esta integración dentro de su organización? No "quién la construyó" — ¿quién es el responsable de que sea correcta el próximo año? Si la respuesta es encogerse de hombros, esa es la respuesta honesta, y usted debería tratarla en consecuencia.

¿Cómo se ve un cambio de schema desde su lado? Cuando el sistema upstream cambia un tipo de campo o renombra un endpoint, ¿cómo se entera y cuál es el proceso de actualización? "Lanzamos una nueva versión del conector" no es lo mismo que "le alertamos con 90 días de anticipación, proporcionamos una guía de migración y damos soporte a ambas versiones en paralelo".

¿Puedo ver los error logs? No una demo del happy path — los error logs. Cualquier sistema que haya estado ejecutando integraciones en producción por más de un año tiene error logs. ¿Qué hay en ellos y cómo se resuelven esos errores?

El contrato de datos es la integración

El cambio de mentalidad que realmente ayuda es dejar de pensar en las integraciones como conexiones entre sistemas y comenzar a pensar en ellas como contratos entre productores de datos y consumidores de datos.

Un contrato tiene una versión. Tiene un responsable de cada lado. Especifica no solo el schema sino también la semántica — qué significa este campo, cuáles son los valores válidos, qué sucede si es null. Tiene una test suite. Tiene un proceso para el cambio. Tiene una manera de decirle a la otra parte cuándo ha sido violado.

Construir integraciones como contratos en lugar de conectores requiere más trabajo inicial. Es sustancialmente menos trabajo en un horizonte de tres años. Y es el único enfoque que escala más allá del punto en el que una sola persona puede mantener toda la topología de datos en su cabeza.

La diapositiva de logotipos no va a desaparecer. Pero la próxima vez que la vea, la pregunta que debe hacerse no es "qué logotipos están ahí" — es "¿cuánto vale cada una de esas conexiones cuando algo sale mal a las 2 AM de un lunes?"

Esa respuesta es la integración. Todo lo demás es marketing.

Mikael Koskinen Guru Meditation