Mantener un modelo al día
Los modelos no se pudren porque la gente sea perezosa. Se pudren porque nada en el flujo real de trabajo obliga a nadie a abrirlos.
6 min de lecturaModelling practice4 de 4
La respuesta corta
- Los modelos se pudren porque nada en el proceso de entrega obliga a nadie a abrirlos. El código tiene pruebas y revisión; una página de wiki no tiene ninguna.
- Engancha el modelo a un paso que ya ocurre: un diagrama en el repositorio aparece en el diff de una pull request.
- Cualquier cosa que dependa de una revisión periódica que nadie ha programado no sobrevive al primer trimestre ocupado.
- Borra un diagrama caducado en vez de dejarlo. Uno que falta cuesta diez minutos de preguntar; uno equivocado con seguridad cuesta un día y una mala decisión.
01Por qué se pudren los modelos#
La explicación habitual es la disciplina, y es falsa. Los mismos ingenieros que dejan un modelo a la deriva durante dos años mantienen su suite de pruebas en verde todos los días, y la diferencia no está en cuánto les importa: está en que una prueba en rojo detiene el pipeline y un diagrama equivocado no detiene nada.
El código está rodeado de maquinaria que obliga a fijarse en él justo cuando cambia: un compilador, una ejecución de pruebas, alguien que tiene que aprobar el cambio. Un modelo en un wiki no tiene nada de eso. Nada en el camino del ticket a producción obliga a nadie a abrir la página, así que nada saca nunca a la luz la discrepancia. El modelo no empeora: el sistema se mueve y el modelo se queda exactamente donde estaba.
02Engánchalo a algo que ya sucede#
Todo montaje que funciona tiene la misma forma: el modelo se coloca donde un paso ya existente va a tropezar con él.
Pon la vista en el repositorio. Un diagrama versionado como Mermaid junto al código aparece en el diff en cuanto se toca su archivo, y lo lee quien revisa el cambio. Es el único mecanismo de esta lista cuyo mantenimiento no cuesta nada, porque la revisión ya estaba ocurriendo.
Referencia las vistas desde los registros de decisión. Un registro breve de decisión de arquitectura que enlace la vista con la estructura que decidió hace que esa vista se abra cada vez que alguien pregunta por qué la estructura es así, que es justamente cuando importaría que estuviera equivocada.
Haz del modelo la fuente de algo que la gente necesita. Si la vista de despliegue genera el diagrama del runbook, o el modelo de dominio genera el glosario que consulta el equipo de soporte, entonces alguien lo nota en días y no en trimestres.
Úsalo cuando
- Una vista vive en el repositorio y cambia en la misma pull request que el código
- Un registro de decisión enlaza la vista que muestra lo que decidió
- El modelo genera algo en lo que un equipo ya se apoya
- Cada vista tiene una persona responsable con nombre, y la lista de vistas es lo bastante corta como para nombrarlas
Usa otra cosa cuando
- Una revisión trimestral que nadie ha programado
- Una página de wiki que solo ha abierto quien la escribió
- Un PNG exportado al lado de la fuente de la que salió
- Cualquier montaje que exija que alguien se acuerde
03Recórtalo y borra el resto#
La otra mitad de la respuesta es que la mayoría de los modelos son demasiado grandes para mantenerlos, y eso no lo arregla ningún proceso. Si mantener el modelo costara un día al mes y el equipo tiene una hora, el modelo caducará por muy bien organizada que esté la revisión, así que lo honesto es recortarlo hasta esa hora.
Es la misma prueba que en el alcance, aplicada más tarde: las vistas que no pueden nombrar una decisión son las que se descartan, y descartarlas no es una pérdida porque nadie las leía. Lo que queda es lo bastante pequeño como para que se note cuando está mal.
Y luego borra el resto de verdad. Este es el paso que la gente no da, y el que tiene la aritmética más clara. Un diagrama que falta le cuesta al lector diez minutos de preguntar; uno equivocado con seguridad le cuesta un día y, con mala suerte, una decisión tomada sobre él. La documentación que no vas a mantener no es neutral: es una trampa con el logotipo de tu equipo.
En una línea cada uno
- 01Los modelos se pudren porque nada en el flujo de entrega obliga a nadie a abrirlos.
- 02Engancha cada vista a un paso que ya ocurre: un diff, un registro de decisión, un artefacto generado.
- 03Cualquier proceso que dependa de que alguien se acuerde ya ha fracasado.
- 04Recorta el modelo al presupuesto de mantenimiento que el equipo tiene de verdad, no al que debería tener.
- 05Borra lo que sobra y fecha lo que conservas. Un diagrama equivocado cuesta más que uno que falta.
04Preguntas frecuentes#
¿Por qué caduca la documentación de arquitectura?
Porque nada en el proceso de entrega obliga a nadie a abrirla. El código tiene pruebas y revisión que fuerzan la atención cuando cambia; un modelo en una wiki no tiene equivalente, así que se desvía en silencio y nadie lo descubre hasta que confía en él y se equivoca.
¿Cómo se mantiene un modelo al día?
Engánchalo a un paso que ya ocurre. Un diagrama en el repositorio aparece en el diff de una pull request; una vista citada por un registro de decisión se abre cuando la decisión se revisa. Cualquier cosa que dependa de una revisión periódica que nadie ha programado no sobrevive al primer trimestre ocupado.
¿Es mejor borrar un diagrama caducado o dejarlo?
Borrarlo. Un diagrama que falta le cuesta al lector diez minutos de preguntar; uno equivocado con seguridad le cuesta un día y una mala decisión. Lo que no vas a mantener es un pasivo y no un activo, y quitarlo es la mejora más barata que existe.
En esta serie
- 01Qué lenguaje usar
- 02Acotar un modelo
- 03Convenciones de nombres
- 04Mantener un modelo al día
Lecturas relacionadas
Práctica del modelado
Práctica del modelado
Práctica del modelado
Práctica del modelado
Práctica del modelado