Qué es la deuda técnica explicada para founders
La deuda técnica no es mala por definición, como la deuda financiera no es mala por definición. El problema es no saber que la estás tomando ni cuánto te va a costar pagarla.
Leer artículo →Criterios prácticos para decidir entre seguir mejorando un producto digital existente o empezar de cero: cuándo la reconstrucción es la decisión correcta y cuándo es un error costoso.
Hay una conversación que aparece en algún momento en casi toda empresa que desarrolla software propio. Empieza con una frustración: agregar una funcionalidad que debería ser simple lleva semanas, cada corrección de un error genera dos errores nuevos, y el equipo técnico insiste en que el problema no es lo que están construyendo ahora, sino la base sobre la que están construyendo. La conversación termina inevitablemente con la misma pregunta: ¿y si lo reconstruimos desde cero?
Es una pregunta peligrosa. Reconstruir un producto digital es una de las decisiones más caras, más largas y con mayor tasa de fracaso en la industria del software. Pero también es, en ciertos contextos, la única decisión racional. El problema no es la reconstrucción en sí: es que muchas empresas la emprenden por las razones equivocadas, en el momento equivocado, y sin entender el costo real de lo que están decidiendo.
Este artículo presenta los criterios para evaluar si conviene reconstruir un producto digital o seguir mejorándolo de forma incremental, sin tecnicismos y con ejemplos concretos.
Antes de analizar cuándo conviene reconstruir, hay que entender por qué tantas reconstrucciones fracasan. El patrón es sorprendentemente consistente entre empresas de distintos tamaños e industrias:
La promesa implícita de toda reconstrucción es que el nuevo sistema va a ser ordenado, mantenible y libre de los problemas del anterior. Pero el nuevo sistema lo construye el mismo equipo —o uno similar—, bajo las mismas presiones de negocio, y con la misma tendencia a tomar atajos cuando los plazos aprietan. La base limpia no dura más que los primeros meses de desarrollo; después, el nuevo sistema empieza a acumular su propia deuda técnica.
A pesar de los riesgos, hay situaciones en las que reconstruir es la opción más sensata. No porque sea fácil ni barato, sino porque el costo de no hacerlo es mayor.
Si tu producto está construido sobre una tecnología que ya no tiene mantenimiento activo, no hay actualizaciones de seguridad disponibles, y cada vez es más difícil encontrar desarrolladores que quieran trabajar con ella, reconstruir no es una opción: es una cuestión de tiempo hasta que se vuelva obligatorio. La diferencia entre hacerlo planificadamente y hacerlo contra reloj porque algo se rompió es enorme en términos de costo y de riesgo.
Un caso típico: aplicaciones construidas hace diez o quince años sobre versiones de lenguajes o frameworks que ya no reciben parches de seguridad. Mientras funcionen, la tentación de no tocarlas es alta. Pero el día que dejan de funcionar —por una actualización del sistema operativo, por un cambio en una API externa de la que dependen—, el costo de la reconstrucción de emergencia es varias veces mayor que el de una migración planificada.
Hay un umbral en el que modificar el sistema existente es más caro que construir uno nuevo. Ese umbral no es fijo: depende de la frecuencia de cambios, de la complejidad de lo que se quiere agregar y de qué tan frágil se volvió el código actual.
Una forma de medirlo: si las estimaciones del equipo para funcionalidades nuevas son consistentemente el doble o el triple de lo que serían en un sistema bien diseñado, y esa diferencia se mantiene durante varios meses, la reconstrucción empieza a ser económicamente justificable. No porque sea barata —no lo es—, sino porque el sobrecosto de construir sobre la base actual, acumulado en el tiempo, termina siendo mayor que el costo de la reconstrucción.
No es lo mismo reconstruir porque el código es un desastre que reconstruir porque el producto cambió de forma tan radical que la arquitectura original ya no tiene sentido. Si tu producto empezó como una herramienta interna para diez usuarios y ahora es una plataforma que usan diez mil clientes, el problema no es solo deuda técnica: es que la arquitectura fue diseñada para un problema distinto.
En estos casos, la reconstrucción no es un reemplazo uno a uno de lo que ya existe: es la construcción de un producto nuevo que hace cosas similares pero está diseñado para la escala, la audiencia y los requerimientos actuales. Es una decisión de producto, no solo técnica.
Antes de decidir reconstruir, preguntale a tu equipo: "si hoy tuviéramos que construir este producto para un cliente nuevo, ¿haríamos algo distinto? ¿Qué exactamente?" Si la respuesta incluye cambios estructurales —no solo cosméticos o de orden— que son imposibles de implementar sobre la base actual, la reconstrucción es una opción a evaluar seriamente. Si la respuesta es "el producto está bien, solo hay que ordenar el código", probablemente alcance con una refactorización progresiva.
Hay escenarios en los que reconstruir es directamente una mala decisión, por más que el equipo técnico insista.
Si tu producto está funcionando, tiene usuarios que dependen de él, y está generando ingresos, una reconstrucción total implica detener —o al menos ralentizar drásticamente— la entrega de valor a esos usuarios durante meses o años. Mientras reconstruís, tu competencia sigue avanzando y tus usuarios siguen esperando mejoras que no llegan.
En este escenario, la alternativa correcta suele ser la mejora incremental: identificar las partes del sistema que más problemas generan y reescribirlas de a una, sin detener el resto. Lleva más tiempo que una reconstrucción total —en meses calendario—, pero no frena el negocio mientras tanto.
Muchas veces lo que el equipo describe como "el sistema está mal construido" es en realidad "dos o tres módulos están mal construidos". Reconstruir todo porque el módulo de facturación es un desorden es como demoler una casa porque la cocina necesita una reforma.
Antes de aprobar una reconstrucción total, pedí un mapa de qué partes del sistema están generando los problemas actuales y cuáles funcionan razonablemente bien. Si el ochenta por ciento del sistema es aceptable y el veinte por ciento concentra los dolores, la respuesta no es reconstruir todo: es reconstruir ese veinte por ciento, manteniendo el resto.
Los sistemas que llevan años en producción acumulan reglas de negocio, casos especiales y comportamientos que no están documentados en ninguna parte. Fueron agregados a lo largo del tiempo para resolver problemas específicos de clientes específicos, y el equipo actual no necesariamente los conoce todos.
Reconstruir sin antes entender qué hace realmente el sistema actual —no lo que se supone que debería hacer, sino lo que efectivamente hace— es garantía de que el nuevo sistema va a romper cosas que los usuarios daban por sentadas. Esas cosas pueden parecer menores —un ordenamiento de una tabla, un filtro automático, una validación que evita errores— pero para los usuarios que dependen de ellas, su ausencia es un retroceso.
La decisión de reconstruir o no es, en última instancia, una decisión de negocio. El equipo técnico puede dimensionar el problema y estimar el esfuerzo, pero la evaluación de si conviene o no debería hacerse con criterios que cualquier empresario o gerente puede aplicar:
Costo total estimado de la reconstrucción versus costo de mantenerse como está. Incluí en el costo de mantenerse no solo las horas de desarrollo, sino el lucro cesante: ¿cuánto estás dejando de ganar porque no podés sacar funcionalidades nuevas a la velocidad que el mercado requiere?
Tiempo hasta que la reconstrucción empiece a dar resultados. Si la reconstrucción va a tardar un año en entregar algo usable y mientras tanto el negocio no puede detenerse, la pregunta no es solo "¿conviene reconstruir?" sino "¿podemos darnos el lujo de hacerlo?".
Riesgo de que la reconstrucción no cumpla con lo prometido. La historia de la industria está llena de reconstrucciones que terminaron costando el triple, tardando el doble, y entregando la mitad de lo planeado. Si tu empresa no puede absorber ese escenario —porque depende del producto para operar o porque el presupuesto no tiene margen—, la reconstrucción total no es una opción.
Oportunidad de negocio que se pierde mientras tanto. Cada mes que el equipo dedica a reconstruir es un mes que no dedica a construir cosas que tus clientes necesitan ahora. En mercados competitivos, ese costo de oportunidad puede ser mucho mayor que el costo técnico de la reconstrucción.
Entre "no hacer nada" y "reconstruir todo" hay un espectro de opciones que muchas veces se ignoran en la conversación:
El artículo sobre qué es la deuda técnica para founders explica en detalle cómo la deuda técnica —que suele ser la razón por la que se pide una reconstrucción— se puede gestionar sin necesidad de empezar de cero. Y el artículo sobre señales de que tu arquitectura necesita una revisión ayuda a distinguir entre un sistema que necesita ajustes y uno que efectivamente requiere una intervención mayor.
Reconstruir un producto digital es como una cirugía mayor: a veces es necesaria para salvar al paciente, pero nunca debería ser la primera opción. Antes de decidir, asegurate de haber explorado las alternativas menos invasivas. Si después de esa exploración la conclusión sigue siendo que hay que reconstruir, al menos vas a haber tomado la decisión con los ojos abiertos.
¿Quieres evaluar cómo aplicar esto a tu proyecto?
Cuéntanos tu caso →