Haz que las decisiones sean reversibles
Mucho consejo de arquitectura asume que puedes ver el futuro. No puedes, y yo tampoco. Así que en vez de intentar tomar la decisión correcta cada vez, intento tomar decisiones reversibles — decisiones baratas de deshacer cuando, inevitablemente, descubro que estaba equivocado.
Te vas a equivocar
La base de datos que elijas, el límite que traces, la librería a la que apuestes — algunas de estas resultarán ser errores. No es pesimismo, es simplemente cómo funciona construir bajo incertidumbre. La pregunta no es si tomarás decisiones equivocadas. Es cuánto costará arreglar cada una.
Puertas de una vía y de dos vías
Tomo prestado un marco simple: algunas decisiones son puertas de dos vías — puedes volver a cruzar si no te gusta lo del otro lado. Otras son puertas de una vía, dolorosas o imposibles de revertir. Gasta tu cautela, tus reuniones y tu pensamiento cuidadoso en las puertas de una vía. Para todo lo demás, decide rápido y sigue avanzando; el costo de equivocarte es solo volver a cruzar.
Diseñar para revertir
La reversibilidad no es suerte — la construyes. Los límites te dejan cambiar un lado sin perturbar el otro. Los adaptadores mantienen a un proveedor a distancia. Tener el dominio libre de detalles del framework significa que puedes cambiar el framework después sin un reescrito. Cada una de estas convierte una puerta de una vía en una de dos.
El objetivo no es predecir bien. Es hacer que equivocarse sea barato. Un sistema lleno de puertas de dos vías es un sistema que puedes seguir cambiando a medida que aprendes — que, en un proyecto lo bastante largo, es lo único que de verdad importa.
Notas relacionadas
Tests como contratos vivos
Una buena suite de tests no es una red de seguridad que toleras — es la especificación ejecutable de lo que tu sistema promete, incluidas las propiedades que siempre deben cumplirse.
Límites antes que features
Por qué trazo las líneas entre módulos antes de escribir una sola feature — y cómo evita que un código se pudra a medida que crece.