Ingeniería · Producción · Sistemas Legacy

Cómo Hacerse Cargo de un Código de Producción Desconocido

Hacerse cargo de un sistema existente en producción es distinto de empezar un proyecto nuevo. El primer trabajo no es mejorar la arquitectura. Es entender lo que ya existe lo suficiente como para operarlo con seguridad, recuperar la capacidad de desplegar y hacer cambios sin romper supuestos que todavía no descubriste.

El primer entregable es un mapa del sistema

Antes de cambiar código quiero saber qué hace funcionar realmente al producto: repositorios, runtimes, bases de datos, CMS, colas, proveedores de pago, DNS, storage, jobs programados, APIs externas y caminos de despliegue.

Ese mapa no tiene que ser perfecto. Tiene que ser suficientemente preciso para responder una pregunta básica: si este componente falla o cambia, ¿qué más depende de él?

browser
  -> frontend
  -> API
  -> database

API
  -> CMS
  -> commerce
  -> payments
  -> email / marketing

deploy
  -> hosting
  -> environment variables
  -> DNS

Lograr que el sistema sea desplegable antes de hacerlo elegante

Un código que no puede reproducirse o desplegarse de forma segura ya tiene riesgo operativo. Priorizo lograr que la versión actual corra en un entorno conocido antes de intentar mejoras estructurales.

Eso implica identificar comandos de build, versiones de runtime, variables de entorno, credenciales externas, conectividad de base de datos y el camino real de despliegue a producción. El objetivo es volver observable y repetible al sistema existente antes de modificar su comportamiento.

Separar hechos de supuestos

Los handoffs suelen venir con documentación incompleta y conocimiento informal. Trato cada supuesto como algo a verificar: qué repositorio es el autoritativo, cuál entorno es producción, qué servicio es dueño de la base, si un webhook sigue activo o si una integración realmente se usa.

Leer código es sólo una fuente de verdad. La configuración de despliegue, DNS, logs, paneles de proveedores, esquemas de base y comportamiento de red suelen mostrar relaciones que no aparecen en la documentación.

Seguir un request real de punta a punta

Una forma útil de aprender un sistema desconocido es elegir un flujo importante y seguirlo a través de todas las capas. En una plataforma de e-commerce puede ser página de producto, carrito, checkout, confirmación de pago, persistencia de la orden y notificación al cliente.

Eso revela rápidamente los límites: dónde vive el estado, qué servicio es autoritativo, qué ocurre de forma síncrona, qué depende de webhooks y dónde un error puede dejar el sistema parcialmente actualizado.

Encontrar las operaciones irreversibles

No todas las partes de un sistema tienen el mismo riesgo. Enviar un email dos veces es molesto; cobrar una tarjeta dos veces es mucho peor. Borrar datos, cambiar autenticación, modificar esquemas de producción y disparar efectos externos requieren más cuidado.

Identifico esas operaciones temprano y busco idempotencia, restricciones únicas, registros de auditoría, caminos de rollback y separación de ambientes antes de tocar el código que las rodea.

Recuperar observabilidad antes de depurar por intuición

Si un sistema es difícil de entender, sumar más suposiciones lo empeora. Logs, request IDs, metadata de respuestas externas y límites claros de error reducen la cantidad de razonamiento que depende de evidencia incompleta.

Quiero poder distinguir si una falla viene del código, de infraestructura, de la base, de DNS o de un servicio externo. Cuanto más rápido se separan esas capas, más seguros son los cambios posteriores.

Cambiar un límite por vez

Los rewrites grandes son especialmente peligrosos durante un handoff porque el comportamiento no documentado es justamente lo que todavía no conocés. Prefiero cambios pequeños que aíslen un límite y produzcan evidencia.

Por ejemplo: primero reproducir el frontend, luego establecer conectividad con la API, validar la base y después reconectar CMS, comercio, pagos e integraciones de marketing. Cada límite confirmado reduce la incertidumbre del siguiente.

La infraestructura también es parte de la aplicación

En un handoff de producción recibí repositorios existentes de frontend y backend y tuve que establecer el entorno necesario para operarlos bajo un nuevo equipo. Ese trabajo atravesó Vercel, DigitalOcean, Supabase, Contentful, Medusa, Authorize.net y Klaviyo.

La lección importante es que hacerse cargo no terminó en el código. DNS, hosting, configuración de entorno, servicios de datos, flujos de pago e integraciones externas eran parte del sistema que había que entender y dejar operativo.

Documentar decisiones mientras el contexto está fresco

El mejor momento para mejorar documentación es mientras estás descubriendo el sistema. Registro ownership de servicios, caminos de deploy, variables necesarias, propósito de cada integración, modos de falla conocidos y decisiones que de otro modo volverían a convertirse en conocimiento informal.

La documentación debería ayudar a la próxima persona a responder preguntas operativas, no solamente describir la estructura de carpetas.

Ganarse el derecho a refactorizar

Cuando el sistema puede construirse, desplegarse, observarse y recuperarse, los cambios de arquitectura se vuelven mucho más seguros. Recién entonces el refactor se apoya en evidencia: incidentes repetidos, lógica duplicada, integraciones frágiles o cuellos de botella operativos.

El objetivo de un handoff no es demostrar que la arquitectura anterior estaba equivocada. Es hacerse responsable del software suficientemente rápido como para poder mejorarlo sin convertir producción en el ambiente de prueba.

La mentalidad de ownership

Hacerse cargo significa poder explicar cómo se comporta el sistema, desplegarlo de forma intencional, diagnosticar fallas entre distintas capas y hacer cambios con un radio de impacto conocido.

Esa habilidad se transfiere entre lenguajes y frameworks. El código importa, pero el trabajo de ingeniería más profundo es reducir incertidumbre hasta que el sistema se convierte en algo que podés operar con seguridad y no en algo que da miedo tocar.

Trabajo relacionado

Ver el trabajo de handoff de plataforma en CBD Pros USA

Artículos técnicos relacionados