Stefan pide documentación de arquitectura y descubre que no hay. Pide un runbook de despliegue y recibe la misma respuesta: 'Tomasz sabe cómo.' Mientras el contador hacia la salida de Tomasz sigue bajando y el estudio todavía está a una baja médica de la parálisis total, Stefan se sienta con Tomasz y empieza a documentar en pareja. No un wiki pulido. No un entregable de consultoría. Solo el mínimo de verdades que mantienen vivo a un sistema: qué existe, por qué existe y qué se rompe cuando lo tocas.
“¿Dónde están los documentos de arquitectura?”
Stefan lo preguntó como quien pregunta dónde dejaron las llaves.
Katja parpadeó una vez, como si no hubiera oído bien.
Tomasz ni parpadeó. Solo miró la pantalla, ese espacio vacío de Confluence que Katja había abierto porque era la forma más rápida de responder.
Cero páginas.
Cero diagramas.
Ni siquiera un triste “TODO”.
El vacío era tan limpio que parecía un insulto.
“Nosotros…” empezó Katja, y se detuvo porque no existía una frase honesta que empezara con nosotros y terminara con tenemos documentación.
“Está en mi cabeza,” dijo Tomasz.
Lo dijo plano, como un parte meteorológico.
Stefan asintió una vez. Sin sorpresa. Sin aplauso.
“Vale,” dijo. “¿Dónde está el runbook de despliegue?”
Katja cerró Confluence y abrió el drive compartido, el otro lugar donde una empresa finge que vive el conocimiento. Escribió “deploy” en el buscador. Giró dos segundos y devolvió una lista de capturas viejas y un PowerPoint de 2021 titulado “Release Process (draft)”.
La primera diapositiva era un diagrama de una pipeline que Pixel Spree ya no tenía.
Tomasz soltó un sonido que en otra vida habría sido una risa.
“Hassan sabe cómo,” dijo Katja.
“Hassan estaba de baja,” dijo Stefan.
“Volvió esta mañana,” dijo Katja, demasiado rápido. Como si hablara de algo frágil que Stefan no debía tocar.
Stefan se recostó en la silla y miró a Tomasz.
“¿Cuántos días laborales?” preguntó.
La mandíbula de Tomasz se tensó. Luego soltó el aire.
“Cincuenta y seis,” dijo.
Katja los miró a los dos. “¿Estás contando?”
“Claro que estoy contando,” dijo Tomasz. “Es el único contador en este sitio que de verdad termina.”
Stefan escribió 56 en su cuaderno.
“No vamos a montar un programa de documentación,” dijo. “No vamos a migrar a otro wiki. No vamos a hacer un taller.”
Los hombros de Katja bajaron un centímetro. Alivio mezclado con otra cosa.
“Entonces, ¿qué vas a hacer?” preguntó.
Stefan giró el cuaderno hacia ellos. Ya estaba abierto en una página en blanco.
“Vamos a escribir el conjunto mínimo de cosas que mantiene vivo el sistema cuando tú te vayas,” dijo, señalando a Tomasz.
Los ojos de Tomasz se movieron al cuaderno y se apartaron.
“No puedes escribir dos años en cincuenta y seis días,” dijo.
“No vamos a escribir dos años,” dijo Stefan. “Vamos a escribir las razones por las que tu yo del futuro te gritaría si las olvidas.”
La boca de Tomasz hizo un gesto mínimo. No sonrisa. Grieta.
“¿Y cuando terminemos?” preguntó.
La voz de Stefan siguió tranquila.
“Entonces existirá en algún lugar que no sea tu cráneo,” dijo. “Y entonces existirá.”
A Tomasz no le gustaba escribir.
No teclear.
Congelar.
El código se mueve. La documentación no. La documentación fosiliza decisiones y luego se burla de ti cuando cambias algo.
Pero Stefan no empezó con un diagrama.
Empezó con un archivo.
“Nómbralo,” dijo.
“Architecture Overview,” dijo Tomasz, ya irritado.
“No,” dijo Stefan. “Nómbralo como si le hablaras a Emma en su primera noche de guardia.”
Tomasz lo miró.
“Ella no está de guardia,” dijo Tomasz.
El bolígrafo de Stefan se detuvo.
“Entonces también tienen un problema de guardias,” dijo.
Tomasz apartó la mirada.
“Ponle README,” dijo Stefan.
“Eso es…” empezó Tomasz.
“Aburrido,” terminó Stefan. “Bien. Lo aburrido sobrevive.”
Tomasz abrió el editor. Creó docs/README.md.
El cursor parpadeó.
Diez segundos. Mandíbula dura. Ese silencio de dos personas frente a una página vacía.
Stefan no lo llenó con palabras.
Hizo una pregunta.
“¿Cuál es el malentendido más peligroso que un desarrollador nuevo puede tener sobre este sistema?”
Tomasz respondió sin pensar.
“Que staging es como producción,” dijo.
Stefan asintió. “Escribe eso primero.”
Así que Tomasz escribió:
Sus dedos fueron más rápido una vez que empezó. No porque le gustara.
Porque por fin estaba escribiendo lo que llevaba cargando solo.
Stefan vio aparecer las frases. Luego señaló una.
“¿Por qué es distinto?” preguntó.
Tomasz tragó saliva.
“Porque en 2023 tuvimos un pico de tráfico y producción se cayó,” dijo. “Parchamos el load balancer en producción. No lo llevamos a staging porque íbamos con prisa y luego lo olvidamos y luego se volvió normal.”
Stefan escribió PARCHE EN PROD, NO EN STAGING — LA PRISA SE VUELVE NORMAL.
“Escribe eso también,” dijo.
Las manos de Tomasz se quedaron encima del teclado.
“Eso nos hace ver idiotas,” dijo.
“Te hace ver honesto,” dijo Stefan. “La documentación no es marketing. La documentación es confesión.”
Tomasz lo miró dos segundos.
Luego escribió la frase.
[Image: Hassan en su escritorio por primera vez en una semana. Hoodie oscura un poco grande, capucha abajo, ojeras, una lata de bebida energética cerca del teclado, manos temblando levemente mientras entra a los dashboards. Emma: camiseta negra ajustada, jeans rotos, pelo en moño desordenado, apoyada en el borde del escritorio con el portátil por fin fuera de la caja. Stefan y Tomasz al fondo, en una sala de vidrio, escribiendo. Luz de mayo, ~18°C.]
Hassan volvió sin anunciarlo.
Nada de “ya estoy” en Slack.
Nada de disculpas.
Se sentó como quien regresa a una escena del crimen.
Emma estaba allí antes de que terminara de iniciar sesión.
“Hey,” dijo, suave a propósito.
Hassan se sobresaltó igual.
“¿Qué tan mal está?” preguntó.
“No se desplegó nada,” dijo Emma.
Los ojos de Hassan se cerraron medio segundo.
“Bien,” dijo.
Emma parpadeó. “¿Bien?”
“Si no se desplegó nada, no se rompió nada,” dijo Hassan. Tenía la voz áspera, como si hubiera dormido mal una semana entera. “Si se hubiera desplegado algo, lo estaría encontrando ahora.” Abrió el script de despliegue. El cursor cayó en una línea con # DO NOT TOUCH.
Emma acercó su silla.
“Stefan encontró una IP hardcodeada dentro de un condicional que mira si es viernes,” dijo.
La cabeza de Hassan giró.
“¿Él leyó eso?” preguntó.
“Leyó todo,” dijo Emma.
La mandíbula de Hassan se tensó.
“Qué bien por él,” dijo, sin querer decirlo.
Al otro lado, Stefan levantó la vista del archivo de documentación y cruzó la mirada con Hassan.
No saludó.
No sonrió.
Solo levantó un poco el bolígrafo. Un gesto pequeño que decía: Te veo. No estoy aquí para juzgarte. Estoy aquí para bajar la carga.
Hassan apartó la mirada primero.
Su hoodie lo hacía más pequeño.
Su silla lo mantenía atrapado.
Su pantalla se llenó de alertas rojas con las que había soñado incluso dormido.
[Image: Primer plano de las manos de Tomasz escribiendo. En pantalla: un archivo markdown “deploy-runbook.md” con secciones: “Before”, “During”, “After”, “Rollback”. El cuaderno de Stefan al lado, tinta azul. La taza de Tomasz, una mug con una esquina astillada. Luz cálida de tarde.]
El runbook no dolía porque fuera complejo.
Dolía porque era personal.
“Antes de un despliegue,” dijo Tomasz despacio, “miro el calendario de live ops. No porque esté en el proceso. Porque si desplegamos durante un evento, Elif nos mata.” Se detuvo. “No literalmente. Pero tendría razón.”
Stefan no se rió. Lo anotó.
“Luego miro el lag de replicación de la base de datos,” siguió Tomasz. “Si está por encima de dos segundos, esperamos.”
“¿Dónde está documentado eso?” preguntó Stefan.
“No está,” dijo Tomasz.
Stefan miró la pantalla. “Entonces escríbelo.”
Tomasz escribió:
“¿Por qué dos?” preguntó Stefan.
“Porque por encima de dos hemos visto que el session handler pega picos de CPU durante reinicios y se vuelve cascada,” dijo Tomasz, subiendo el enfado. “No sé por qué es dos. Solo es.”
El bolígrafo de Stefan se quedó quieto.
“Sí sabes por qué,” dijo. “Solo no quieres admitir que te inventaste un número en una crisis y luego lo mantuviste porque funcionaba lo suficiente.”
La cara de Tomasz se calentó.
“Kurwa,” murmuró.
Stefan levantó las cejas.
“Escribe la razón real,” dijo Stefan.
Tomasz lo miró como si le pidieran escribir un secreto.
“Porque en una crisis eliges un umbral,” dijo Tomasz, bajito. “Lo mantienes. Y luego todos lo tratan como si fuera física.”
Stefan no dejó que el silencio se volviera cómodo.
“Escríbelo,” repitió.
Tomasz tecleó:
La frase se veía fea.
Se veía verdadera.
Tomasz se recostó y la miró.
“Esto me hace sentir expuesto,” dijo.
“Bien,” dijo Stefan. “Si se siente expuesto, probablemente es lo que alguien necesita cuando no estés.”
[Image: Stefan y Tomasz de pie frente a una pizarra. Una lista de números: 56 tachado, 51 en círculo. Debajo: “Docs shipped” con checkboxes. El hoodie de Tomasz medio abierto, calor en la sala. Stefan con mangas arremangadas, cuaderno cerrado. Luz de tarde volviéndose dorada.]
No documentaron todo.
Documentaron lo peligroso.
Lo que te mata una semana si lo entiendes mal.
Escribieron los nombres de servicios que existen solo porque un crash en 2023 les enseñó miedo.
Escribieron el orden de reinicios que evita una cascada.
Escribieron qué alertas son ruido y cuáles significan “despierta”.
Stefan fue commiteando la documentación en trozos pequeños, como código. No un volcado al final. Un flujo.
Tomasz vio caer esos commits como quien ve salir partes de sí mismo.
“¿Por qué commiteas esto como si fuera código?” preguntó Tomasz.
“Porque es código,” dijo Stefan. “Cambia. Se revisa. Se versiona. Tiene historia.”
Nota para lectores: La documentación es conocimiento operativo pegado al código, así que debe vivir en el mismo repositorio que el código del producto. Notas de arquitectura, runbooks, guardrails, advertencias de migración, reglas de rollback — si los desarrolladores lo necesitan para entregar y recuperar con seguridad, es parte del sistema de producto.
Mantener esa información en wikis separados, presentaciones o unidades compartidas es una disfunción de delivery. Rompe el flujo de revisión, esconde el historial de cambios y garantiza deriva entre la realidad y la explicación. La frase es brutal porque es verdad: en cuanto se guarda, se convierte en una mentira. Poner la documentación en el repositorio acorta esa mentira y permite corregirla en el mismo flujo que el código.
En 2026, además, esto habilita mantenimiento asistido por IA: las herramientas pueden revisar el código real, compararlo con runbooks y notas de arquitectura en el mismo repositorio, y proponer actualizaciones cuando la documentación se desalinea de la implementación.
Tomasz asintió una vez.
Luego, bajito:
“Nadie pidió esto,” dijo Tomasz.
“Deberían haberlo pedido,” dijo Stefan.
“No,” dijo Tomasz. La voz se le apretó. “Nadie me pidió a mí. Pidieron entregas. Pidieron velocidad. Pidieron más features. Pidieron un Head of Engineering. Nadie preguntó si soy una persona con un cerebro que solo aguanta cierta cantidad.”
Stefan no respondió con compasión.
Respondió con una frase práctica que pegó más fuerte.
“Entonces esto lo estás pidiendo tú,” dijo. “Para que el siguiente no se ahogue como tú.”
Tomasz miró el número en la pizarra. Cincuenta y uno.
“Yo igual me quiero ir,” dijo.
“Deberías,” dijo Stefan.
La honestidad le abrió los ojos a Tomasz.
“Pero no tienes que dejar un cráter,” siguió Stefan. “Puedes dejar un mapa.”
La garganta de Tomasz se movió. Tragó.
“Un mapa,” repitió.
Stefan tapó el bolígrafo.
“Un mapa,” dijo.
Navigator — Tomasz Kowalski — 8 de mayo de 2026, 18:11
Hoy escribí documentación.
Esa frase se siente como admitir fracaso.
Durante dos años cargué todo porque era más rápido que explicar. Más rápido que dibujar diagramas. Más rápido que escribir notas. Más rápido que enseñar.
Ahora me voy y de repente todo el mundo quiere el conocimiento que me dejó cansado.
Stefan no pidió un wiki. Pidió las partes que te matan cuando no las sabes.
Todavía se siente como exposición. Como poner mis cagadas en papel.
Pero también se siente como lo primero profesional que hago aquí en meses.