Módulo 1: Qué hace de verdad un arquitecto
Habilitar, no dictar
Descripción
La lección 4 estableció el primer verbo del arquitecto real: hace reversibles las decisiones caras y comunica su porqué. Esta lección instala el segundo, que es todavía más contraintuitivo para quien imagina al arquitecto como una autoridad: el arquitecto real habilita al equipo en vez de dictarle. No es el que decide por las squads; es el que las pone en condiciones de decidir bien por sí mismas. La imagen falsa que desarma es la del dictador: el arquitecto como jefe técnico por cuya aprobación pasa cada decisión, que dice a cada squad qué hacer y cómo. La imagen real es la del jardinero: alguien que no hace crecer las plantas a mano —eso lo hace la planta— sino que prepara la tierra, pone los tutores, garantiza el agua y la luz, y deja que cada planta crezca fuerte por su cuenta dentro de esas condiciones.
El instrumento concreto de habilitar son los guardrails: límites claros dentro de los cuales una squad puede decidir sin consultar. "Usa REST para la comunicación interna, Postgres como almacén, y cumple estos SLOs" es un guardrail. Con él, la squad de catalog puede tomar cientos de decisiones —cómo estructura sus tablas, cómo organiza su código, qué librerías usa— sin preguntarle nada al arquitecto, porque sabe que mientras se quede dentro del carril, está bien. El arquitecto no decidió esas cientos de cosas; decidió el carril, y el carril decidió por él. Esta lección mide el efecto: sobre una semana típica de Mercado, cuántas decisiones pueden resolver las squads solas cuando el arquitecto habilita, contra el modelo donde todo pasa por él.
Conexión con el módulo. Es la segunda de las tres lecciones que definen al arquitecto por lo que hace (reversibilidad en la 4, habilitar aquí, no ser cuello de botella en la 6). Y es el puente entre las dos: habilitar es cómo el arquitecto evita convertirse en el cuello de botella que la lección 6 va a medir en su forma más aguda. También conecta hacia adelante con el ecosistema: la idea de guardrails y equipos habilitados es el corazón de Team Topologies (Skelton y Pais), que el módulo 2 (Conway) usa a fondo con sus tipos de equipo —stream-aligned, platform, enabling—. Cuidado con la frontera: la reestructuración detallada de los equipos y la dinámica org↔arquitectura completa es el módulo 2; el liderazgo sin autoridad a fondo —cómo influir, disagree and commit— es el módulo 4. Aquí instalamos solo el principio del rol: el arquitecto habilita con guardrails en vez de dictar decisión por decisión.
Una analogía: el jardinero y el que planta a mano
Imagina dos personas encargadas de un jardín grande, con muchos canteros.
El que quiere plantar cada planta a mano. Cree que, como es el experto, debe controlar cada planta: dónde va exactamente, cuánta agua le toca hoy, en qué ángulo la poda. Recorre el jardín planta por planta, decidiendo cada detalle él mismo. Con diez plantas quizá funcione. Con quinientas, es imposible: las plantas que él no alcanzó a atender se marchitan esperando su decisión, él trabaja agotado sin dar abasto, y el jardín crece torcido porque nadie más tiene permiso de decidir nada sin él. Peor: los ayudantes, que podrían atender sus canteros perfectamente, se vuelven pasivos —"para qué decido, si él va a rehacerlo a su modo"— y esperan instrucciones para todo. El experto se volvió el techo del jardín: nada crece más allá de lo que él personalmente alcanza a tocar.
El jardinero de verdad. Sabe que no puede —ni debe— plantar cada planta a mano. Su trabajo es otro: preparar bien la tierra, instalar el sistema de riego, poner tutores donde las plantas jóvenes los necesitan, definir qué va en zona de sol y qué en sombra. Y luego confía en que cada planta, en las buenas condiciones que él creó, crezca por sí misma. Los ayudantes atienden sus canteros con autonomía, porque el jardinero les dio el marco —"esta zona es de sol, riega cada dos días, poda en primavera"— y dentro de él deciden solos. El jardinero interviene poco y en lo que importa: un problema de plaga que cruza todo el jardín, un rediseño del riego. El jardín florece más que con el que planta a mano, precisamente porque el jardinero no es el cuello por donde pasa cada planta.
El punto: el que planta a mano confunde su experiencia con la obligación de decidir todo; el jardinero usa su experiencia para crear las condiciones en que otros deciden bien. El arquitecto real es el jardinero. Su experiencia no le da la obligación de decidir cada cosa de las cinco squads; le da la capacidad de poner los guardrails —la tierra, el riego, los tutores— dentro de los cuales cada squad decide lo suyo con autonomía. Dictar es plantar a mano y no escalar más allá de una persona; habilitar es preparar el jardín para que florezca sin ti en cada cantero. Esta lección mide cuánto florece Mercado bajo cada modelo.
Ejemplo trabajado: cuántas decisiones puede resolver cada squad sola
En una semana típica, las cinco squads de Mercado generan decisiones: cómo estructurar una tabla, qué librería usar, cómo nombrar un endpoint, cómo manejar un caso borde. La gran mayoría son locales —viven dentro de una squad—. Unas pocas cruzan squads y son de nivel arquitecto (lo vimos en la lección 1). La pregunta de esta lección: bajo el modelo jardinero, ¿cuántas de esas decisiones puede resolver cada squad sola, sin pasar por el arquitecto?
# El arquitecto jardinero pone GUARDRAILS (limites claros: "REST interno,
# postgres, estos SLOs") y deja que cada squad decida dentro. El dictador exige
# que TODA decision pase por el. Medimos, sobre una semana tipica de Mercado,
# cuantas decisiones puede resolver cada squad SOLA (self-serve) y cuantas
# cruzan squads y suben de verdad al arquitecto.
WEEKLY_DECISIONS = {
# squad -> (total_decisions, cross_team_decisions)
"catalog": (12, 1),
"orders": (10, 2),
"payments": (8, 1),
"shipping": (9, 1),
"platform": (7, 2),
}
total = sum(t for t, _ in WEEKLY_DECISIONS.values())
cross = sum(c for _, c in WEEKLY_DECISIONS.values())
local = total - cross
print(f"{'squad':<10}{'decisions':>11}{'cross_team':>12}{'self-serve':>12}")
print("-" * 45)
for squad, (t, c) in WEEKLY_DECISIONS.items():
print(f"{squad:<10}{t:>11}{c:>12}{t - c:>12}")
print("-" * 45)
print(f"{'TOTAL':<10}{total:>11}{cross:>12}{local:>12}")
print()
print(f"Modelo dictador: las {total} decisiones esperan al arquitecto.")
print(f"Modelo jardinero: {local} las deciden las squads solas ({round(100 * local / total)}%);")
print(f"solo {cross} cruzan squads y suben al arquitecto ({round(100 * cross / total)}%).")
print("Habilitar no es soltar el timon: es poner guardrails y devolver la")
print("decision local a quien esta mas cerca del problema.")
Qué esperar. Al correr el archivo, la salida es exactamente esta:
squad decisions cross_team self-serve
---------------------------------------------
catalog 12 1 11
orders 10 2 8
payments 8 1 7
shipping 9 1 8
platform 7 2 5
---------------------------------------------
TOTAL 46 7 39
Modelo dictador: las 46 decisiones esperan al arquitecto.
Modelo jardinero: 39 las deciden las squads solas (85%);
solo 7 cruzan squads y suben al arquitecto (15%).
Habilitar no es soltar el timon: es poner guardrails y devolver la
decision local a quien esta mas cerca del problema.
Lee los dos totales de abajo, porque en ellos está el argumento de la lección.
En una semana típica, las cinco squads generan 46 decisiones. Bajo el modelo dictador, las 46 esperan al arquitecto: cada tabla, cada librería, cada endpoint tiene que pasar por su aprobación. Bajo el modelo jardinero, la squad decide sola las que caen dentro de sus guardrails —39 decisiones, el 85%— y solo las 7 que cruzan squads (el 15%) suben de verdad al arquitecto. La misma semana, el mismo trabajo, pero en un modelo el arquitecto es el paso obligado de 46 decisiones y en el otro toca 7.
Fíjate en lo que esto significa para el arquitecto y para las squads. Para el arquitecto: pasar de 46 a 7 no es "trabajar menos"; es trabajar en lo que importa. Las 7 que suben son las de nivel arquitecto —los contratos entre squads, los atributos de calidad, los límites de servicio— justo donde su vista transversal aporta algo que ninguna squad tiene. Las 39 que soltó eran decisiones que las squads pueden tomar mejor que él, porque están más cerca del problema: la squad de catalog sabe mejor que nadie cómo estructurar sus tablas de catálogo. Dictar esas 39 no solo lo ahoga a él; produce peores decisiones, porque las toma alguien más lejos del terreno.
Para las squads, el efecto es aún más profundo. Bajo el dictador, las squads se vuelven pasivas —el jardín de ayudantes que espera instrucciones—: no desarrollan criterio propio porque nunca deciden, y cada bloqueo las detiene. Bajo el jardinero, con guardrails claros, las squads deciden con autonomía, desarrollan criterio, y avanzan sin fricción. El arquitecto que habilita no solo se libera a sí mismo; hace más capaces a las squads. Ese es el sentido más hondo de "habilitar": no es delegar tareas, es construir la capacidad de decidir en quien está más cerca del problema.
Y una frase para clavar el matiz que la salida repite: habilitar no es soltar el timón. El arquitecto jardinero no desaparece ni dice "decidan lo que quieran". Pone guardrails —"REST interno, Postgres, estos SLOs"—, que son decisiones de nivel arquitecto precisas y firmes, y dentro de ellos devuelve la autonomía. La libertad de las squads existe gracias a los límites claros, no a pesar de ellos. Un jardín sin tierra preparada ni riego no es libre; es un yermo. El guardrail es lo que hace posible la autonomía.
Como barras, el reparto es contundente:
46 decisiones/semana: quien las decide
self-serve (squads) |################### 39 (85%)
al arquitecto |### 7 (15%)
─────────────────────
el jardinero toca el 15%; el dictador, el 100%.
Profundización: qué es un buen guardrail (y qué no lo es)
El modelo jardinero vive o muere por la calidad de los guardrails. Un buen guardrail habilita; uno malo o dictado disfrazado de guardrail ahoga igual que el control directo. Vale la pena entender la diferencia, porque es donde muchos arquitectos que "quieren habilitar" fallan.
Un buen guardrail define el qué, no el cómo. "Cumple estos SLOs de latencia y disponibilidad" es un guardrail: dice el resultado que importa (el atributo de calidad) y deja que la squad elija cómo lograrlo. "Usa exactamente esta librería de cache con esta configuración" no es un guardrail; es una instrucción, y le quita a la squad la decisión que sabe tomar mejor que el arquitecto. El buen guardrail pone la frontera donde la decisión deja de ser local —donde empieza a afectar a otros— y no un centímetro antes. Todo lo que queda dentro de esa frontera es de la squad.
Un buen guardrail es claro y estable. La squad tiene que poder saber, sin preguntar, si su decisión está dentro o fuera del carril. Un guardrail ambiguo ("hagan las cosas bien, con calidad") no habilita, porque la squad no sabe si está dentro, así que termina preguntando —y volvemos al cuello de botella—. Un guardrail que cambia cada semana tampoco habilita, porque la squad no puede confiar en él. Los buenos guardrails son pocos, claros y duraderos: "REST interno, Postgres como almacén primario, estos SLOs, autenticación con el token compartido". Con esos cuatro, la squad de payments puede tomar decenas de decisiones sabiendo exactamente cuándo está dentro.
Un buen guardrail explica su porqué. Un guardrail impuesto sin razón ("porque yo lo digo") se siente como dictadura, y las squads lo rodean en cuanto pueden. Un guardrail con su porqué ("REST interno para que cualquier squad pueda integrarse sin coordinar con nosotros; Postgres porque ya tenemos la operación y el conocimiento") se siente como lo que es —una decisión de nivel arquitecto bien fundada— y las squads lo respetan porque lo entienden. Aquí reaparece el "porqué que viaja" de la lección 4: el guardrail también lleva su razón.
La contracara: cuándo el guardrail se vuelve dictado disfrazado. Si el arquitecto pone tantos guardrails, tan detallados, que la squad no tiene ninguna decisión real que tomar dentro de ellos, no está habilitando: está dictando con otro nombre. La prueba es simple: ¿le queda a la squad espacio genuino de decisión dentro del carril? Si el guardrail dice "usa REST", queda espacio (cómo diseñas tus endpoints, tus recursos, tu versionado). Si el guardrail dice "usa REST con estos endpoints exactos, estos nombres, esta estructura de respuesta", no queda espacio: es la torre de marfil pintada de habilitación. El jardinero prepara la tierra; no dibuja dónde va cada raíz.
Una nota sobre la confianza. Habilitar exige un músculo que a muchos arquitectos les cuesta: tolerar que una squad decida distinto de como él lo habría hecho, y que esté bien. El dictador no soporta esto —"yo lo habría hecho mejor"— y por eso reabre cada decisión, lo que enseña a las squads que su autonomía es falsa. El jardinero acepta que una planta crezca un poco distinta de como él la imaginaba, mientras esté sana y dentro de la zona correcta. Si la decisión de la squad está dentro de los guardrails y funciona, que sea distinta de la preferencia del arquitecto no es un problema que corregir; es autonomía funcionando. El arquitecto que solo tolera decisiones idénticas a las suyas no habilita; clona. Y un equipo de clones sin criterio propio es frágil: colapsa el día que el arquitecto no está.
Errores comunes
Aprobar cada decisión "para que quede bien" (el dictador). Qué pasa: el arquitecto exige que cada decisión técnica de las squads pase por su revisión y visto bueno, convencido de que así garantiza la calidad. Por qué pasa: confunde "que las decisiones de nivel arquitecto queden bien" con "que yo apruebe todas las decisiones", y su experiencia le hace sentir que él decidiría mejor cada una. Cómo detectarlo: si las 46 decisiones de la semana esperan su aprobación, o si las squads dicen "estamos esperando el OK del arquitecto" para cosas locales, es un dictador. Cómo corregirlo: separar las pocas de nivel arquitecto (las 7 que cruzan squads) de las muchas locales (las 39), poner guardrails claros para que las squads decidan las locales solas, y meterse solo en las 7. La calidad no viene de que el arquitecto apruebe todo; viene de buenos guardrails más squads capaces —y de que las decisiones locales las tome quien está más cerca del problema—.
Confundir habilitar con abandonar. Qué pasa: el arquitecto, al oír "no dictes", se va al otro extremo y desaparece —"decidan lo que quieran"— sin poner ningún guardrail, y las squads terminan tomando decisiones de nivel arquitecto (contratos entre servicios, elecciones de tecnología transversal) cada una por su lado, sin coherencia. Por qué pasa: interpreta "habilitar" como "ausentarse", cuando es lo contrario —habilitar es un trabajo activo de crear condiciones—. Cómo detectarlo: si cada squad eligió tecnologías incompatibles, o si los contratos entre servicios son un caos porque nadie sostuvo la vista transversal, el arquitecto abandonó en vez de habilitar. Cómo corregirlo: recordar que habilitar no es soltar el timón: es poner guardrails firmes (las decisiones de nivel arquitecto que sí toma) y dentro de ellos devolver la autonomía. El jardinero prepara la tierra y el riego; no se va del jardín.
Poner guardrails tan detallados que no dejan decidir. Qué pasa: el arquitecto cree que habilita porque "les di un marco", pero el marco es tan minucioso que la squad no tiene ninguna decisión real dentro de él —cada endpoint, cada nombre, cada estructura ya está dictada—. Por qué pasa: quiere el control del dictador pero con la etiqueta de habilitación, así que empaqueta las instrucciones como "guardrails". Cómo detectarlo: si dentro del "guardrail" a la squad no le queda espacio genuino de decisión, o si la squad siente que solo ejecuta órdenes con otro nombre, el guardrail es dictado disfrazado. Cómo corregirlo: poner el guardrail donde la decisión deja de ser local (afecta a otros) y ni un centímetro antes; definir el qué (el resultado, el atributo de calidad) y dejar el cómo a la squad. La prueba: ¿le queda a la squad decisión real dentro del carril? Si no, no es un guardrail; es una jaula.
Ejercicios
Ejercicio 1 — ¿Guardrail o dictado? Para cada una de estas indicaciones que un arquitecto de Mercado le da a las squads, di si es un buen guardrail (habilita) o un dictado disfrazado (ahoga), y por qué: (a) "todos los servicios internos se comunican por REST"; (b) "el endpoint de catálogo debe llamarse exactamente /v2/catalog/items y devolver estos 14 campos en este orden"; (c) "cada servicio debe cumplir un SLO de 99.9% de disponibilidad y menos de 200ms de latencia p99"; (d) "usen la librería de logging que yo elegí, configurada exactamente así, sin cambios".
Ver solución
- (a) Buen guardrail. Define el qué (REST para la comunicación interna) y deja el cómo a cada squad (cómo diseña sus recursos, su versionado, sus respuestas). Pone la frontera donde la decisión afecta a otros —la interoperabilidad entre servicios— y deja el resto abierto. Habilita.
- (b) Dictado disfrazado. No deja ninguna decisión real a la squad de
catalog: el nombre exacto, los campos, el orden, todo está fijado. Es la torre de marfil pintada de guardrail. A menos que ese endpoint sea un contrato público consumido por muchos (donde el detalle sí importa a otros), esto ahoga. La squad decatalogsabe mejor que el arquitecto cómo estructurar su recurso. - (c) Buen guardrail, del mejor tipo. Define el resultado que importa (el atributo de calidad: disponibilidad y latencia) y deja completamente abierto el cómo lograrlo. La squad puede elegir cache, réplicas, lo que sea, mientras cumpla el SLO. Es el guardrail ideal: firme en el qué, libre en el cómo.
- (d) Dictado disfrazado. "Configurada exactamente así, sin cambios" no deja decisión. Un guardrail habilitante sería "emitan logs estructurados en JSON con estos campos mínimos para que la observabilidad transversal funcione" —define el qué (interoperabilidad de logs) y deja que la squad elija la librería y el resto—. Fijar la librería y su config exacta es control, no habilitación.
Ejercicio 2 — El arquitecto que no tolera lo distinto. Un arquitecto de Mercado puso buenos guardrails, pero cada vez que una squad decide algo dentro del carril de una forma distinta a como él lo habría hecho, reabre la decisión y la cambia a su preferencia. Explica por qué, aunque los guardrails eran buenos, este arquitecto sigue dictando, y qué le enseña esto a las squads.
Ver solución
Los guardrails eran buenos en el papel, pero al reabrir cada decisión que queda dentro de ellos, el arquitecto vacía la autonomía de contenido. Un guardrail solo habilita si la squad puede confiar en que, mientras se quede dentro del carril, su decisión se respeta. Si el arquitecto cambia decisiones que ya estaban dentro del carril solo porque él las habría hecho distinto, el guardrail es una ilusión: la frontera real de decisión no es el carril, es "lo que al arquitecto le parezca". Eso es dictar, con guardrails de decorado.
Lo que esto le enseña a las squads es devastador para su capacidad: aprenden que su autonomía es falsa, que decidir es inútil porque el arquitecto va a rehacerlo, y que lo seguro es preguntar antes de decidir —o no decidir en absoluto—. Se vuelven pasivas, el jardín de ayudantes que espera instrucciones. Y el arquitecto, sin darse cuenta, reconstruyó el cuello de botella que los guardrails debían eliminar: si toda decisión puede ser reabierta por él, toda decisión, en la práctica, vuelve a pasar por él.
La corrección es el músculo de la confianza que la lección describe: tolerar que una squad decida distinto y que esté bien, mientras la decisión esté dentro de los guardrails y funcione. Que sea distinta de su preferencia no es un defecto que corregir; es autonomía funcionando. El jardinero acepta que la planta crezca un poco a su manera. El arquitecto que solo tolera clones de sus propias decisiones no habilita; produce un equipo sin criterio que colapsa el día que él no está.
Ejercicio 3 — De dictador a jardinero, en concreto. Un arquitecto de Mercado revisa y aprueba personalmente las 46 decisiones semanales de las cinco squads, y está agotado. Quiere pasar al modelo jardinero. Describe los pasos concretos que daría para llegar de las 46 a las 7, sin caer en el otro extremo (abandonar).
Ver solución
Un camino concreto:
-
Clasificar las 46 por nivel. Aplicar el criterio de la lección 1: ¿cuáles cruzan squads, son caras de revertir, de radio amplio (nivel arquitecto), y cuáles son locales? El ejemplo sugiere que solo unas 7 son de nivel arquitecto; las 39 restantes son locales. Este diagnóstico es el punto de partida —no puedes soltar lo que no has identificado como soltable—.
-
Escribir los guardrails que cubren las 39 locales. Para cada tipo de decisión local recurrente, definir el carril dentro del cual la squad decide sola: "comunicación interna por REST", "Postgres como almacén primario", "estos SLOs", "logs en JSON con estos campos", "autenticación con el token compartido". Pocos, claros, estables, con su porqué. Estos guardrails son las decisiones de nivel arquitecto que sí toma —no está abandonando; está decidiendo el marco—.
-
Comunicar el traspaso explícitamente. Decirles a las squads: "de ahora en más, mientras se queden dentro de estos guardrails, deciden solas y no necesitan mi aprobación; solo suben lo que cruza squads o sale del carril". Sin esta comunicación, las squads seguirán preguntando por costumbre.
-
Tolerar y sostener. Cuando una squad decida algo local distinto de como él lo haría, no reabrirlo si está dentro del carril y funciona (el músculo del ejercicio 2). Y sostener los guardrails: si una squad se sale del carril, ahí sí interviene —pero para reforzar la frontera, no para dictar dentro de ella—.
El resultado es pasar de tocar 46 a tocar 7, sin abandonar: las 39 no quedaron sin gobierno, quedaron gobernadas por guardrails en vez de por aprobación caso por caso. La diferencia entre el jardinero y el que abandona es justamente el paso 2: el jardinero prepara la tierra (los guardrails); el que abandona se va sin prepararla. (La forma más profunda de este rediseño —cómo estructurar los equipos mismos para que la arquitectura deseada emerja— es la maniobra inversa de Conway del módulo 2.)
Resumen y siguiente paso
En esta lección instalaste el segundo verbo del arquitecto real: habilitar, no dictar. Viste, con el jardinero contra el que planta a mano, que confundir la propia experiencia con la obligación de decidir todo no escala más allá de una persona y vuelve pasivas a las squads, mientras que usar esa experiencia para crear condiciones —guardrails— hace florecer al equipo entero. Y lo mediste: de 46 decisiones semanales, el modelo jardinero deja que las squads resuelvan solas el 85% y sube al arquitecto solo el 15% que cruza squads. Habilitar no es soltar el timón: es poner guardrails firmes (el qué, con su porqué) y devolver la decisión local (el cómo) a quien está más cerca del problema —lo que además produce mejores decisiones y squads más capaces—.
Antes de avanzar deberías poder: explicar por qué el modelo dictador no escala y qué le hace a la capacidad de las squads; distinguir un buen guardrail (define el qué, claro, estable, con porqué) de un dictado disfrazado (fija el cómo, no deja decidir); y reconocer el músculo de tolerar decisiones distintas de las propias como parte de habilitar.
La lección 6 lleva esto a su conclusión medida. Si el arquitecto no habilita —si insiste en que todo pase por él— no solo produce squads pasivas: se convierte en un cuello de botella cuya cola de espera crece sin fin. Vamos a ejecutar la simulación marquesina del módulo: qué le pasa a las decisiones de Mercado cuando las 46 semanales pasan por un solo arquitecto con capacidad limitada, contra el modelo distribuido. El costo de coordinación, medido en tiempo de espera acumulado, con un número que no admite discusión.
Recursos
- Matthew Skelton y Manuel Pais, Team Topologies (IT Revolution, 2019) — el marco de los equipos habilitadores (enabling teams) y de las plataformas como productos que dan "caminos pavimentados" (guardrails). Es la fuente conceptual de esta lección; el módulo 2 lo usa a fondo. En inglés.
- Martin Fowler, "Who Needs an Architect?" (IEEE Software, 2003) — martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf. El "Architectus Oryzus" de Fowler —el que mentorea y habilita— frente al que decide todo, es exactamente el jardinero contra el dictador. En inglés.
- Gregor Hohpe, The Software Architect Elevator (O'Reilly, 2020), sobre el arquitecto como quien "vende opciones" y multiplica al equipo en vez de ser el único que decide. En inglés.
- Mark Richards y Neal Ford, Fundamentals of Software Architecture, 2ª ed. (O'Reilly, 2020), cap. 21–22 sobre efectividad del arquitecto y liderazgo de equipos técnicos: guiar por principios y guardrails en vez de por control directo. En inglés.