Para mí es una proporción de estabilidad (como en cemento cementado, arcilla cocida al horno, puesta en piedra, escrita con tinta permanente). Cuanto más inestable sea su código, ya que cuanto mayor sea la probabilidad de que tenga que cambiarlo en el futuro, más flexible será, como arcilla húmeda, para mantenerse productivo. También enfatizo la flexibilidad y no la legibilidad. Para mí, la facilidad de cambiar el código es más importante que la facilidad de leerlo. El código puede ser fácil de leer y una pesadilla para cambiar, y ¿de qué sirve poder leer y comprender fácilmente los detalles de implementación si son una pesadilla para cambiar? A menos que sea solo un ejercicio académico, generalmente el punto de poder comprender fácilmente el código en una base de código de producción es con la intención de poder cambiarlo más fácilmente según sea necesario. Si es difícil cambiar, entonces muchos de los beneficios de la legibilidad desaparecen. La legibilidad solo es generalmente útil en el contexto de la flexibilidad, y la flexibilidad solo es útil en el contexto de la inestabilidad.
Naturalmente, incluso el código más difícil de mantener imaginable, independientemente de lo fácil o difícil que sea leerlo, no representa un problema si nunca hay una razón para cambiarlo, solo úselo. Y es posible lograr tal calidad, especialmente para el código de sistema de bajo nivel donde el rendimiento a menudo tiende a contar más. Tengo un código C que todavía uso regularmente, que no ha cambiado desde finales de los 80. No ha necesitado cambiar desde entonces. El código es fugitivo, está escrito en los días poco complicados, y apenas lo entiendo. Sin embargo, todavía es aplicable hoy, y no necesito entender su implementación para aprovecharlo al máximo.
Escribir minuciosamente las pruebas es una forma de mejorar la estabilidad. Otro es el desacoplamiento. Si su código no depende de nada más, entonces la única razón para que cambie es si él mismo necesita cambiar. A veces, una pequeña cantidad de duplicación de código puede servir como un mecanismo de desacoplamiento para mejorar drásticamente la estabilidad de una manera que lo convierte en una compensación digna si, a cambio, obtiene un código que ahora es completamente independiente de cualquier otra cosa. Ahora ese código es invulnerable a los cambios en el mundo exterior. Mientras tanto, el código que depende de 10 bibliotecas externas diferentes tiene 10 veces la razón para que cambie en el futuro.
Otra cosa útil en la práctica es separar su biblioteca de las partes inestables de su base de código, posiblemente incluso compilándola por separado, como lo haría para las bibliotecas de terceros (que también están destinadas a ser utilizadas, no modificadas, al menos no por su equipo). Solo ese tipo de organización puede evitar que las personas lo manipulen.
Otro es el minimalismo. Cuanto menos intente hacer su código, es más probable que pueda hacer lo que hace bien. Los diseños monolíticos son casi permanentemente inestables, ya que cada vez que se les agrega más funcionalidad, más incompletos parecen.
La estabilidad debe ser su objetivo principal siempre que intente escribir código que inevitablemente será difícil de cambiar, como el código SIMD paralelo que ha sido microajustado hasta la muerte. Contrarresta la dificultad de mantener el código maximizando la probabilidad de que no tenga que cambiar el código y, por lo tanto, no tendrá que mantenerlo en el futuro. Eso reduce los costos de mantenimiento a cero, sin importar cuán difícil sea mantener el código.