Cómo implementar un framework de gestión de deuda técnica con priorización automatizada y sprints de refactorización planificados en tu startup
Tu equipo tarda ahora tres días en cambiar lo que hace un año tomaba tres horas. Nadie lo ha dicho en alto, pero la sensación está ahí: cada feature nueva pisa minas, cada despliegue trae un susto, cada incorporación pregunta lo mismo en standup ("¿por qué este módulo está así?").
Eso es deuda técnica funcionando como un impuesto invisible. Y como cualquier impuesto, si no la mides, te la cobran igual.
La buena noticia es que no necesitas parar dos meses para refactorizar la base de código. Necesitas un sistema que la trate como lo que es: un pasivo de la empresa con intereses, vencimientos y decisiones de pago.
Por qué la deuda técnica no se elimina, se gestiona
Ward Cunningham acuñó la metáfora en 1992 y la analogía aguanta porque es exacta. Tomar atajos para llegar antes al mercado es racional. El problema no es el atajo, es no apuntar dónde lo tomaste y no volver a pagar el principal.
Conviene separar al menos cuatro tipos antes de empezar a priorizar nada:
- Deuda deliberada y prudente: sabíais lo que hacíais, está documentado, hay un plan para pagarlo.
- Deuda deliberada e imprudente: "lo arreglamos luego" sin definir luego.
- Deuda involuntaria prudente: el equipo ha aprendido y rehará lo viejo cuando toque.
- Deuda involuntaria imprudente: nadie sabe que el código está mal porque nunca se ha mirado.
Las cuatro pesan distinto. Tu framework tiene que distinguirlas o acabarás priorizando por la voz más alta del Slack.
Paso 1: monta un inventario único antes de tocar nada
No puedes gestionar lo que no se ve. Y si la deuda vive en la cabeza del backend senior, en una libreta del CTO y en tres hilos de Notion, no existe como pasivo.
Lo que debe registrar cada entrada
Sin esto, el inventario es ruido:
- Qué falla y dónde: ruta del archivo, módulo, servicio. Nada de "el sistema de pagos en general".
- Coste cada vez que tocas la zona: estimación en horas o porcentaje de overhead respecto a una zona sana.
- Riesgo operativo: probabilidad de que esto reviente en producción multiplicada por el impacto si lo hace.
- Esfuerzo de pago: días-persona honestos, no optimistas.
- Dependencias: qué otras piezas tocas si arreglas esta.
- Quién y cuándo: autor y fecha para tener contexto cuando lo revises seis meses después.
Dónde vive el inventario
Si ya usas Jira, Linear o Shortcut, crea un tipo de tarea "Tech Debt" dentro de la misma herramienta. Resiste la tentación de montar una base de datos paralela en Notion: lo que vive aparte se ignora aparte.
El registro tiene que costar menos de dos minutos. Si registrar deuda es más caro que ignorarla, nadie registra nada.
Paso 2: priorización automatizada, no asambleas mensuales
Decidir a mano qué deuda toca esta semana consume tiempo de gente cara y arrastra sesgos. El staff engineer prioriza lo que le toca a él. El CTO prioriza lo último que ha leído en Hacker News. Nadie prioriza lo que más frena al equipo en conjunto, porque nadie ve el conjunto.
RICE adaptado a deuda técnica
El framework RICE funciona bien aquí con un par de ajustes:
- Reach: número de desarrolladores o features que tocan esta zona en un mes. Sale de mirar el log de Git, no de pedir opiniones.
- Impact: combinación de ralentización medida y riesgo operativo, en escala de 1 a 5. Un 5 es "bloquea releases o causa incidentes recurrentes".
- Confidence: cuánto te fías de los dos números anteriores. Si vienen de datos, alto. Si vienen del olfato, bajo y registrado como bajo.
- Effort: días-persona estimados con honestidad, incluyendo testing y despliegue.
Puntuación = (Reach x Impact x Confidence) / Effort. Atacas de mayor a menor.
Cómo automatizarlo de verdad
La diferencia entre un framework que se usa y uno que muere a los tres meses es de dónde salen los números. Si los rellena un humano cada vez, está muerto.
Conecta tres fuentes:
- Tu repositorio Git: frecuencia de cambios por archivo y módulo te da el Reach.
- Tu sistema de incidencias: cruzas tickets con zonas de código y obtienes riesgo operativo objetivo.
- Tus métricas de DORA o tiempo de ciclo: comparas zonas con y sin deuda para cuantificar el Impact.
SonarQube, CodeClimate o CodeScene hacen parte del trabajo si tienes presupuesto. Si no, un script de cien líneas que tira de la API de Git y de Jira cubre el 80% del valor.
Lo importante no es la herramienta, es que la puntuación se recalcule sola cada semana. Una priorización congelada en febrero ya no sirve en mayo.
Paso 3: capacidad reservada, no buenas intenciones
Tener el inventario priorizado sin reservar tiempo para pagarlo es como saber exactamente cuánto debes a Hacienda y no transferir. Sentido decorativo.
Opción A: porcentaje fijo por sprint
Reserva entre el 15% y el 20% de la capacidad de cada sprint para deuda técnica. Funciona bien para piezas pequeñas y medianas que se atacan en paralelo con producto.
La regla innegociable: ese porcentaje no se canjea por features porque "esta semana hay presión". Si lo canjeas una vez, lo canjearás siempre, y el equipo dejará de registrar deuda porque ha aprendido que no se paga.
Opción B: sprints dedicados cada seis u ocho semanas
Una semana o dos donde todo el equipo se centra en deuda. Va bien para cosas que requieren cambios transversales: migrar de una base de datos a otra, subir de versión mayor de framework, partir un monolito.
Estos trabajos no entran en el porcentaje fijo porque generan conflictos de merge constantes con el desarrollo paralelo. Es más barato detenerse, hacerlos y seguir que intentar coserlos en paralelo.
Cómo combinarlas
La mayoría de startups que veo funcionar bien hacen las dos. Porcentaje fijo continuo para el goteo diario, sprint dedicado trimestral para los proyectos grandes. El inventario priorizado te dice qué va a cada sitio: alto impacto y bajo esfuerzo al goteo; alto impacto y alto esfuerzo al sprint dedicado.
Paso 4: meter el framework en la cultura, no en un Confluence
Un proceso que solo vive en documentación muere al primer cambio de prioridades comerciales. Para que sobreviva tiene que estar en los rituales del equipo.
Rituales que sostienen el sistema
- Pregunta obligatoria en code review: "¿Este PR introduce o descubre deuda que debamos registrar?". Checkbox en la plantilla. Tarda diez segundos.
- Treinta minutos al mes de revisión del inventario: cerrar lo resuelto, actualizar estimaciones que han envejecido, reclasificar lo que ha cambiado de peso.
- Una retro trimestral dedicada solo a deuda: gráficas de tendencia, qué se pagó, qué se acumuló, qué duele más ahora que hace tres meses.
- Dashboard compartido con producto: cuando el PM ve que el tiempo de ciclo del módulo de checkout es el doble que el del resto, deja de pelearte por el porcentaje del 20%.
Métricas que vigilas todos los meses
Cuatro bastan: ratio de deuda creada frente a resuelta, tiempo de ciclo medio del equipo, número de incidentes asociados a zonas con deuda registrada, y una encuesta breve al equipo sobre fricción percibida. Si el ratio creada/resuelta es mayor que uno tres meses seguidos, el framework necesita ajuste, no más reuniones.
Esto es cómo implementar un framework de gestión de deuda técnica con priorización automatizada y sprints de refactorización planificados en tu startup sin convertir el proceso en otra carga burocrática: inventario único, puntuación automática, capacidad reservada y métricas honestas.
Los errores que ves una y otra vez
Llevo tiempo viendo a startups intentar esto y tropezar siempre con los mismos cuatro escollos:
- Sobreingeniería del propio framework. Si el proceso de registrar y priorizar consume más tiempo que la refactorización, has reinventado el problema. Empieza con una hoja de cálculo si hace falta.
- Cero respaldo desde dirección. Si el CEO o el CTO no protegen el porcentaje cuando hay presión, el mensaje implícito es que no es prioridad. El equipo lo lee perfectamente.
- Todo es urgente. Si cada elemento del inventario está marcado como crítico, no hay priorización, hay ansiedad. Confía en la fórmula y deja cosas en el backlog meses. Es lo correcto.
- No medir el después. Si no demuestras con datos que el sprint dedicado bajó el tiempo de ciclo un 22% o redujo incidentes a la mitad, perderás el apoyo al siguiente trimestre.
Cuándo pedir ayuda externa
Hay tres situaciones donde merece la pena traer a alguien de fuera: el equipo fundador no ha gestionado código a escala antes, la deuda ya está saliendo a la luz en forma de quejas de clientes, o llevas dos intentos de montar esto y los dos se han caído al tercer mes.
En Tangram Consulting trabajamos con equipos técnicos de startups montando exactamente este tipo de procesos: inventario, modelo de priorización, integración en la cadencia de sprints y métricas para defenderlo ante el resto del comité. Si tu equipo dedica más tiempo a apagar fuegos que a construir, agenda una conversación con nuestro equipo para diseñar un plan adaptado a tu situación.
Lo que separa a las que escalan de las que se ahogan
La deuda técnica no es un proyecto que se acaba. Es un pasivo permanente del software que cambia. Las startups que escalan no son las que tienen código perfecto, son las que decidieron tratar la deuda como una métrica de negocio y no como un secreto del equipo de ingeniería.
Inventario único, priorización con datos, capacidad reservada e iteración mensual. Cuatro piezas, ninguna heroica. Lo difícil no es entenderlas, es mantenerlas vivas el cuarto trimestre, cuando hay presión comercial y la tentación es canjear el 20% por una feature más. Si aguantas ese momento tres veces seguidas, el sistema ya es tuyo.