Para mí es una proporción de estabilidad (como en cemento cementado, arcilla cocida en el horno, encerado en piedra, escrito con tinta permanente). Cuanto más inestable sea su código, ya que cuanto mayor sea la probabilidad de que necesite cambiarlo en el futuro, más fácilmente será flexible, como la arcilla húmeda, para mantenerse productivo. También hago hincapié en la flexibilidad y no legibilidad. Para mí, la facilidad para cambiar el código es más importante que la facilidad para leerlo. El código puede ser fácil de leer y una pesadilla para cambiar, y ¿de qué sirve poder leer y entender fácilmente los detalles de la implementación si son una pesadilla para cambiar? A menos que sea solo un ejercicio académico, normalmente el punto de poder entender 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 de cambiar, muchos de los beneficios de la legibilidad salen por la ventana. 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 plantea 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 desempeño a menudo tiende a contar más. Tengo un código C que todavía utilizo con regularidad, que no ha cambiado desde finales de los 80. No ha necesitado cambiar desde entonces. El código es fugaz, escrito en los días en que se jugueteaban los bits, y apenas lo entiendo. Sin embargo, todavía es aplicable hoy en día, y no necesito entender su implementación para aprovecharla al máximo.
Escribir pruebas a fondo 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 un intercambio digno 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 más razones para cambiar 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 podría hacer con bibliotecas de terceros (que también están destinadas a ser utilizadas, no modificadas, al menos no por tu 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, más probable será que pueda hacer lo que hace bien. Los diseños monolíticos son casi permanentemente inestables, ya que a medida que se les agrega más y más funcionalidad, más incompletos parecen.
La estabilidad debe ser su objetivo principal siempre que intente escribir un código que, inevitablemente, será difícil de cambiar, como el código SIMD paralelizado que ha sido micro-sintonizado hasta la muerte. Contrarresta la dificultad de mantener el código al maximizar 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 lo difícil que sea mantener el código.