Módulo 4: Liderazgo técnico sin autoridad
5. Discrepar y comprometerse
Descripción
Al terminar esta lección vas a saber qué hacer en el momento más delicado del liderazgo sin autoridad: cuando el arquitecto discrepa de una decisión que el equipo va a tomar, y no puede (ni debe) imponerse. Este momento es una trampa doble. Por un lado, si el arquitecto cede siempre para no incomodar —traga su desacuerdo, no dice nada— entonces su criterio, que era una de las razones de su valor, deja de proteger al sistema: las decisiones malas pasan sin que nadie las cuestione. Por el otro, si el arquitecto bloquea cada decisión con la que no está de acuerdo —re-litiga, insiste, no deja avanzar hasta ganar— entonces se vuelve un freno peor que el cuello de botella, y quema la confianza que era su única palanca. La salida a la trampa tiene nombre y es el corazón de esta lección: disagree and commit —discrepar a fondo en la discusión y comprometerse de verdad con la decisión, aunque no sea la que uno quería—. No es ceder (sí discrepas, en serio) ni es bloquear (te comprometes, en serio); es la disciplina de separar el momento de discrepar del momento de ejecutar, y honrar los dos.
Esto importa porque la mayoría de los arquitectos falla en uno de los dos extremos, y los dos son caros de maneras distintas. El que cede es agradable y peligroso: el equipo lo quiere pero el sistema se degrada, porque la única voz con vista transversal se calla justo cuando debía hablar. El que bloquea es riguroso y tóxico: tiene razón a menudo pero nadie lo aguanta, porque convierte cada decisión en una batalla de desgaste. Y aquí está lo contraintuitivo que esta lección mide: discrepar-y-bloquear hace tanto daño como no discrepar en absoluto —el que bloquea frena tanto al equipo que el costo de sus objeciones (aunque sean correctas) supera su beneficio—. El disagree-and-commit es el punto medio que casi nadie practica bien porque exige algo psicológicamente difícil: comprometerse de verdad con una decisión que crees equivocada, sin sabotearla en silencio ni resucitar la discusión cada semana. Esta lección lo hace concreto y lo mide.
Conexión con el módulo: esta es la segunda de las cuatro prácticas, y la que protege el resto. La lección 2 dijo que la palanca es influir; la 3, que se paga de la confianza; la 4 hizo que llegaran pocas decisiones al arquitecto. Esta lección es sobre cómo comportarse en esas pocas cuando discrepa —porque discrepar mal quema la confianza (lección 3) que hace posible toda influencia (lección 2)—. Es también el freno contra el que la lección 4 no alcanza: los guardrailes evitan que el arquitecto sea el cuello de botella aprobando todo; disagree-and-commit evita que sea el cuello de botella bloqueando todo. Y prepara las dos que siguen: las load-bearing conversations (lección 6) son donde se discrepa bien (en privado, a fondo, antes de la junta), y el consenso (lección 7) es lo que se construye cuando el disagree-and-commit se hace bien y repetido. Si la lección 4 dijo "no seas la puerta que aprueba", esta dice "tampoco seas el muro que bloquea —discrepa y comprométete—".
El equipo de remo: se discute en la orilla, se rema junto en el agua
Piénsalo con un bote de remos con ocho remeros y un timonel. Antes de zarpar, en la orilla, hay una discusión legítima: ¿salimos por el canal de la izquierda, que es más corto pero con corriente en contra, o por el de la derecha, más largo pero con la corriente a favor? Cada remero opina, el timonel escucha, se debate a fondo —es el momento correcto para discrepar, y discrepar bien mejora la decisión—. En algún punto se decide: derecha. Y aquí viene lo que hace o rompe al equipo: una vez que el bote está en el agua, todos reman hacia la derecha —incluidos los que querían la izquierda—. Porque un bote de remos tiene una propiedad brutal: solo avanza si los ocho reman coordinados en la misma dirección. El remero que, resentido porque no ganó, sigue remando hacia la izquierda "para demostrar que tenía razón", no consigue ir a la izquierda —consigue que el bote gire en círculos, se atore, y no llegue a ningún lado—. Su desacuerdo, legítimo en la orilla, se vuelve sabotaje en el agua.
Ahora imagina el otro extremo. Un remero que nunca discrepa en la orilla —traga sus dudas, no dice que el canal derecho tiene un tronco atravesado que él vio ayer—. El bote sale por la derecha, choca con el tronco, y todos se preguntan por qué nadie avisó. Su silencio en la orilla, que parecía cooperación, fue en realidad una falla: se guardó la información que habría mejorado la decisión. Entre el remero que bloquea en el agua y el que se calla en la orilla, el bote está condenado de las dos formas —uno lo hace girar en círculos, el otro lo estrella contra el tronco—.
El remero sano hace las dos cosas en su momento: discrepa fuerte en la orilla (dice lo del tronco, defiende su canal, se asegura de que su objeción se escuche) y rema comprometido en el agua (una vez decidido, rema hacia donde el bote va, con toda su fuerza, aunque no fuera su elección). Eso es disagree-and-commit: la orilla es para discrepar, el agua es para comprometerse, y confundir los dos momentos —discrepar en el agua (sabotaje) o comprometerse antes de la orilla (silencio)— hunde el bote. El arquitecto es un remero con una voz que pesa más —su vista transversal es como haber visto el tronco—, y por eso su disciplina de discrepar-en-la-orilla-y-remar-en-el-agua importa aún más: si se calla, el bote pierde su mejor información; si bloquea en el agua, el bote más fuerte del río gira en círculos. Esta lección mide las tres conductas.
Ejemplo trabajado: el bloqueador, el que cede, y el que se compromete
Modelamos seis decisiones que las squads de Mercado van a tomar. El arquitecto discrepa en tres de ellas. De esas tres, una está de verdad mal —su objeción mejoraría el resultado— y dos son solo su preferencia (habría hecho otra cosa, pero la del equipo también es válida). Comparamos tres conductas del arquitecto midiendo el tiempo total en semanas para cerrar las seis decisiones, cuántas objeciones se expusieron, y cuántas de las decisiones malas se frenaron a tiempo.
# "Disagree and commit": discrepar en la discusion, comprometerse con la decision.
# Comparamos 3 conductas del arquitecto ante 6 decisiones de las squads.
# El arquitecto DISCREPA en 3 de las 6. De esas 3, 1 esta de verdad mal
# (su objecion mejoraria el resultado) y 2 son solo su preferencia.
DECISIONS = 6
DISAGREES = 3
FLAWED_AMONG_DISAGREES = 1 # de las 3 que objeta, 1 esta realmente mal
# semanas que tarda en cerrar una decision segun la conducta:
WEEKS_SMOOTH = 1 # decision sin friccion: se cierra en 1 semana
WEEKS_BLOCK = 4 # el arquitecto la re-abre una y otra vez
WEEKS_COMMIT = 2 # 1 semana para exponer la objecion a fondo, luego commit
def blocker():
# re-litiga cada decision que no le gusta; consume 4 semanas en cada una.
weeks = (DECISIONS - DISAGREES) * WEEKS_SMOOTH + DISAGREES * WEEKS_BLOCK
concerns_voiced = DISAGREES
flawed_caught = FLAWED_AMONG_DISAGREES
return weeks, concerns_voiced, flawed_caught
def pushover():
# nunca discrepa en voz alta: todo cierra en 1 semana, pero 0 objeciones.
weeks = DECISIONS * WEEKS_SMOOTH
concerns_voiced = 0
flawed_caught = 0 # la decision mala pasa sin bandera
return weeks, concerns_voiced, flawed_caught
def disagree_and_commit():
# expone la objecion UNA vez (a fondo), luego se compromete: 2 semanas.
weeks = (DECISIONS - DISAGREES) * WEEKS_SMOOTH + DISAGREES * WEEKS_COMMIT
concerns_voiced = DISAGREES
flawed_caught = FLAWED_AMONG_DISAGREES # la mala quedo en el registro y se mitiga
return weeks, concerns_voiced, flawed_caught
rows = [("BLOCKER", blocker()), ("PUSHOVER", pushover()),
("DISAGREE_COMMIT", disagree_and_commit())]
print(f"{DECISIONS} decisiones; el arquitecto discrepa en {DISAGREES} (1 de ellas de verdad mal).")
print()
print(f"{'behavior':<17}{'weeks':>7}{'concerns_voiced':>17}{'flawed_caught':>15}")
print("-" * 56)
for name, (w, c, f) in rows:
print(f"{name:<17}{w:>7}{c:>17}{f:>15}")
print()
print("BLOCKER : frena todo (15 sem) y quema al equipo re-litigando lo ya hablado.")
print("PUSHOVER: rapido (6 sem) pero calla la unica objecion que importaba -> mala en prod.")
print("DISAGREE_COMMIT: 9 sem, expone la objecion UNA vez, y se compromete aunque no gane.")
Qué esperar. Al correrlo:
6 decisiones; el arquitecto discrepa en 3 (1 de ellas de verdad mal).
behavior weeks concerns_voiced flawed_caught
--------------------------------------------------------
BLOCKER 15 3 1
PUSHOVER 6 0 0
DISAGREE_COMMIT 9 3 1
BLOCKER : frena todo (15 sem) y quema al equipo re-litigando lo ya hablado.
PUSHOVER: rapido (6 sem) pero calla la unica objecion que importaba -> mala en prod.
DISAGREE_COMMIT: 9 sem, expone la objecion UNA vez, y se compromete aunque no gane.
Lee las tres filas como los tres arquitectos que podrías ser, porque el punto está en que el correcto no es ni el más rápido ni el más riguroso.
El BLOCKER consigue lo que parece el objetivo —expone las 3 objeciones y frena la única decisión que estaba mal (flawed_caught = 1)— pero mira el costo: 15 semanas para cerrar seis decisiones. Cada decisión con la que discrepa la re-litiga (4 semanas cada una en vez de 1), porque no se compromete: insiste, la reabre, la vuelve a discutir en la siguiente reunión, no deja avanzar hasta ganar o agotar a todos. Y el número de semanas subestima el daño real, porque no mide lo que la lección 3 mediría: cada re-litigación gasta confianza. El equipo empieza a evitar al arquitecto, a no invitarlo a las discusiones "para que no las trabe", y su vista transversal —que era valiosa— se vuelve un peaje que todos quieren esquivar. El bloqueador tiene razón a menudo y aun así pierde, porque el costo de su forma de tener razón supera el beneficio de sus aciertos.
El PUSHOVER es el opuesto y su trampa es que se ve bien en la primera columna: 6 semanas, el más rápido de los tres —todo fluye porque nunca objeta nada—. Pero mira las otras dos columnas: concerns_voiced = 0 y flawed_caught = 0. El que cede no expuso ninguna objeción, así que la única decisión que estaba de verdad mal pasó sin bandera y llegó a producción. Su velocidad es falsa: cerró seis decisiones rápido, pero una de ellas era una bomba que su silencio dejó armar. El costo no aparece en las 6 semanas; aparece después, cuando la decisión mala explota y alguien pregunta "¿el arquitecto no vio esto venir?" —y sí lo vio, y se calló—. El pushover cambia el conflicto de corto plazo por el desastre de largo plazo.
El DISAGREE_COMMIT es el punto medio, y hay que leer sus números con cuidado porque su virtud está en el balance, no en ganar ninguna columna. 9 semanas: más lento que el pushover (6) pero mucho más rápido que el bloqueador (15). concerns_voiced = 3: expuso las tres objeciones, igual que el bloqueador —no se calló nada—. flawed_caught = 1: frenó la decisión que estaba mal, igual que el bloqueador —su vista transversal protegió al sistema donde importaba—. La diferencia con el bloqueador está en cómo discrepó: expuso cada objeción una vez, a fondo (por eso 2 semanas por decisión, no 1: hay una discusión real), y luego se comprometió con lo decidido —sin re-litigar, sin sabotear—. Consiguió el beneficio del bloqueador (todas las objeciones oídas, la falla frenada) sin su costo (no frenó todo, no quemó al equipo). Y superó al pushover donde importa: la decisión mala no pasó, porque él sí habló.
Aquí está la lección hecha número, y desarma la falsa disyuntiva: no tienes que elegir entre proteger el sistema (bloquear) y no frenar al equipo (ceder) —disagree-and-commit hace las dos cosas—. El bloqueador cree que la única forma de que su objeción cuente es no ceder nunca; el pushover cree que la única forma de no frenar es no objetar nunca. Los dos están atrapados en la misma falsa disyuntiva: creen que discrepar y comprometerse son incompatibles. No lo son. Puedes exponer tu objeción con toda la fuerza (discrepar) y, si la decisión se toma en tu contra, remar hacia donde va el bote (comprometerte). El disagree-and-commit separa los dos momentos —la orilla y el agua— y honra los dos: discrepa cuando toca discutir, se compromete cuando toca ejecutar. Las 9 semanas contra las 15 del bloqueador son lo que cuesta esa disciplina, y contra el 1 flawed que el pushover dejó pasar, es lo que vale.
Un matiz honesto sobre el modelo. Los números de semanas (1, 2, 4) son ilustrativos, y el modelo no captura el mayor costo del bloqueador —la confianza quemada, que la lección 3 sí modela— ni el mayor costo del pushover —la magnitud del desastre de la decisión mala en prod, que puede ser enorme—. Es decir, el modelo es conservador con los dos extremos: en la realidad, el bloqueador es peor que 15 semanas (porque además se queda sin influencia) y el pushover es peor que "1 flawed" (porque esa 1 puede costar un incidente mayor). El disagree-and-commit gana por más de lo que el modelo muestra. Lo que el modelo sí captura limpio es la forma: el punto medio no es un promedio tibio entre bloquear y ceder; es una tercera cosa —discrepar y comprometerse— que toma lo bueno de cada extremo y deja lo malo.
Profundización: qué es y qué no es disagree and commit
La frase viene de la carta de Jeff Bezos a los accionistas de Amazon en 2016, donde la propone como una herramienta para tomar decisiones rápido sin sacrificar el desacuerdo honesto. Vale la pena desarmarla porque es fácil de citar y difícil de practicar, y casi todos la malinterpretan en una de dos direcciones.
No es ceder disfrazado. El error más común es usar "disagree and commit" como una forma elegante de rendirse: "bueno, no estoy de acuerdo, pero me comprometo" dicho sin haber discrepado de verdad —sin exponer la objeción a fondo, sin dar la información, sin defender la posición—. Eso es el pushover con una frase bonita encima. El disagree-and-commit exige el disagree real: Bezos es explícito en que primero hay que expresar el desacuerdo con toda la fuerza, dar los argumentos, asegurarse de que la objeción se escuchó y se entendió. El compromiso viene después de una discrepancia genuina, no en lugar de ella. Si no discrepaste de verdad, no estás haciendo disagree-and-commit; estás cediendo.
No es "commit" con los dedos cruzados. El otro error es fingir el compromiso: decir "me comprometo" y luego sabotear en silencio —ejecutar a media máquina, recordarle a todos "yo dije que esto no iba a funcionar", resucitar la discusión en cada retrospectiva, esperar a que falle para decir "se los dije"—. Eso es el bloqueador escondido detrás del compromiso verbal, y es peor que el bloqueo abierto porque es deshonesto. El commit real significa remar hacia donde va el bote con toda tu fuerza —darle a la decisión ajena la mejor oportunidad de funcionar, incluso trabajar para que funcione mejor de lo que hubiera funcionado tu propia opción—. Bezos lo dice sobre un caso propio: no estaba convencido de un proyecto, dijo "disagree and commit", y luego lo apoyó por completo —no a regañadientes—. El compromiso a medias no es compromiso.
Por qué funciona: separa la calidad de la decisión de la velocidad de ejecución. El genio de la fórmula es que resuelve una tensión que parece irresoluble. Quieres decisiones de alta calidad (que requieren desacuerdo honesto, gente que diga "creo que esto está mal") y ejecución rápida (que requiere que, una vez decidido, todos empujen en la misma dirección). Parecen incompatibles: si dejas que la gente discrepe, ¿no se frena todo? El disagree-and-commit los reconcilia poniéndolos en momentos distintos: discrepa en la fase de decisión, comprométete en la fase de ejecución. La orilla y el agua. Así consigues la calidad (el desacuerdo mejoró la decisión) y la velocidad (una vez decidida, nadie la sabotea). La decisión mala se frena en la orilla (porque alguien discrepó a fondo); la decisión tomada avanza sin fricción en el agua (porque todos se comprometieron).
El caso especial del arquitecto: cuándo el disagree debe escalar en vez de commit. Hay un matiz que la fórmula de Bezos, pensada para decisiones normales, no cubre del todo, y el arquitecto tiene que conocerlo. Disagree-and-commit aplica a las decisiones donde el desacuerdo es de preferencia o de criterio razonable —las dos de las tres del ejemplo donde la opción del equipo también era válida—. Pero hay un tipo raro de decisión donde comprometerse sería irresponsable: cuando el arquitecto ve un riesgo grave, irreversible y que el equipo no está viendo —"esto va a exponer datos de clientes", "esto nos deja sin forma de revertir si falla en Black Friday"—. En esos casos, disagree-and-commit no es "comprométete con lo que crees que es un desastre"; es discrepar y escalar —llevar la objeción, con datos, a quien sí tiene la autoridad para pararla (el manager, el comité), de forma transparente y una sola vez—. La diferencia con el bloqueo es que escalar es un movimiento único y abierto (planteas el riesgo grave al nivel correcto y aceptas su veredicto), no una re-litigación perpetua. La regla: comprométete con las decisiones que son distintas de las tuyas pero no catastróficas; escala (una vez, transparente) las que son genuinamente peligrosas e irreversibles. Confundir las dos —escalar cada preferencia (bloqueo) o comprometerse con un desastre visible (negligencia)— es el error. El disagree-and-commit es para el desacuerdo normal, que es la inmensa mayoría; el escalamiento es para el riesgo grave, que es raro.
Errores comunes
Ceder sin discrepar y llamarlo "disagree and commit" (de pushover disfrazado). Qué pasa: el arquitecto traga su objeción para no incomodar, dice "me comprometo" sin haber dicho por qué discrepaba, y la decisión mala pasa sin bandera. Por qué pasa: evitar el conflicto se siente cooperativo, y "disagree and commit" da una excusa noble para callarse. Cómo detectarlo: si te "comprometes" con decisiones sin haber expuesto tus objeciones a fondo primero, no estás haciendo la fórmula —estás cediendo—. Cómo corregirlo: el disagree es obligatorio y va primero; expón la objeción con toda la fuerza, da los datos, asegúrate de que se escuchó, y entonces comprométete si la decisión va en tu contra. Sin el disagree real, el commit no vale.
Comprometerse de boca y sabotear en silencio (de bloqueo encubierto). Qué pasa: el arquitecto dice "me comprometo" y luego ejecuta a media máquina, recuerda "yo dije que no iba a funcionar", y espera a que falle para cobrarse el "se los dije". Por qué pasa: no aceptó de verdad la decisión, pero el bloqueo abierto está mal visto, así que bloquea por debajo. Cómo detectarlo: si tu compromiso viene con reservas dichas a terceros, con esfuerzo a medias, o con ganas secretas de que la decisión falle para tener razón, es bloqueo encubierto. Cómo corregirlo: el commit real es remar con toda la fuerza hacia donde va el bote —darle a la decisión ajena la mejor oportunidad, incluso mejorarla—; si de verdad no puedes comprometerte porque el riesgo es grave e irreversible, no sabotees: escala abiertamente una vez y acepta el veredicto.
Re-litigar cada preferencia como si fuera un riesgo grave (de bloqueador crónico). Qué pasa: el arquitecto trata cada decisión con la que discrepa como si fuera catastrófica, la reabre una y otra vez, y frena al equipo por diferencias que eran de mero criterio. Por qué pasa: confunde "yo lo habría hecho distinto" con "esto es un desastre"; no distingue la preferencia del riesgo real. Cómo detectarlo: si escalas o bloqueas la mayoría de tus desacuerdos, y la mayoría resultan ser preferencias tuyas que también funcionaban, eres el bloqueador crónico. Cómo corregirlo: reservar el bloqueo/escalamiento para el riesgo grave, irreversible y no visto (raro) y comprometerte con todo lo demás (la mayoría); preguntarte antes de bloquear "¿esto es un desastre o es que yo lo habría hecho distinto?" —si es lo segundo, discrepa una vez y comprométete—.
Ejercicios
Ejercicio 1 — ¿Commit o escalar? Para cada desacuerdo del arquitecto, di si corresponde disagree-and-commit (discrepar y comprometerse) o discrepar-y-escalar (llevar la objeción al nivel con autoridad), y por qué: (a) la squad de catalog decidió usar una cola de mensajes distinta a la que el arquitecto habría elegido, ambas maduras y probadas; (b) la squad de payments decidió guardar los números de tarjeta completos en su base de datos sin cifrar, para "simplificar"; (c) la squad de orders decidió un estilo de nombres de endpoints que al arquitecto le parece feo pero es consistente internamente.
Ver solución
-
(a) Cola de mensajes distinta, ambas maduras → disagree-and-commit. Es un desacuerdo de preferencia razonable: la opción del equipo también es válida y probada, y el costo de equivocarse es bajo y reversible (se puede cambiar la cola después si hace falta). El arquitecto expone por qué habría elegido la otra (una vez, con sus razones), y si la squad se queda con la suya, se compromete —rema hacia allá—. Bloquear esto sería el bloqueador crónico gastando confianza en una preferencia.
-
(b) Guardar tarjetas completas sin cifrar → discrepar-y-escalar. Esto no es preferencia; es un riesgo grave (exposición de datos sensibles, probable violación de PCI-DSS y de la ley), y potencialmente irreversible (si hay una brecha, el daño está hecho). Comprometerse con esto sería negligencia. El arquitecto discrepa con datos (el estándar de seguridad, el riesgo legal) y, si la squad insiste, escala —lleva la objeción al manager o al responsable de seguridad, de forma transparente y una vez—. No es bloqueo perpetuo; es plantear un riesgo real al nivel que puede pararlo.
-
(c) Estilo de nombres feo pero consistente → disagree-and-commit (o ni siquiera disagree). Es la preferencia más pura: al arquitecto le parece feo, pero es consistente internamente y no tiene consecuencias técnicas. Aquí casi ni vale la pena discrepar —gastar confianza en esto es malísima inversión—. Si acaso, un comentario suave ("yo usaría otra convención, pero la suya es consistente, adelante"), y comprometerse. Bloquear por estética es el arquetipo del bloqueador que quema su saldo en menudencias (lección 3).
La regla: escala solo el riesgo grave, irreversible y no visto por el equipo (raro: caso b); comprométete con todo lo que es preferencia o criterio razonable (la mayoría: casos a y c). Confundirlos —escalar la estética o comprometerte con la brecha de seguridad— es el error.
Ejercicio 2 — El costo oculto del bloqueador. El modelo dice que el bloqueador tarda 15 semanas contra las 9 del disagree-and-commit, y que ambos frenan la misma decisión mala (1) y exponen las mismas objeciones (3). Un arquitecto concluye: "entonces el bloqueador es solo un 66% más lento, pero consigue lo mismo; no es para tanto". ¿Qué costo no está capturando el modelo que hace que el bloqueador sea mucho peor de lo que las 15 semanas sugieren?
Ver solución
El modelo captura el costo en tiempo (15 contra 9 semanas) pero no captura el costo en confianza, que es el que de verdad hunde al bloqueador —y que la lección 3 sí modela—. Cada vez que el bloqueador re-litiga una decisión ya discutida, hace un retiro de su cuenta de confianza con el equipo: los agota, los frustra, y les enseña que traer una decisión al arquitecto significa una batalla de semanas. Las consecuencias, ninguna visible en las 15 semanas:
-
El equipo empieza a evitarlo. Dejan de invitarlo a las discusiones "para que no las trabe", toman decisiones sin él, y su vista transversal —que era su valor— deja de aplicarse justo en las decisiones que más la necesitaban. El bloqueador se auto-excluye del sistema que quería proteger.
-
Su saldo se agota para las batallas que importan. Gastó tanta confianza bloqueando preferencias que, cuando llega la decisión de verdad grave (el riesgo irreversible que sí debía escalar), ya nadie lo escucha —"otra vez este bloqueando"—. El bloqueador crónico pierde credibilidad justo para el caso donde su objeción era vital.
-
La medición subestima ambos lados. Como notó el matiz de la lección, el modelo es conservador: el bloqueador es peor que 15 semanas (porque además se queda sin influencia futura), no solo un poco más lento. Las 15 semanas son la punta visible; debajo está la carrera del arquitecto quemándose.
Así que "solo 66% más lento" es leer la única columna que el modelo muestra e ignorar la que no muestra. El bloqueador no paga su costo en semanas; lo paga en la confianza que era su única palanca —y sin ella, ni siquiera sus objeciones correctas mueven al equipo (lección 3)—. El disagree-and-commit no es "un poco más rápido"; es sostenible, y el bloqueo no lo es.
Ejercicio 3 — Practica el commit real. El arquitecto discrepó de que orders construyera su propia solución de caché en vez de usar la compartida. Expuso sus razones a fondo (más código que mantener, riesgo de inconsistencias), pero la squad, tras escucharlo, decidió construir la propia por razones que también son válidas (necesidades específicas de su caso). No es un riesgo grave ni irreversible. Describe qué es un "commit real" aquí en acciones concretas, y qué sería un "commit falso" (bloqueo encubierto) que el arquitecto debe evitar.
Ver solución
Commit real (lo que debe hacer):
- Aceptar la decisión en voz alta y sin reservas ante la squad: "expuse mis dudas, ustedes decidieron con buenas razones, vamos con la caché propia y le doy todo mi apoyo". Sin "pero que conste que yo..." ni reservas para el acta.
- Ayudar a que su caché propia sea la mejor posible. Como discrepaba precisamente por los riesgos (mantenimiento, inconsistencias), el commit real es poner ese conocimiento al servicio de la decisión ajena: ayudarlos a diseñar la caché para minimizar justo esos riesgos que él veía —revisar el diseño para evitar las inconsistencias, sugerir cómo acotar el mantenimiento—. Su objeción, en vez de un "no", se convierte en un aporte que hace mejor la opción que él no eligió.
- No resucitar la discusión. No volver a plantear "deberíamos haber usado la compartida" en cada retrospectiva ni cada vez que la caché propia tenga un problema. La decisión se tomó; el momento de discrepar (la orilla) ya pasó; ahora se rema (el agua).
- Registrar el porqué, sin rencor. Si acaso, un ADR neutro que documente que se evaluó la caché compartida y se eligió la propia por tales razones —para el futuro, no para cobrarse el "se los dije"—.
Commit falso (bloqueo encubierto, lo que debe evitar):
- Decir "me comprometo" y luego darle a la caché propia el mínimo esfuerzo, o negarse a ayudar ("es su decisión, que se las arreglen").
- Recordarle a la gente, cada vez que surge un bug de la caché, que "yo dije que esto pasaría".
- Esperar (y en el fondo desear) que la caché propia falle, para tener razón.
- Traer el tema de vuelta en cada reunión hasta desgastar a la squad para que "reconsidere".
La diferencia de fondo: el commit real le da a la decisión ajena la mejor oportunidad de funcionar —incluso trabaja para que funcione mejor de lo que habría funcionado sin su ayuda—; el commit falso trabaja, consciente o inconscientemente, para que la decisión ajena fracase y valide al arquitecto. Uno rema hacia donde va el bote con toda su fuerza; el otro rema disimuladamente hacia atrás. Y el commit real tiene un beneficio de confianza enorme (lección 3): un arquitecto que discrepa a fondo y luego apoya de verdad la decisión contraria se gana un respeto que ningún "tenía razón" le daría.
Resumen y siguiente paso
En esta lección aprendiste la segunda práctica del liderazgo sin autoridad: disagree and commit —discrepar a fondo y comprometerte con la decisión aunque no ganes—. Con el equipo de remo viste que la orilla es para discrepar (di lo del tronco, defiende tu canal) y el agua es para comprometerse (una vez decidido, rema hacia allá con todos), y que confundir los momentos hunde el bote —discrepar en el agua es sabotaje, callarse en la orilla es una falla—. Y lo mediste ejecutando: sobre seis decisiones, el bloqueador frena todo (15 semanas) y quema al equipo, el que cede es rápido (6 semanas) pero deja pasar la decisión mala sin bandera, y el disagree-and-commit (9 semanas) consigue lo bueno de los dos —expone las tres objeciones, frena la que estaba mal, y no frena al equipo— porque separa discrepar de ejecutar. Entendiste qué no es la fórmula (ni ceder disfrazado ni comprometerse con los dedos cruzados), por qué funciona (separa calidad de decisión de velocidad de ejecución), y el caso especial del arquitecto: escalar —una vez, transparente— el riesgo grave e irreversible, comprometerse con todo lo demás.
Antes de avanzar deberías poder: explicar por qué el bloqueador y el que cede fallan de formas opuestas pero igual de caras; distinguir un commit real de un bloqueo encubierto; distinguir cuándo comprometerse de cuándo escalar; y explicar por qué el costo real del bloqueador no está en las semanas sino en la confianza.
Lo que sigue es dónde ocurre todo esto —dónde se discrepa bien, dónde se construye la confianza, dónde se decide de verdad—. En la lección 6 vas a ver las load-bearing conversations: el pasillo, el 1:1 técnico, la revisión de diseño, las conversaciones que sostienen la arquitectura como las vigas que sostienen una casa. Vas a medir por qué una decisión que alinea a cinco squads se aplaza cuando se plantea en frío en una junta grande y se decide cuando se pre-acordó en los 1:1 previos —por qué la junta solo ratifica lo que ya se sostuvo en las conversaciones—. Es el paso de "sé discrepar y comprometerme" a "sé en qué conversaciones eso de verdad ocurre".
Recursos
- Jeff Bezos — Carta a los accionistas de Amazon 2016 — la fuente de "disagree and commit": Bezos explica la herramienta con su propio ejemplo de comprometerse con un proyecto del que no estaba convencido. Corta y directa; el origen de esta lección.
- L. David Marquet — Turn the Ship Around! — sobre cómo se construyen decisiones donde la gente discrepa con seguridad y luego ejecuta comprometida; el liderazgo que invita el desacuerdo honesto sin perder la coordinación.
- Will Larson — Staff Engineer — sobre cómo el ingeniero senior elige sus batallas y sostiene desacuerdos sin volverse un bloqueador; la aplicación práctica de disagree-and-commit al rol técnico sin autoridad.
- Martin Fowler — Software Architecture Guide — material sobre la toma de decisiones de arquitectura en equipo y por qué el arquitecto efectivo cultiva el desacuerdo productivo en vez de imponerse; buen contexto conceptual sobre decidir con otros.