Stefan abre tres semanas de historial de pull requests y encuentra aprobaciones que llegaron más rápido de lo que cualquiera podría haber leído el código. Daniel defiende su proceso de revisión. Mariana muestra las reacciones con emojis que pasan por retroalimentación. Hassan pone junto a ellas los fallos de producción que siguieron a las fusiones aprobadas sin leer. Stefan elige un PR reciente y sienta al equipo para leerlo juntos. Lo que descubren en la última gran contribución de Tomasz es conocimiento que nadie capturó y preguntas que nadie hizo. En su último día, Tomasz se va con el mismo hoodie gris con el que llegó. El code review que no fue un review se convierte en la razón por la que podrían sobrevivir sin él.
Stefan llevaba cuarenta minutos en su escritorio antes de que alguien más se sentara.
El café estaba frío. No se había dado cuenta.
Estaba recorriendo tres semanas de historial de pull requests en GitHub, y el patrón era tan limpio que parecía intencional.
Cuarenta y siete pull requests fusionados en veintiún días.
Tiempo promedio desde la apertura hasta la aprobación: seis minutos.
El más rápido: noventa y tres segundos. Un diff de doscientas líneas. Aprobado antes de que hirviera el agua.
Stefan los recorrió uno por uno. Su cuaderno se llenaba de números, no de opiniones. No estaba construyendo un caso. Estaba documentando un hábito.
Los hilos de comentarios se leían como un chat grupal. 👍. “LGTM.” “Looks good 👀.” Uno decía “nice” sin contexto adicional. Otro tenía un emoji de fuego y nada más. Tres tenían exactamente el mismo comentario de la misma persona: “No issues found.”
Encontró cuatro PRs con cero comentarios. Abiertos, aprobados, fusionados. Tres clics. Sin preguntas. Sin conversación. Sin evidencia de que un humano hubiera leído una sola línea.
Encontró uno con un comentario de Mariana: doce líneas explicando por qué el enfoque de codificación fallaría con caracteres de locale turco. La respuesta del autor fue “fixed,” sin un diff que mostrara qué cambió. El PR se fusionó diecisiete minutos después. El bug del locale turco llegó a producción el jueves siguiente.
El estómago de Stefan se contrajo. No por el bug. Por las doce líneas que Mariana había escrito y que nadie leyó. Alguien en el equipo había visto el problema. Había redactado la advertencia en prosa precisa y cuidadosa. Y el proceso se la había tragado sin pestañear.
Stefan cerró la tapa del laptop.
Abrió su cuaderno y escribió una frase. La subrayó.
El proceso de revisión existe. La revisión no.
Esperó.
Daniel llegó a las 09:38. El Moleskine colocado en el ángulo exacto que ocupaba cada mañana. Café posicionado a la derecha. Bolígrafo destapado.
Stefan lo dejó acomodarse.
“¿Cuántos pull requests aprobaste la semana pasada?” preguntó Stefan.
La taza de café de Daniel se detuvo a medio camino de su boca.
“Tenemos un proceso de revisión riguroso,” dijo.
“Eso no fue lo que pregunté.”
Daniel puso la taza. Los lentes de alambre atraparon la luz.
“Doce,” dijo. “Quizás catorce.”
“¿En cuántas horas?”
El silencio se extendió.
“Reviso de manera eficiente,” dijo Daniel.
Su pulso se aceleró. Podía sentir cómo la conversación se estrechaba, cada pregunta cerrando otra salida. La nuca le ardía.
Stefan giró su laptop.
“Este tiene doscientas treinta y siete líneas de configuración de infraestructura,” dijo. “Lo aprobaste en cuatro minutos.”
Daniel miró la pantalla.
“La descripción era clara,” dijo.
“¿Leíste el diff?”
La boca de Daniel se abrió. Se cerró. Se abrió de nuevo.
“Leí las secciones relevantes,” dijo.
“En cuatro minutos.”
La mandíbula de Daniel se tensó. El cuaderno en su escritorio de repente parecía utilería.
Lo sabía. En algún lugar bajo el lenguaje defendible y el proceso eficiente, lo sabía. Cuatro minutos no era una revisión. Cuatro minutos era una firma en un formulario que nadie lee. La garganta se le cerró.
Mariana apareció en la pared de vidrio. Tank top de Converge, cut-offs deshilachados, descalza sobre la alfombra a pesar del fresco matinal. Había escuchado todo. No lo escondía.
“Aprobó el mío en noventa y tres segundos el martes pasado,” dijo. “Le tomé el tiempo.”
La cara de Daniel se puso rosada.
“Fue un cambio pequeño,” dijo.
“Eran doscientas líneas,” dijo Mariana.
“Pequeño en alcance,” corrigió Daniel.
“Claro.” Mariana se apoyó contra el marco. “Y el bug del locale turco que se desplegó la misma semana también era pequeño en alcance. Hasta que llegó a cuatro mil jugadores en Estambul.”
Daniel miró su Moleskine. El número le pesaba en el pecho. Cuatro mil jugadores. Había hecho clic en aprobar, había vuelto a su diagrama de arquitectura, y cuatro mil personas recibieron software roto porque confió en una descripción en vez de leer el código.
Hassan se materializó detrás de Mariana. Auriculares en el cuello. Ojeras. El cuerpo delgado de un hombre que sobrevivía con döner y cuatro horas de sueño. No dijo nada por un momento.
Las manos de Hassan estaban firmes. Siempre lo estaban. Incluso a las 23:40 un viernes, solo en la oficina, revirtiendo el error de otro, sus manos no temblaban. El resto de él se estaba cayendo a pedazos, pero sus manos se mantenían firmes. Había dejado de enojarse dos incidentes atrás. Ahora solo guardaba los recibos.
“Puedo mostrarte algo,” dijo.
Nadie preguntó qué.
Se sentó y abrió su laptop. Tres incidentes de producción de las últimas dos semanas. Los puso junto a los pull requests correspondientes, lado a lado en la pantalla.
PR #1843: Aprobado en seis minutos. Cero comentarios. Rompió el pipeline de notificaciones de recompensas el viernes por la noche. Hassan lo arregló solo a las 23:40.
PR #1851: Aprobado en cuatro minutos. Un emoji 👍 de Daniel. Introdujo una fuga de memoria en el manejador de sesiones de jugadores. Tardó tres días en diagnosticarse.
PR #1867: Aprobado en once minutos. Dos comentarios “LGTM”. Cambió una estrategia de caché que triplicó los costos de base de datos durante el fin de semana.
Hassan no editorializó. Solo mostró los recibos.
Los ojos de Daniel se movían entre los incidentes y las aprobaciones como alguien buscando una conexión que pudiera negar.
“Son problemas separados,” dijo.
“Del mismo proceso,” dijo Stefan.
La mano de Daniel se movió hacia su Moleskine. El reflejo de un hombre que escribe cosas cuando no sabe qué decir.
Algo detrás de sus costillas se movió. No visiblemente. Solo la fractura silenciosa de un hombre viendo cómo la evidencia desmantelaba un sistema del que había estado orgulloso. Había mencionado su proceso de revisión en su última evaluación de desempeño. Riguroso. Consistente. Documentado. Las palabras sabían diferente ahora.
“Las revisiones ocurrieron,” dijo Daniel.
La voz de Stefan se mantuvo neutral.
“Las aprobaciones ocurrieron,” dijo. “Las revisiones no.”
La luz de la mañana se desplazó. Alguien en el área abierta se rió de algo en su teléfono. El aire acondicionado arrancó por primera vez en la primavera.
Daniel se quedó muy quieto.
“¿Qué quieres que haga?” preguntó.
Stefan cerró su cuaderno.
“Quiero que leas el código de alguien,” dijo. “Con esa persona. En voz alta. Miércoles por la tarde. Sin laptop, sin Moleskine, sin botón de aprobar. Solo el diff y quien lo haya escrito.”
La cara de Daniel hizo algo complicado.
“Eso es pairing,” dijo. “Lo hicimos la semana pasada.”
“La semana pasada escribimos código juntos,” dijo Stefan. “Esta semana lo leemos juntos. Músculo diferente.”
Mariana se despegó del marco de la puerta.
“Yo elijo el PR,” dijo.
Daniel abrió la boca para objetar.
Mariana ya se había ido. Pies descalzos. Silenciosa sobre la alfombra.
Mariana eligió el PR #1839.
No porque estuviera roto.
Porque era importante.
Tomasz lo había enviado tres semanas antes. Una refactorización de la lógica de recuperación ante fallos del despliegue. La parte del sistema que decide qué pasa cuando un despliegue se tuerce a las 02:00 y nadie contesta en Slack.
Ciento sesenta y dos líneas cambiadas. Siete archivos tocados. Aprobado en ocho minutos por Daniel y Anton.
“Díganme qué hace esto,” dijo Stefan a la sala.
Nadie habló.
Mariana recorrió el diff. Sus ojos se movían rápido. Su ceño se frunció.
“Cambió la lógica de reintentos,” ofreció.
“¿Cómo?”
Siguió desplazándose. El ceño se profundizó.
“No estoy segura,” dijo.
Daniel miró su Moleskine como si la respuesta pudiera estar escondida entre las notas de la semana pasada.
“La descripción dice ‘refactorizar secuencia de recuperación’,” leyó.
“La descripción puedo leerla yo,” dijo Stefan. “Quiero saber qué hace el código.”
Hassan se inclinó sobre la mesa y jaló el diff a su pantalla. Sus dedos se movieron por los archivos con la velocidad precisa de alguien que vive en infraestructura. Sus ojos se fijaron en algo que los demás habían pasado de largo.
“Agregó un disyuntor de protección,” dijo Hassan. Callado. Preciso.
La cabeza de Mariana giró.
“¿Dónde?”
Hassan señaló.
Tres líneas enterradas dentro de un bucle de reintentos. Un contador que rastreaba fallos consecutivos. Si el conteo llegaba a cinco, el despliegue se abortaba y revertía en lugar de seguir golpeando un endpoint muerto.
“Eso no está en la descripción,” dijo Mariana.
“No,” dijo Hassan.
Stefan no sonrió.
“¿Alguien sabe por qué el umbral está en cinco?” preguntó.
Nadie respondió.
“¿Alguien sabe qué pasa si alguien lo cambia a tres? ¿O a diez? ¿O lo elimina por completo?”
Silencio. El aire acondicionado empujó aire frío por la caja de vidrio.
“Esto es un disyuntor que protege el entorno de producción de fallos en cascada durante los despliegues,” dijo Stefan. “Existe porque Tomasz lo escribió. El número cinco existe porque Tomasz lo eligió. Y nadie en esta sala puede decirme por qué.”
El bolígrafo de Daniel había dejado de moverse.
“Podríamos preguntarle,” dijo.
Stefan asintió una vez.
“Por dos días más.”
El peso del viernes cayó sobre la mesa como una piedra lanzada desde altura.
Tomasz se iba el viernes. Dos días. Después de eso, el hombre que escribió el disyuntor que mantenía viva la producción estaría escribiendo código en un estudio de quince personas por treinta por ciento menos de salario, y el conocimiento de por qué cinco y no cuatro saldría por la puerta con él, en un hoodie gris y los mismos New Balance 574 que había usado su primer día.
Nota del lector: Lo que acaba de pasar es lo bastante común como para tener nombre: revisiones de sello. Los pull requests existen para crear un momento de entendimiento compartido antes de que el código entre en un sistema. En la práctica, ese momento se comprime por fechas límite, agotamiento y la falsa confianza de asumir que alguien más encontrará el problema.
El disyuntor que Tomasz construyó es el tipo de salvaguarda silenciosa y crítica que existe porque una persona tuvo una mala noche y decidió que nadie más debería sufrir la misma. Pero como se aprobó sin leerlo, nadie aprendió de él. Nadie lo entendió. Nadie podía mantenerlo. Cuando Tomasz se vaya, el código se queda. El razonamiento no. La historia de por qué cinco y no cuatro. El recuerdo de la cascada que lo inspiró. El criterio que moldeó el umbral. Eso es lo que el code review debería transferir: no aprobación, sino comprensión.
Tomasz apareció en la puerta.
Había escuchado su nombre. O sentido su peso a través del vidrio.
Hoodie gris, mangas subidas. El anillo de bodas atrapando la luz fluorescente. La barba incipiente que se había espesado durante la última semana en algo que no era del todo barba ni del todo resignación.
“Están leyendo mi PR de recuperación,” dijo. No fue una pregunta.
“Estamos tratando de entenderlo,” dijo Mariana.
Tomasz se apoyó en el marco. Sus ojos se movieron a la pantalla. Su cuerpo no entró en la sala.
“Octubre 2024,” dijo. “Sábado por la noche. Lanzamos el evento de Halloween. El despliegue se torció. El servidor seguía reintentando contra un endpoint muerto. Cada reintento generaba dos solicitudes más. Exponencial. Todo se derrumbó en once minutos.”
Hizo una pausa.
“Estaba en casa. Agnieszka había disfrazado a los niños de personajes de Minecraft.” Su voz se aplanó. Sin emoción. Solo vacía. “Ella los acostó sola porque yo pasé cuatro horas en el laptop en la oscuridad tratando de detener la cascada.”
Nadie se movió.
“Cinco reintentos es el límite porque eso es lo que el monitoreo mostraba antes de que la avalancha comenzara. Cuatro era demasiado sensible. Los picos normales de latencia lo activaban. Seis era tarde. A los seis, la cola de solicitudes ya estaba creciendo exponencialmente y el disyuntor no podía detener lo que ya estaba en movimiento.”
Miró a Daniel.
“Dejaste un pulgar arriba,” dijo.
La cara de Daniel se puso blanca. El color se drenó lentamente, como agua por tela.
“No sabía lo que era,” dijo Daniel. Su voz se quebró en la última palabra.
“Lo sé,” dijo Tomasz.
No había enojo. Solo agotamiento tan profundo que se había calcificado en algo parecido a la paz. El enojo se había quemado meses atrás. Lo que quedaba era la resignación limpia y clara de un hombre que había dejado de esperar ser escuchado.
La mano de Mariana flotó sobre el teclado.
“Explícanos paso a paso,” dijo.
Tampoco fue una pregunta. Una petición. Del tipo que reconoce que la persona consultada tiene algo valioso que decir.
Tomasz dudó. Luego entró en la sala.
Acercó una silla. Arañó el piso. Se sentó y señaló la primera línea.
“Esto inicializa el contador de fallos en cero,” dijo. “Cada verificación exitosa lo reinicia. Cada fallo lo incrementa. El umbral es cinco porque cinco es el punto donde la recuperación todavía es posible. Después de cinco, no estás reintentando. Estás agravando.”
Daniel escribía frenéticamente. Su bolígrafo se había despertado.
Mariana tecleaba comentarios en el código. Anotaciones en línea. Del tipo que debería haber existido tres semanas antes.
Hassan abrió el tablero de monitoreo de despliegues y cruzó las marcas de tiempo con el registro de activación del disyuntor. El disyuntor se había activado catorce veces desde octubre. Catorce despliegues de producción que habrían cascadeado sin él. Nadie lo sabía.
“Catorce,” dijo Hassan.
Tomasz se encogió de hombros.
“Funciona,” dijo. “Ese es el problema. Nadie nota los incendios que no empiezan.”
Stefan escribió en su cuaderno:
El código que te protege es invisible hasta que desaparece.
Pasaron noventa minutos en ciento sesenta y dos líneas.
Cuando terminaron, cuatro personas entendían la lógica de recuperación. Cuatro personas podían modificarla sin matar accidentalmente producción. Cuatro personas sabían por qué el umbral era cinco.
Tres semanas antes, ese número era uno.
En dos días, habría sido cero.
Tomasz se puso de pie.
“Mañana grabo un recorrido del resto del pipeline,” dijo. “Despliegue, reversión, alertas de monitoreo, la cadena de recuperación.”
Miró alrededor de la sala.
“Debería haberlo hecho hace un año,” dijo.
Nadie objetó. Nadie lo consoló.
Tenía razón. Y tener razón sobre el momento no cambiaba el hecho de que el momento era ahora.
La azotea olía a protector solar y cerveza Augustiner tibia.
Alguien había subido las mesas plegables tres pisos. Alguien más había comprado cerveza y una bolsa de pretzels y lo había llamado fiesta de despedida. Pixel Spree no hacía cosas formales. Hasta el adiós era improvisado.
Tomasz estaba junto a la baranda. Hoodie gris puesto a pesar de los veintidós grados. Capucha abajo. Esa era su versión de relajado.
Katja lo encontró ahí.
Traía dos cervezas. Camiseta de Opeth, la de “Ghost Reveries” con las salpicaduras de pintura. Jeans enrollados. Chucks blancos tan gastados que el caucho era gris. Lentes de lectura empujados sobre la frente, donde se quedarían toda la noche.
“Te escribí un discurso,” dijo.
“Por favor no,” dijo Tomasz.
“Lo tiré. Era terrible.” Extendió la cerveza. “Sonaba como un post de LinkedIn.”
La tomó.
Se quedaron ahí mirando los techos de Kreuzberg. La Fernsehturm atrapó la última luz del atardecer. Un tren subterráneo traqueteó abajo. En algún lugar una tienda de discos tocaba jazz por las puertas abiertas.
“Lo siento,” dijo Katja.
Tomasz negó con la cabeza.
“No tienes que hacerlo.”
“Debería haberlo visto antes.”
“Navigator lo vio.” Dio un trago. “Para entonces yo ya me había ido por dentro. No puedes salvar a alguien que ya tomó la decisión. Solo puedes asegurarte de que no sea una sorpresa.”
La garganta de Katja se movió.
“¿Vas a estar bien?” preguntó.
Tomasz la miró. Los ojos verdes estaban cansados pero claros. Más claros de lo que ella los había visto en meses. Las ojeras seguían ahí pero algo detrás de ellas se había movido. Algo se había soltado en el momento en que entregó su renuncia. No era felicidad. Alivio.
“Voy a escribir código,” dijo. “Código de verdad. No presentaciones sobre código. No reuniones sobre reuniones sobre código. No evaluaciones de desempeño para gente que escribe código. Solo código.”
Katja asintió despacio.
“Eso no es una respuesta,” dijo.
“Sí lo es,” dijo Tomasz. “Solo que no la reconoces porque olvidaste cómo suena.”
La frase aterrizó en el pecho de Katja y se quedó ahí.
La sesión de grabación del jueves había durado tres horas. Tomasz narró el pipeline de despliegue, los procedimientos de reversión, las alertas de monitoreo, la cadena de recuperación, los tres scripts no documentados que corrían en un cronjob que nadie había registrado en el programador de tareas. Habló en el tono plano y preciso de alguien que describe una casa que construyó con sus propias manos y ahora ve mudarse a alguien más.
En un punto se detuvo, señalando un bloque de configuración en la pantalla.
“Esta parte,” dijo. “Esto será lo primero en romperse después de que me vaya. No porque sea mal código. Porque necesita contexto. Y el contexto está…” Se tocó la sien. “Aquí.”
Stefan mantuvo la cámara grabando.
“Por eso lo estamos grabando,” dijo Stefan.
“Un video no es contexto,” dijo Tomasz. “Contexto es sentarte junto a alguien a las 02:00 mientras el build se incendia y escucharlo decir: ‘No toques esa línea, está ahí por una razón que nunca encontrarás en una búsqueda.’ No puedes grabar la intuición.”
Stefan no discutió.
Tomasz tenía razón. Los videos capturan conocimiento. El pairing transfiere comprensión. La sesión de code review del miércoles había transferido más comprensión en noventa minutos que tres semanas de pull requests aprobados. Pero aun así no fue suficiente. Nunca iba a ser suficiente. Lo que tenían era mejor que el silencio, y el silencio era lo que habían estado pagando todo ese tiempo.
Lukas llegó diez minutos tarde. Camisa blanca, mangas enrolladas, Apple Watch reflejando la puesta de sol. Cruzó la terraza con el paso de un hombre que había ensayado una entrada casual.
Le estrechó la mano a Tomasz. La sostuvo un latido de más.
“Perdemos a uno bueno,” dijo Lukas.
“Lo perdiste hace seis meses,” dijo Mariana detrás de su cerveza. Estaba apoyada con ambos codos en la baranda, cut-offs y Docs, el tatuaje Tupi-Guarani oscuro contra la piel morena en la luz que se desvanecía.
Lukas tuvo la gracia de no discutir.
Stefan estaba sentado en una silla de plástico, chaqueta de canvas sobre el respaldo. No estaba tomando. Observaba a Tomasz recibir apretones de mano y palmadas en la espalda de desarrolladores que apenas le habían hablado fuera del standup durante el último año. Les caía bien. Siempre les había caído bien. Solo no habían entendido lo que cargaba hasta que Navigator se los mostró.
Hassan estaba lo suficientemente cerca para estar presente, lo suficientemente lejos para estar seguro. Camiseta oscura lisa. Brazos desnudos. Solo la segunda vez esta primavera que alguien lo veía sin hoodie. Había traído una bolsa de börek del lugar turco en la Oranienstraße. Nadie lo comentó. Todos comieron.
Sofia subió las escaleras, crop top y jeans de tiro alto, y le entregó a Tomasz una tarjeta que los desarrolladores junior habían firmado. Su nombre estaba mal escrito. No lo corrigió. Leyó cada firma y asintió una vez con cada nombre como si estuviera contando.
Mariana chocó su cerveza con la de él.
“Te vas a aburrir en una semana,” dijo.
“Dios, eso espero,” respondió Tomasz.
Se rió. Cabeza hacia atrás. Garganta expuesta. La risa de alguien que suelta algo que tenía aferrado sin saberlo.
Anton levantó su cerveza desde el otro lado de la terraza. Dijo algo en ruso que hizo que Sergei bufara. Luego, más alto, en inglés: “Tomasz. Fuiste el único manager que nunca nos la metió con cuentos. Eso vale más que un discurso.”
La boca de Tomasz hizo algo que no era del todo una sonrisa.
A las 18:15, terminó su cerveza y la puso en la baranda.
No dio un discurso.
Katja se aclaró la garganta. Miró al equipo. Veinte personas en una azotea bajo el sol tardío de Berlín. Camisetas de bandas y cut-offs y brazos desnudos y ojos cansados y el silencio específico de un grupo que sabe que está a punto de volverse más pequeño.
“Gracias, Tomasz,” dijo. “De verdad.”
Cuatro palabras.
El equipo aplaudió. No fuerte. El sonido de palmas que lo dicen en serio.
Tomasz tomó el elevador solo.
Hoodie gris. Jeans oscuros. New Balance 574 en gris. La misma ropa que usó su primer día. El mismo caminar. La misma calma. Nada había cambiado porque nunca estuvo actuando. Se vestía por función, no por identidad. La consistencia era el punto.
Las puertas del elevador se cerraron.
Hassan las vio cerrarse.
“Kurwa,” dijo en voz baja. Polaco perfecto.
Mariana lo miró.
“¿Dónde aprendiste eso?” preguntó.
“De él,” dijo Hassan. “En cada despliegue de viernes, durante dos años.”
Los ojos de Mariana brillaron.
No se los secó.
Stefan estaba sentado en su silla de plástico viendo el cielo ponerse naranja sobre Kreuzberg y pensando en un hombre que construyó un disyuntor a las 02:00 un sábado por la noche mientras sus hijos dormían disfrazados de Minecraft. Un disyuntor que se activó catorce veces y salvó catorce noches y fue aprobado en ocho minutos por alguien que dejó un pulgar arriba.
Pensó en sus propias despedidas. Ciudad de México. Bogotá. Cada proyecto termina con alguien que se va. Normalmente él. Esta vez era el que se quedaba.
No se sentía mejor desde este lado.
Abrió su cuaderno y escribió:
El código se queda. El criterio no. El historial de PRs es un registro de lo que aprobamos, no de lo que entendimos.
Luego lo cerró. Lo metió en su bolsa. Tomó su chaqueta.
Se fue a las 18:30. Puntual. Como siempre.
Navigator — Katja Müller — 23 de mayo de 2026, 22:47
Tomasz se fue hoy.
18:15. El mismo hoodie. Los mismos zapatos. La misma calma. No azotó puertas. No mandó un correo amargo a toda la empresa. Terminó su cerveza, asintió una vez a todos, tomó el elevador.
No puedo dejar de pensar en el miércoles. Stefan abrió un pull request que Tomasz había enviado tres semanas antes. Todos lo habíamos aprobado. Yo lo firmé. Y cuando Stefan nos preguntó qué hacía el código, nadie en la sala pudo responder.
Tomasz nos escuchó batallando y entró. Nos contó sobre una noche de Halloween en 2024 cuando producción cascadeó mientras sus hijos pedían dulces. Construyó un disyuntor a las 02:00. Eligió el umbral basándose en datos de monitoreo. Lo envió el lunes. Aprobado en ocho minutos. Nadie hizo una sola pregunta.
Ese disyuntor nos protegió durante dieciocho meses. Se activó catorce veces. No sabíamos que existía.
Teníamos un proceso de revisión. Teníamos aprobaciones. Teníamos checks verdes y emojis de 👍 y comentarios de “LGTM”. Lo que no teníamos era comprensión.
Stefan escribió algo en su cuaderno el lunes que no puedo sacarme de la cabeza: “El proceso de revisión existe. La revisión no.”
Tiene razón. Y se necesitó que Tomasz se fuera para que yo entendiera lo que eso realmente cuesta.
Las sesiones de grabación ayudan. El code review del miércoles ayudó más. Pero Tomasz dijo algo que no puedo soltar: “Un video no es contexto. Contexto es sentarte junto a alguien a las 02:00 mientras el build se incendia.”
No podemos grabar lo que Tomasz sabía. Solo podemos asegurarnos de que nunca volvamos a aprobar un pull request sin leerlo.
La retención no es cuestión de salario. Es si alguien lee lo que construyes.