Cada pieza de software comienza de manera simple. Unos pocos archivos, un propósito claro, una superficie pequeña. Luego se agregan funciones, se manejan casos extremos y, en poco tiempo, estás viendo algo que requiere un diagrama para comprenderlo. Esto no es inevitable, pero se necesita disciplina para prevenirlo.
La parte difícil de la simplicidad no es el diseño inicial. Es la resistencia constante a las complicaciones. Cada solicitud de función, cada corrección de errores, cada refactorización es una oportunidad para agregar complejidad. Decir no es la habilidad de diseño más importante y la menos celebrada.
Eliminar como característica
La mejor versión de un producto suele tener menos funciones que la anterior. No porque faltaran funciones, sino porque alguien tuvo el coraje de eliminar cosas que no le valían la pena. Cada característica tiene un costo: en mantenimiento, en carga cognitiva, en el peso de la interfaz.
La simplicidad es una práctica, no un destino. Nunca llegas a lo simple. Sigues preguntando: ¿es esto necesario? ¿Podría ser esto más claro? ¿Hay alguna manera de resolver este problema eliminando algo en lugar de agregar algo? La respuesta es sí, con más frecuencia de lo que cabría esperar.