10.4 Sostener sistemas grandes y de larga vida
Presentación y motivación
La mayoría de los escritos sobre ingeniería de software tratan de construir cosas nuevas. Pero la mayoría del software importante del mundo es viejo, grande, y todavía en ejecución: sistemas tributarios, pagos de beneficios, control de tráfico aéreo, banca central, control industrial, y la infraestructura de la vida diaria. Estos sistemas rutinariamente corren durante diez, veinte, o treinta años. Eso es mucho más largo que la permanencia de cualquiera que los construyó, y a menudo más largo que las empresas y lenguajes que los produjeron. Sostener tales sistemas significa mantenerlos confiables, seguros, comprendidos, y capaces de cambiar, a través de décadas y generaciones de personal. Es una de las disciplinas más difíciles y menos glamorosas del campo, y una donde las grandes empresas y gobiernos cargan el peso más pesado.
¿Por qué esto importa más para las grandes organizaciones? La continuidad de la obligación. Una startup puede reescribir o abandonar su software. Un gobierno nacional no puede dejar de pagar pensiones mientras refactoriza. Las empresas y agencias poseen sistemas cuyo fallo tiene consecuencias medidas en sustento, seguridad, o confianza pública. Y poseen muchos de ellos a la vez, dotados de personal por gente que se une y se va durante décadas. Las amenazas centrales no son exóticas. Son la erosión lenta de la gente que entiende el sistema (factor bus, cuán pocas personas tendrían que irse antes de que se pierda el conocimiento de un sistema), la acumulación de conocimiento no documentado en unas pocas cabezas, la decadencia de la pila tecnológica hacia el fin de vida, y la parálisis que se instala cuando un sistema se vuelve demasiado crítico para tocar y demasiado mal comprendido para cambiar con seguridad.
Este capítulo trata de la administración: el trabajo deliberado y poco glamoroso de ayudar a un sistema a sobrevivir a sus autores con elegancia. Cubre la continuidad de propiedad y la mitigación del factor bus, la obsolescencia y retiro planificados, la transferencia de conocimiento, los desafíos peculiares de los sistemas de décadas de vida, y el acto constante de equilibrio entre innovar y preservar la estabilidad de la que dependen los ciudadanos y clientes.
Principios fundamentales
- Cada sistema crítico necesita un dueño, siempre. La propiedad es una asignación continua, no un recuerdo de quién lo escribió.
- El conocimiento que vive en una cabeza es un riesgo, no un activo. Institucionaliza la comprensión antes de que la persona se vaya.
- Aburrido es una función. Para los sistemas críticos de larga vida, la estabilidad y previsibilidad a menudo superan a la novedad.
- Planifica el final al principio. Cada sistema será retirado o reemplazado; diseña y documenta para ese día.
- El cambio es cómo te mantienes seguro. Un sistema demasiado aterrador para tocar ya está fallando; la capacidad de cambiar es un rasgo de supervivencia.
- La continuidad sobrevive a los individuos. Diseña equipos, documentación, y procesos para que ninguna salida individual sea una crisis.
- La confianza es el producto real. Para los sistemas de cara al ciudadano y al cliente, la fiabilidad y equidad sostenidas con el tiempo son la misión.
Recomendaciones
Establece la administración y la continuidad de propiedad
Asigna propiedad explícita y actual para cada sistema que importa. Sé dueño a nivel de equipo, no a nivel individual, para que la propiedad sobreviva las salidas. Mantén un catálogo de servicios que registre, para cada sistema, quién lo posee, qué hace, de qué depende, y cuán crítico es. Revisa la propiedad regularmente, y nunca dejes que un sistema quede huérfano. Un sistema crítico sin dueño es una emergencia esperando ocurrir. Cuando los equipos se reorganizan, transfiere la propiedad deliberadamente, con un traspaso, no por suposición. Para los sistemas de larga vida más críticos, asegúrate de que la propiedad incluya no solo la operación sino la capacidad de entender y cambiar el sistema, para que la administración no se deteriore en mera niñera.
Mitiga el factor bus y el riesgo de persona clave
Mide y reduce activamente la concentración de conocimiento. Si solo una persona puede desplegar, depurar, o cambiar un sistema, eso es un punto único de fallo tan real como cualquier hardware. Redúcelo a través del emparejamiento y la rotación, la revisión de código obligatoria, la guardia compartida, y una regla deliberada de que ninguna tarea crítica tenga exactamente una persona capaz. Capacita cruzadamente para que al menos dos (preferiblemente tres) personas puedan realizar cada función esencial. Trata la salida de una persona clave como un evento previsible para el que te preparas continuamente, no un shock que absorbes. La documentación ayuda. Pero el conocimiento de trabajo extendido a través de un equipo mediante la práctica real es mucho más duradero que los documentos que nadie ha ejercitado.
Institucionaliza la transferencia de conocimiento
Captura el conocimiento que de otro modo se iría con la gente. Enfócate primero en el conocimiento que es difícil de reconstruir: por qué se tomaron las decisiones, qué alternativas se rechazaron y por qué, dónde están los bordes afilados y los trucos críticos de los que el resto del sistema silenciosamente depende, y cómo se comporta el sistema bajo estrés. Usa registros de decisión de arquitectura para preservar el razonamiento detrás de las elecciones, no solo las elecciones. Mantén los runbooks y la documentación operacional cerca del sistema, y ejercítalos regularmente para que se mantengan verdaderos. Construye rutas de incorporación que lleven a los nuevos administradores a una competencia genuina. Trata las salidas como eventos de transferencia de conocimiento con tiempo de traspaso real. Recuerda que el conocimiento tácito, el sentir por un sistema, se transfiere principalmente haciendo junto a alguien que lo tiene, así que superpón a los administradores salientes y entrantes donde puedas.
Gestiona la obsolescencia, el retiro, y el fin de vida
Planifica los finales deliberadamente. Cuando decidas retirar o reemplazar un sistema, trata el retiro como un proyecto por derecho propio: identifica cada consumidor y dependencia, provee una ruta de migración y un cronograma realista, comunica clara y repetidamente, y apoya a los consumidores a través de la transición. Evita la trampa de ejecutar el sistema antiguo y el nuevo en paralelo para siempre porque nadie hará el trabajo difícil de apagar el antiguo. Asigna responsabilidad explícita para completar el desmantelamiento. Preserva los datos, registros, y la capacidad de responder preguntas sobre el sistema retirado mucho después de que deje de correr, especialmente donde apliquen reglas de retención legal. Un retiro mal hecho deja sistemas zombi que no tienen mantenimiento pero todavía se dependen de ellos: lo peor de todos los mundos.
Sostén los sistemas a través de décadas
Para los sistemas que deben correr durante veinte o treinta años, planifica sobrevivir a todo: el equipo original, los proveedores, el ecosistema del lenguaje, y el hardware. Prefiere los estándares abiertos y las interfaces documentadas sobre las cajas negras propietarias, para que los futuros mantenedores tengan una oportunidad. Modulariza, para que las partes puedan reemplazarse una a la vez en lugar de a través de una reescritura de todo o nada que sea demasiado riesgosa para intentar jamás. Mantén el sistema continuamente mantenido. Un sistema mantenido actual en pasos pequeños se mantiene sostenible. Un sistema congelado «porque funciona» silenciosamente se vuelve inmantenible a medida que su pila envejece fuera del soporte. Mantén también las habilidades para operarlo: para la tecnología genuinamente antigua, capacita deliberadamente a los sucesores en lugar de esperar que el último experto nunca se jubile.
Equilibra la innovación con la estabilidad y la confianza
Distingue las partes de tu patrimonio donde la novedad crea valor de las partes donde la estabilidad es el valor. Los sistemas centrales de los que dependen diariamente los ciudadanos y clientes usualmente premian la fiabilidad, la compatibilidad hacia atrás, y el cambio cauteloso sobre las reescrituras emocionantes. Invierte la innovación en los bordes (nuevos canales, nuevas funciones, nuevas interfaces) mientras mantienes estable y bien comprendido el núcleo duradero. Cambia el núcleo, sí, pero en incrementos pequeños, reversibles, y bien probados en lugar de saltos heroicos. La meta es un sistema que sea tanto confiable como capaz de evolucionar: nunca tan congelado que se pudra, nunca tan agitado que se vuelva poco confiable.
Ventajas y desventajas
| Enfoque | Ventajas | Desventajas |
|---|---|---|
| Mantener y sostener el sistema antiguo | Preserva el conocimiento institucional; poca interrupción; fiabilidad probada | Pila envejeciendo; habilidades escasas; riesgo creciente si no se mantiene |
| Reescritura de gran explosión | Pila fresca; se deshace de la acumulación | Tasa de fallo muy alta; pierde el conocimiento de casos límite ganado con esfuerzo |
| Modernización incremental | Reducción continua de riesgo; se mantiene corriendo | Lenta; requiere financiación y disciplina sostenidas |
| Transferencia pesada en documentación | Registro explícito y buscable | Se deteriora si no se mantiene; pierde el conocimiento tácito |
| Transferencia basada en personas (emparejamiento/rotación) | Conocimiento de trabajo duradero; equipos resilientes | Cuesta la productividad actual; necesita programación deliberada |
| Congelar el núcleo crítico | Máxima estabilidad a corto plazo | La pila envejece hacia la inmantenibilidad; se vuelve demasiado aterradora para tocar |
La contrapartida definitoria es estabilidad frente a evolución, y las resoluciones ingenuas ambas fallan. Congela un sistema crítico para protegerlo, y garantizas que eventualmente se vuelva inmantenible e inseguro. Reescríbelo por completo para modernizarlo, e invitas a la alta tasa de fallo por la que son notorios los reemplazos de gran explosión, y descartas décadas de conocimiento de casos límite codificado que nadie recuerda que está ahí. El camino duradero es el cambio continuo e incremental: mantén el sistema vivo y moviéndose en pasos pequeños, para que nunca envejezca fuera del soporte y nunca necesite un salto aterrador. La transferencia de conocimiento es una contrapartida similar, entre la facilidad de los documentos y la durabilidad de la experiencia vivida. La respuesta es ambas: el conocimiento vivido y sostenido por el equipo como la columna vertebral, y los documentos como la referencia.
Preguntas para discutir con tu equipo
¿Cuáles de tus sistemas críticos no tienen un dueño de equipo actual y nombrado ahora mismo? La propiedad es una asignación continua, no un recuerdo de quién escribió el código, y un sistema crítico sin dueño es una emergencia esperando ocurrir, notada solo cuando se rompe. Recorre tu catálogo de servicios (o construye uno) y comprueba que cada sistema registre quién lo posee, de qué depende, y cuán crítico es. Trae evidencia: elige tres sistemas importantes e intenta nombrar el equipo responsable y la última vez que se revisó la propiedad. Donde un sistema esté huérfano, o donde una reorganización silenciosamente lo dejó caer, asigna la propiedad deliberadamente con un traspaso real en lugar de por suposición. Asegúrate de que la propiedad incluya la capacidad de entender y cambiar el sistema, para que la administración no se deteriore en mera niñera.
Cuando reemplazas un sistema, ¿quién es responsable de realmente apagar el antiguo? La ejecución paralela eterna es un fallo común y costoso: los sistemas antiguo y nuevo corren lado a lado indefinidamente porque nadie posee el apagado, dejándote manteniendo dos sistemas y obteniendo la seguridad de ninguno. Trata cada retiro como un proyecto gestionado con responsabilidad nombrada para completar el desmantelamiento, una lista mapeada de consumidores, una ruta de migración, y un cronograma realista. Trae evidencia: ¿cuántas ejecuciones paralelas «temporales» o sistemas medio retirados todavía están consumiendo mantenimiento en tu patrimonio hoy? Preserva los datos y registros para cumplir las reglas de retención legal mucho después de que el sistema deje de correr, pero no dejes que la retención se convierta en una excusa para nunca terminar. Un retiro mal hecho deja sistemas zombi que no tienen mantenimiento pero todavía se dependen de ellos, lo peor de todos los mundos.
¿Qué habilidades para tus sistemas de larga vida dejará de suministrar el mercado laboral, y cuál es tu plan de sucesión? Los sistemas que corren durante veinte o treinta años sobreviven a sus ecosistemas de lenguaje, sus proveedores, y las carreras de la gente que entiende la pila antigua, y el mercado no te entregará confiablemente reemplazos. Reduce el factor bus deliberadamente para que ninguna función crítica tenga exactamente una persona capaz, y capacita cruzadamente para que al menos dos, preferiblemente tres, personas puedan realizar cada tarea esencial. Trae evidencia: para cada sistema crítico envejecido, cuenta cuánta gente puede cambiarlo con seguridad y cuán cerca de la jubilación están los más conocedores. La respuesta debería impulsar la capacitación deliberada de sucesores y la superposición real entre administradores salientes y entrantes, porque el conocimiento tácito (el sentir por un sistema) se transfiere principalmente haciendo junto a alguien que lo tiene. Los documentos son la referencia; el conocimiento vivido y sostenido por el equipo es la columna vertebral.
¿Cuándo cambiaste por última vez tu sistema de larga vida más crítico, y todavía alguien se atreve? Un sistema que nadie ha tocado en un año no es estable, está derivando hacia la trampa de «demasiado aterrador para tocar», donde cada cambio se teme y así la pila silenciosamente envejece fuera del soporte. Para una organización grande esto importa porque la parálisis se compone: cuanto más larga la congelación, más se desvanece el conocimiento y más riesgoso se vuelve el eventual cambio inevitable. Trae evidencia: para cada sistema crítico, la fecha del último cambio deliberado, el tamaño del cambio más pequeño que alguien intentaría hoy, y si un parche rutinario de dependencia o seguridad podría enviarse esta semana sin heroísmos. La consideración en competencia es real, porque el cambio también introduce riesgo, así que la meta no es la agitación sino una cadencia constante de pasos pequeños, reversibles, y bien probados. En patrimonios empresariales y gubernamentales, donde un núcleo congelado puede sentarse bajo un servicio ciudadano durante una década, trata «nunca lo cambiamos» como una bandera roja en lugar de una garantía, y financia el mantenimiento continuo que mantiene viva la opción de cambiar.
¿Cuánto de tu patrimonio corre en una tecnología que está en o cerca del fin de vida, y quién rastrea ese reloj? Los tiempos de ejecución envejecidos, las bases de datos sin soporte, y los marcos fuera de mantenimiento son el modo de fallo lento que se convierte en una crisis repentina el día que un parche de seguridad deja de llegar. Para un equipo grande el peligro es que nadie posee el horizonte: los equipos individuales parchean lo que se rompe, pero nadie mantiene una vista de cartera de qué pilas pierden el soporte del proveedor y cuándo. Trae evidencia: un inventario de las tecnologías centrales de cada sistema crítico, sus fechas publicadas de fin de vida o fin de soporte, y la brecha actual entre lo que ejecutas y lo que todavía tiene soporte. La tensión es entre el costo de la actualización continua y el riesgo del aplazamiento, y el aplazamiento usualmente gana hasta que catastróficamente pierde. En entornos empresariales y gubernamentales, donde los ciclos de contratación pública y acreditación pueden tomar un año o más, una fecha de fin de vida que parece distante a menudo ya está dentro de tu tiempo de anticipación, así que el trabajo de sucesión y actualización tiene que empezar mucho antes de que se agote el reloj.
¿Dónde en tu patrimonio la estabilidad es el valor y la novedad un pasivo, y cómo mantienes honesta esa frontera? No todo sistema premia el mismo tratamiento: los sistemas centrales de los que dependen diariamente los ciudadanos y clientes usualmente premian la fiabilidad y el cambio cauteloso, mientras los bordes premian la experimentación, y confundir los dos desperdicia dinero o invita a interrupciones. Para una organización grande el riesgo es que la ambición y los incentivos de carrera empujan las reescrituras emocionantes exactamente hacia el núcleo duradero que debería permanecer aburrido. Trae evidencia: un mapa de tu patrimonio marcando dónde la fiabilidad es la misión y dónde la novedad crea valor, más los cambios recientes que cruzaron esa línea en cualquier dirección y qué costaron. La consideración en competencia es que incluso un núcleo estable todavía debe evolucionar, así que «estable» no puede convertirse en una excusa para congelar. En contextos empresariales y gubernamentales, vincula esta frontera a niveles de criticidad explícitos y una autoridad nombrada que pueda vetar una reescritura riesgosa de un sistema que el público no puede permitirse ver fallar, para que el juicio no derive con quien sea más ruidoso este trimestre.
Perspectiva sectorial
Startup. Con un puñado de ingenieros y poco fondo de operación, tu riesgo de sostenimiento se concentra en una o dos personas que escribieron los sistemas que no puedes permitirte perder, como la facturación o la autenticación. Gasta casi nada en proceso, pero haz las cosas baratas y de alto valor ahora: empareja a una segunda persona a través de cada sistema crítico, escribe un registro de decisión de arquitectura de una página para las partes sorprendentes, y mantén un runbook que realmente uses. Resiste el impulso de reescribir algo solo porque es viejo, porque a tu tamaño una reescritura fallida de un sistema central puede acabar con la empresa.
Pequeña empresa. No tienes un equipo de mantenimiento dedicado y tienes un presupuesto ajustado, así que favorece comprar y alojar sobre construir cualquier cosa que tendrías que sostener tú mismo. Prefiere proveedores y estándares abiertos que te permitan irte, y mantén un registro sencillo de qué sistema externo ejecuta qué función crítica y a quién llamar cuando se rompe. Donde sí poseas código personalizado, asegúrate de que al menos dos personas (o un contratista confiable más un empleado) lo entiendan, para que una única salida o un contrato de soporte vencido no te deje varado.
Empresa. Tu desafío es la escala de cartera: muchos sistemas de larga vida, muchos equipos, y personal que rota durante décadas. Estandariza la propiedad a nivel de equipo en un catálogo de servicios, mide el factor bus a través del patrimonio, y financia la modernización incremental continua en lugar de apostar por reescrituras de gran explosión. Gobierna los horizontes de fin de vida centralmente para que ninguna pila crítica silenciosamente envejezca fuera del soporte, y ejecuta cada retiro como un proyecto auditado con responsabilidad nombrada para completar el desmantelamiento.
Gobierno. La continuidad de la obligación es absoluta: no puedes dejar de pagar beneficios u operar el control de tráfico aéreo mientras refactorizas, y los fallos son públicos y consecuentes. Las reglas de contratación pública te empujan hacia los estándares abiertos, la portabilidad de datos, y las interfaces documentadas para que los futuros mantenedores y proveedores tengan una oportunidad. Financia la capacitación de sucesión deliberada para las tecnologías más antiguas que el mercado laboral ya no suministra, preserva los registros de los sistemas retirados para cumplir la retención estatutaria, y trata la fiabilidad sostenida de los servicios ciudadanos como la misión responsable en lugar de sobrecarga.
Ejemplos
Startup. Una startup de cinco personas ya tiene un sistema que no puede permitirse perder: el servicio de facturación que un fundador escribió en el primer mes y que ahora ejecuta cada cobro de cliente. Solo ese fundador lo entiende, así que el equipo trata el factor bus como un riesgo real en lugar de un cumplido. Emparejan a un segundo ingeniero a través de un ciclo completo de facturación, escriben un registro de decisión de arquitectura corto explicando por qué existe la extraña lógica de reintento, y mantienen un runbook junto al código que realmente ejercitan durante un incidente. Resisten reescribirlo solo porque es viejo y poco glamoroso, y en cambio lo mejoran en pasos pequeños y reversibles, para que el servicio que mantiene viva a la empresa sea comprendido por más de una cabeza.
Empresa. Una gran aseguradora opera un sistema de administración de pólizas escrito por primera vez hace décadas y todavía central a su negocio. En lugar de intentar una reescritura completa riesgosa, modularizó el sistema detrás de interfaces bien definidas y ahora reemplaza un componente a la vez, cada cambio pequeño y reversible. Cada función crítica tiene al menos tres personas que pueden realizarla. La guardia es compartida. Los registros de decisión de arquitectura capturan por qué el sistema funciona de la manera que lo hace. Un curso interno curado lleva a los nuevos ingenieros a la competencia en la pila heredada, y los expertos salientes se superponen con los sucesores para que el conocimiento tácito se transfiera haciendo.
Gobierno. Una agencia nacional de seguridad social opera sistemas de pago de beneficios que han corrido durante más de treinta años y no pueden detenerse. Registra la propiedad explícita de equipo en un catálogo de servicios. Financia el mantenimiento continuo en lugar de congelar los sistemas. Capacita deliberadamente a los sucesores en las tecnologías más antiguas, porque el mercado laboral no las suministrará. Cuando retira un subsistema obsoleto, ejecuta el retiro como un proyecto gestionado: mapeando cada consumidor, proveyendo apoyo de migración, preservando registros para cumplir las reglas de retención legal, y asignando responsabilidad para realmente completar el desmantelamiento, para que ningún sistema zombi persista.
Caso de negocio: motivaciones, ROI y TCO
El retorno de sostener sistemas de larga vida viene de evitar los dos modos de fallo catastróficos que dominan su costo total de propiedad. El primero es la crisis repentina: una persona clave se va, un componente sin soporte se ve comprometido, o un sistema huérfano falla sin nadie que lo entienda. El segundo es el megaproyecto fallido: una reescritura completa apresurada que se excede, subentrega, o colapsa. Ambos son enormemente costosos, y ambos son en gran medida prevenibles con administración constante. El costo de un único fallo de reescritura evitado, o una única interrupción extendida evitada de un servicio ciudadano crítico, usualmente excede años de inversión de mantenimiento sostenido.
El costo de adopción es continuo y poco glamoroso: financiar el mantenimiento que no produce nuevas funciones, pagar por el tiempo de capacitación cruzada y documentación que reduce la producción a corto plazo, e invertir en modernización incremental que nunca hace titulares. El costo de no adoptar es diferido y mayor: riesgo creciente a medida que envejece la pila, exposición de persona clave inflándose, y eventualmente un reemplazo forzado, de alto riesgo, y alto costo bajo condiciones de emergencia. Cuando presentes el caso al liderazgo, reencuadra el mantenimiento de «centro de costo» a «gestión de riesgo para sistemas que la organización no puede permitirse perder». Presenta el costo total de propiedad a través de toda la vida multidécada (incluyendo el sostenimiento y el eventual desmantelamiento) en lugar de solo la construcción. Y enfatiza esto: para los sistemas de cara al ciudadano y al cliente, la fiabilidad sostenida no es sobrecarga. Es la confianza que es el producto real.
Antipatrones y trampas
- El mantenedor héroe. Una persona irreemplazable que entiende el sistema; su salida es un evento existencial.
- Congelar y olvidar. Declarar un sistema crítico «terminado», detener el mantenimiento, y observar cómo su pila envejece hacia la inmantenibilidad.
- La reescritura condenada. Apostar la organización a un reemplazo completo que descarta el conocimiento codificado y usualmente se excede o falla.
- Sistemas huérfanos. Software crítico sin dueño actual, notado solo cuando se rompe.
- Teatro de documentación. Volúmenes de documentos que están obsoletos, no ejercitados, y en los que nadie confía.
- La ejecución paralela eterna. Sistemas antiguo y nuevo corriendo lado a lado indefinidamente porque nadie es responsable del apagado.
- Pérdida de conocimiento tácito. Dejar que los expertos se vayan sin superposición, para que el sentir por el sistema se evapore.
- Demasiado aterrador para tocar. Un sistema tan mal comprendido que cualquier cambio se teme, lo cual garantiza que se deteriore.
Modelo de madurez
Nivel 1: Iniciar. El sostenimiento es ad hoc y reactivo. Los sistemas dependen de héroes individuales, la propiedad se recuerda en lugar de asignarse, y el conocimiento vive sin documentar en unas pocas cabezas. Los sistemas antiguos se congelan hasta que se rompen, las pilas envejecidas derivan hacia el fin de vida sin notarse, y los retiros se anuncian pero nunca se completan.
Nivel 2: Desarrollar. Aparecen prácticas básicas pero varían por equipo. La propiedad está escrita para los sistemas principales más obvios, existen algunos runbooks y documentación, y unas pocas funciones críticas tienen una segunda persona capaz. El mantenimiento se financia pero es reactivo, la capacitación cruzada ocurre cuando alguien la recuerda, y no hay una manera compartida de hacer nada de esto en toda la organización.
Nivel 3: Estandarizar. Las prácticas de administración están documentadas y se aplican en toda la organización. La propiedad a nivel de equipo se registra en un catálogo de servicios y sobrevive a las reorganizaciones. La mitigación del factor bus a través de la rotación y la capacitación cruzada es una regla permanente, se esperan registros de decisión de arquitectura y runbooks ejercitados, la modernización es incremental por política, y cada retiro corre como un proyecto gestionado con responsabilidad nombrada para completar el desmantelamiento.
Nivel 4: Gestionar. El sostenimiento se mide y controla con datos contra líneas base. Rastreas el factor bus por sistema crítico, el conteo de gente que puede cambiar con seguridad cada uno, la edad de cada tecnología central contra su fecha de fin de vida, el porcentaje del patrimonio bajo mantenimiento continuo frente a diferido, y el número de ejecuciones paralelas estancadas y desmantelamientos a medio terminar. Estas métricas llevan umbrales que disparan la acción: un sistema que cae por debajo del piso de factor bus o cruza un horizonte de fin de soporte obtiene remediación financiada, y la salud de administración se reporta al liderazgo junto a la entrega.
Nivel 5: Orquestar. La administración se mejora continuamente y se integra en toda la organización. Ningún sistema crítico es un único punto de fallo humano, la transferencia de conocimiento incluyendo el conocimiento tácito a través de la superposición es rutinaria, y los sistemas evolucionan en pasos pequeños y reversibles para que ninguno envejezca fuera del soporte. La propiedad, el rastreo de fin de vida, la sucesión, y la planificación de retiro se tejen en la planificación de cartera y riesgo, el patrimonio se reequilibra a medida que cambian las tecnologías y obligaciones, y los sistemas multidécada se sostienen mientras se preserva la confianza de la gente que depende de ellos.
Ideas para el debate
- ¿Cómo mides el factor bus significativamente, y qué objetivo es correcto para distintos niveles de criticidad?
- ¿Cuándo es una modernización incremental genuinamente inviable, haciendo de una reescritura el menor riesgo?
- ¿Cómo financias y premias el trabajo de mantenimiento para que la administración sea una ruta de carrera respetada, no un callejón sin salida?
- ¿Cuál es la manera correcta de preservar el conocimiento tácito cuando el último experto está a punto de jubilarse y no es posible la superposición?
- ¿Cuánto tiempo deberías retener la capacidad de responder preguntas sobre un sistema retirado, y quién paga por eso?
- ¿Dónde en tu patrimonio la estabilidad es el valor y la novedad un pasivo, y cómo mantienes honesto ese juicio con el tiempo?
Puntos clave
- El software más importante es viejo y de larga vida; sostenerlo a través de décadas y generaciones de personal es una disciplina de primera clase.
- Cada sistema crítico necesita propiedad actual y a nivel de equipo; los sistemas críticos huérfanos son emergencias latentes.
- Reduce el factor bus deliberadamente (ninguna tarea crítica debería tener exactamente una persona capaz) y transfiere el conocimiento tácito a través de la superposición, no solo documentos.
- Mantén los sistemas de larga vida continua e incrementalmente mantenidos; congelarlos y apostar por reescrituras completas son ambos modos de fallo.
- Planifica los finales como proyectos gestionados con finalización responsable, preservando datos y registros para cumplir obligaciones.
- Para los sistemas de cara al ciudadano y al cliente, la fiabilidad y equidad sostenidas son la misión, y el mantenimiento es gestión de riesgo para lo que no puedes permitirte perder.
Referencias y lecturas adicionales
- Michael Feathers, Working Effectively with Legacy Code
- Titus Winters, Tom Manshreck, y Hyrum Wright, Software Engineering at Google
- Frederick P. Brooks Jr., The Mythical Man-Month
- Nat Pryce y Steve Freeman, Growing Object-Oriented Software, Guided by Tests
- Sam Newman, Monolith to Microservices
- Martin Fowler, Refactoring y escritos sobre el patrón Strangler Fig
- Betsy Beyer et al., Site Reliability Engineering y The Site Reliability Workbook (Google)
- Diomidis Spinellis, Code Reading: The Open Source Perspective
- U.S. Government Accountability Office, informes sobre la modernización de TI heredada federal