Stefan Richter llega a São Paulo con un contrato de 90 días para arreglar la entrega en AutoConnect Brasil. Encuentra 90 desarrolladores, 18 meses de caos y un sistema de entretenimiento para autos que apenas funciona. La radio reproduce música. Todo lo demás falla. Mientras Klaus Hartmann investiga unas finanzas catastróficas, Stefan se sienta a programar con Júlia Nascimento y descubre lo único que podría salvarlos: alguien todavía recuerda cómo escribir primero una prueba.
São Paulo. Principios de septiembre de 2026.
La humedad golpeó a Stefan Richter como una pared en cuanto salió del Aeropuerto Internacional de Guarulhos. Berlín a finales de verano significaba tardes agradables y crepúsculos largos. São Paulo era otra cosa: un calor húmedo que se pegaba a la piel, aire espeso de escape, carne asada y el zumbido eléctrico de doce millones de personas despiertas a la vez.
Su habitación en la Avenida Paulista le mostraba las contradicciones de la ciudad: torres de vidrio apretadas contra hormigón brutalista, verde tropical abriéndose paso por cada grieta, favelas trepando las colinas lejanas como advertencias que nadie quería leer. Stefan estaba en ropa interior junto a la ventana, con jet lag y despierto a las 03:00, mirando cómo palpitaban las luces.
Había leído el informe en el vuelo. AutoConnect Brasil. Más de noventa desarrolladores. Dieciocho meses de desarrollo. Un producto que debía haberse entregado hacía un año.
BergMotor AG — el gigante automotriz alemán con fábrica en São Bernardo do Campo — había contratado a AutoConnect para construir el sistema de infoentretenimiento de su línea económica. Radio. Navegación. Integración del climatizador. Diagnóstico del vehículo. Todo hablando con el bus CAN. Todo funcionando sin fricción.
La radio funcionaba.
Nada más.
Su teléfono vibró. Era Leo Ferreira, el desarrollador que lo había recomendado:
Leo ¿Aterrizaste bien? Duerme un poco. Mañana será largo.
Stefan respondió:
Stefan Dormir es para los muertos. ¿En qué me estoy metiendo?
La respuesta llegó de inmediato:
Leo Exactamente en lo que te da miedo.
Leo Pero aquí hay buena gente. Adriana. Júlia. Rafa. No se han rendido.
Leo Solo necesitan que alguien les demuestre que hay salida.
Stefan volvió a mirar la ciudad. En algún lugar, noventa desarrolladores escribían código que no llegaría a ninguna parte. En otro, un controlador financiero alemán llamado Klaus Hartmann revisaba planillas que no cuadraban. Y en algún lugar un CEO llamado Bernardo Souza dormía tranquilo, convencido de que los consultores lo salvarían.
Stefan había escrito un ensayo brutal sobre el desarrollo por encima del proceso. Había hablado en conferencias de tres continentes. Había ayudado a equipos en Berlín, Barcelona y Buenos Aires.
Pero nunca había arreglado un equipo tan roto.
Sacó su portátil y abrió por centésima vez la base de código de AutoConnect desde que firmó el contrato. Feature branches por todas partes. Algunas de ocho meses. Doce por ciento de cobertura en navegación. Cero en el climatizador.
Mañana los conocería. Mañana programaría junto a ellos. Mañana descubriría si quedaba algo que salvar.
Esta noche solo observó a la ciudad respirar y se preguntó de qué estaba huyendo realmente.
Su hija Sophie dormía en Berlín. Diecisiete años, y ya más feroz de lo que él merecía. Su exesposa Emma estaba en la misma ciudad, recuperada, viviendo una vida de la que él ya no formaba parte.
El divorcio era definitivo. La culpa no.
Tal vez São Paulo sería distinto. Tal vez aquí podía salvar algo.
La ciudad no prometía nada. Solo seguía zumbando.
Leo Ferreira esperaba en un café a dos cuadras de AutoConnect, con una taza de espresso ya vacía. Se levantó cuando llegó Stefan: delgado, relajado, vestido con el uniforme informal del Valle —sudadera y zapatillas— que se veía un poco fuera de sitio en el distrito empresarial de São Paulo.
—Te ves hecho mierda —dijo Leo alegremente.
—Doce horas en clase económica hacen eso.
Stefan se sentó. El mesero apareció enseguida.
—Café, por favor. Fuerte.
—Es Brasil. Todo el café es fuerte.
Leo lo estudió.
—Leíste la base de código.
—No pude dejarla.
—¿Y?
Stefan se frotó los ojos.
—Feature branches de ocho meses. Una cobertura que haría llorar a quien acaba de salir de un bootcamp. Un módulo de navegación diseñado por alguien que odia a los conductores.
—Eso es navegación. Deberías ver el climatizador.
—Lo vi. No hay nada que ver.
Leo asintió.
—Ahora entiendes por qué te llamé.
El café llegó espeso, oscuro, casi almibarado. Stefan bebió la mitad de un trago y sintió que su sistema nervioso volvía a alinearse.
—Háblame de la gente.
Leo se recostó.
—Adriana Costa. Lidera desarrollo. Brillante. Todavía programa todos los días. Sabe más de sistemas embebidos automotrices que cualquiera. Lleva tres años peleando esta batalla y la dirección la ignora.
—¿Por qué?
—Porque dice la verdad y la verdad incomoda. Es tu aliada natural, si logras convencerla de que no eres otro consultor con diapositivas.
—No hago diapositivas.
—Lo sé. Por eso te recomendé. —El gesto de Leo se volvió serio—. Pero ella ha visto consultores antes: alemanes, estadounidenses, todos con frameworks y promesas. Se fueron. Todo empeoró. No confía en la gente de fuera.
—No vine a asesorar. Vine a programar.
—Demuéstralo. Es lo único que la convencerá.
Stefan asintió.
—¿Quién más?
—Júlia Nascimento. Desarrolladora de integración del climatizador. Joven, talentosa, frustrada. Está en el equipo sin pruebas. Sabe que está roto; no sabe cómo arreglarlo. —Leo hizo una pausa—. Y es… magnética. Ten cuidado.
Stefan levantó una ceja.
—Lo digo en serio. Ella es joven. Tú no. También estás huyendo de algo en Alemania; no creas que no lo noté. Júlia no es la respuesta a la pregunta que evitas.
—No vine para—
—Lo sé. Solo ten cuidado. —Leo terminó el café—. También está Rafa Lima. Desarrollador junior de sistemas embebidos. Autodidacta, brillante, aterrorizado. Encontró algo en los presupuestos que le dio miedo. Se lo contó a Adriana; ella a Helena, mi tía, la miembro del consejo que te contrató.
—¿Qué encontró?
—Ese es el problema. Nadie me lo dice. Helena solo dijo que la situación financiera era “complicada” y que BergMotor estaba “preocupada”. Por eso está aquí Klaus Hartmann, el controlador alemán. Lo mandaron desde Stuttgart a averiguar a dónde se fue el dinero.
Stefan procesó aquello. Irregularidades financieras. Una historia ausente. Desarrolladores que habían encontrado algo que no debían encontrar.
—¿Y el CEO? ¿Bernardo algo?
La cara de Leo se endureció.
—Bernardo Souza. En realidad es el CFO, pero dirige todo. No confíes en él. No confíes en nadie que te presente. Y no dejes que te convenza de que el problema son los desarrolladores.
—¿Lo son?
—Carajo, no. —Leo se inclinó hacia delante—. Esta gente es buena. No son malos desarrolladores: son desarrolladores saboteados. El proceso, la política, los plazos imposibles… todo está diseñado para que fallen. Y cada vez que fallan, Bernardo trae otro consultor, otro marco, otra solución mágica que cuesta dinero y no cambia nada.
—¿Por qué querría que fracasen?
Leo dudó.
—No lo sé. Pero mi tía Helena hace la misma pregunta. Esa es la verdadera razón de que estés aquí: no solo arreglar la entrega, sino descubrir qué está pasando.
Stefan terminó su café. La cafeína ya afilaba los bordes de una imagen que aún no comprendía.
—Llévame con ellos.
AutoConnect Brasil ocupaba los pisos ocho al doce de una torre mediana en Avenida Paulista. El vestíbulo era vidrio y cromo, pensado para impresionar inversores. La planta de desarrollo era otra cosa.
Espacio abierto. Muros bajos de cubículo. Desarrolladores doblados sobre monitores con la postura de quien no ha levantado la vista en meses. Pizarras por todas partes, con diagramas más parecidos a evidencia de una escena del crimen que a arquitectura. Post-its descoloridos bajo el sol tropical.
Stefan vio las divisiones enseguida. Junto a las ventanas, con luz natural y plantas vivas, un grupo de escritorios de gente que hablaba entre sí, a veces reía y tenía casos de prueba reales en las pizarras: el equipo de radio.
En medio de la planta, apretados, sin ventanas, bajo tubos fluorescentes que zumbaban, dos grupos mayores que no se hablaban: navegación y climatizador. Sus pizarras tenían tareas bloqueadas, elementos tachados y un muñeco colgado con la etiqueta “bus CAN”.
Leo lo llevó hasta una oficina acristalada al fondo. Dentro, una mujer de casi cuarenta revisaba código en un monitor grande con la furia concentrada de quien acaba de encontrar un error que debió detectarse hace meses.
—Adriana. —Leo golpeó el marco—. Él es Stefan Richter.
Ella no levantó la vista.
—El alemán que escribió el ensayo.
—Ese soy yo.
—Helena te mandó.
—Me contrató. Leo me recomendó.
Entonces lo miró. Piel morena, rizos naturales que había dejado de intentar domar, ojos que lo examinaban como un compilador buscando errores de sintaxis.
—Muéstrame tus manos.
Stefan parpadeó. Luego entendió. Las extendió, palmas arriba.
Adriana las estudió: callos en las yemas, uñas cortas, la tensión leve de alguien que pasaba ocho horas al día frente a un teclado.
—De verdad programas —dijo. No era una pregunta.
—Todos los días.
—Bien. Los últimos tres consultores que envió Helena tenían manos suaves y presentaciones de PowerPoint. Hablaban de “transformación de procesos” y “madurez ágil” y nos dejaron otro framework para ignorar.
—No vendo frameworks.
—¿Qué haces?
Stefan señaló la planta.
—Me siento con desarrolladores. Programo con ellos. Averiguo por qué se rompieron las cosas. Luego las arreglo, o los ayudo a arreglarlas.
La expresión de Adriana no cambió, pero algo se movió detrás de sus ojos. Una puerta abriéndose apenas.
—Navegación. Llevan seis meses intentando integrar el bus CAN. Por fin funciona la lectura del sensor de temperatura; todo lo demás se cae. No tienen pruebas. No tienen un camino repetible de build y flash. Nada.
—¿Por dónde quieres que empiece?
—Climatizador. Están peor. No tienen ninguna prueba. El líder se fue hace dos meses. Júlia intenta sostenerlo todo, pero se está ahogando.
Stefan miró hacia el área del climatizador. Una joven de rizos naturales y pendientes brillantes miraba su monitor con la mandíbula tensa; sus manos se movían con la energía frustrada de quien repite lo mismo esperando un resultado distinto.
—¿Esa es Júlia?
—Esa es Júlia. Es buena. Solo que todavía no lo sabe.
—Entonces empezamos ahí.
Adriana lo estudió un momento más. Luego asintió una vez, rápida y decidida.
—No me decepciones, alemán.
Klaus Hartmann llevaba tres días en São Paulo y había pasado casi todos en una sala de reuniones del piso quince, rodeado de planillas que le revolvían el estómago.
La corbata apretaba demasiado. Siempre apretaba demasiado con esa humedad. La aflojó un poco: una concesión a Brasil que le pareció una rendición.
Los números eran catastróficos.
Noventa y dos desarrolladores. Dieciocho meses de desarrollo. Ocho millones de euros de gasto total, y subiendo. ¿Qué tenía BergMotor a cambio?
Una radio que reproducía música. Un control de volumen que funcionaba. Bluetooth que casi siempre emparejaba.
Nada más.
Klaus había visto sobrecostos y proyectos fracasar. Esto era distinto. El dinero desaparecía en un agujero negro y los responsables seguían pidiendo más.
Su teléfono vibró. Un mensaje de Stuttgart:
Dr. Hoffmann El consejo se reúne el viernes. Quiere respuestas. ¿Podemos salvarlo o retiramos el contrato?
Klaus miró las planillas, la quema de dinero, las proyecciones.
Klaus Es demasiado pronto. Investigando.
Una mentira. Ya podía verlo, pero aún no estaba listo para decirlo en voz alta.
Alguien golpeó la puerta de vidrio. Un hombre de su edad, alto, delgado, de rasgos alemanes y vestido demasiado informal para una reunión, esperaba en el marco.
—¿Klaus Hartmann? Soy Stefan Richter.
Klaus se levantó y le estrechó la mano.
—El Developer Advocate. Helena me habló de usted.
—Me contrató para arreglar la entrega. Leo dice que usted está aquí por el dinero.
—Estoy aquí para entender a dónde se fue. —Klaus señaló las planillas—. Hasta ahora, entender es… difícil.
Stefan miró los números y se le endureció el gesto.
—Dieciocho meses. Noventa desarrolladores. ¿Y lo único que funciona es la radio?
—¿Vio el producto?
—Vi el código. Doce por ciento de cobertura en navegación. Cero en climatizador. Feature branches de ocho meses. No hay un camino automatizado de build y flash para unidades de prueba.
Klaus lo miró fijo.
—¿En dieciocho meses no construyeron un camino de build y flash para vehículos de prueba?
—No construyeron pruebas. El camino de flash es el menor de sus problemas.
Klaus volvió a sentarse pesadamente.
—¿Cómo puede ser? Revisé los presupuestos. Tienen desarrolladores, herramientas, infraestructura. ¿A dónde va el dinero?
—Esa es una muy buena pregunta.
Se miraron: dos alemanes en una ciudad ajena, observando el mismo desastre desde extremos distintos del telescopio.
—Yo vine a arreglar cómo construyen software. Pero si encuentra algo financiero, quiero saberlo.
Klaus asintió despacio.
—Y si encuentro algo, querré a alguien que entienda la parte técnica para explicarme lo que veo.
—Entonces nos entendemos.
Klaus sacó un cuaderno de cuero. Era anticuado, pero no confiaba notas sensibles a dispositivos.
—Hay algo que no entiendo. Los informes muestran gasto importante en “consultoría externa”, separado de usted. Una empresa llamada QuantumMind Solutions. ¿La conoce?
El rostro de Stefan se enfrió.
—Conozco el tipo.
—Llegan la próxima semana. “Especialistas en transformación ágil”, dicen los contratos. Los honorarios son… considerables.
—¿Quién lo autorizó?
—El CFO. Bernardo Souza.
Stefan guardó silencio. Luego habló muy bajo.
—Eso es interesante.
—¿Por qué?
—Porque los desarrolladores ya hacen ágil, o lo intentan. No necesitan especialistas en transformación. Necesitan que alguien deje de sabotearlos.
En la puerta se detuvo.
—Averigüe más sobre QuantumMind: quiénes son, qué venden de verdad y quién les paga.
—¿Cree que hay algo mal?
Stefan volvió la mirada con los ojos de un hombre que había visto a demasiadas empresas destruidas por la ayuda equivocada.
—Creo que ambos estamos aquí porque alguien esconde algo. La pregunta es qué.
Júlia Nascimento llevaba dos horas mirando la misma función.
sendTemperatureCommand(). Treinta y siete líneas de espagueti que debían enviar una petición de cambio de temperatura al bus CAN y actualizar la interfaz. No funcionaba. Nunca había funcionado. Ella no sabía por qué.
La documentación era errónea. Las notas del desarrollador anterior eran erróneas. La especificación CAN que encontró en línea era de otro año de modelo. Todo estaba mal, ella estaba sola y empezaba a entender por qué el último líder se había ido.
—¿Te importa si me siento?
Alzó la vista. Un hombre alto y delgado estaba junto a su escritorio, con acento alemán y ropa más informal que cualquiera de la zona ejecutiva. Parecía alguien que realmente tocaba teclados.
—¿Quién eres?
—Stefan Richter. Helena me contrató para ayudar con la entrega.
—Otro consultor. —Su voz fue plana.
—No. —Acercó una silla—. Soy desarrollador. Escribí un ensayo una vez, un error, y ahora la gente cree que soy listo. Pero sobre todo escribo código.
Contra su voluntad, los labios de Júlia se curvaron.
—¿De qué trata el ensayo?
—De por qué el proceso no importa si no tienes prácticas de desarrollo. ¿Puedo ver en qué trabajas?
Ella dudó y luego se encogió de hombros. ¿Qué tenía que perder?
—Integración del climatizador. Comandos de temperatura al bus CAN. Debería funcionar, pero no funciona, y llevo dos horas mirándolo y no sé… —La voz se le quebró. Se calló.
Stefan se inclinó sobre el código, pensativo, sin juzgar.
—¿Dónde están las pruebas?
—No hay.
—¿Para esta función?
—Para nada. Para todo el módulo.
Stefan asintió lentamente, como si aquello confirmara algo que ya sospechaba.
—Bien. Escribamos una.
—¿Una prueba?
—La primera. Ahora. —Puso una silla junto a ella—. ¿Qué debe hacer esta función? En palabras simples.
Júlia parpadeó.
—Debe tomar una temperatura, enviarla al bus CAN, esperar confirmación y actualizar la interfaz con el nuevo ajuste.
—Bien. Son cuatro cosas. Cuatro pruebas. Empecemos por la primera. —Alcanzó su teclado y se detuvo—. ¿Puedo?
Ella asintió.
Sus dedos se movieron con la velocidad casual de alguien que había escrito millones de líneas. Abrió un archivo nuevo, configuró el framework y se detuvo.
—Tu turno. Escribe la prueba. ¿Cómo se ve el éxito?
Júlia miró la función de prueba vacía. Nunca había escrito primero una prueba. Siempre escribía el código y después, si quedaba tiempo —nunca quedaba—, una prueba que confirmaba lo que el código ya hacía.
Esto era distinto. Describía lo que debía suceder antes de que existiera.
Empezó a escribir:
it("sends the requested temperature to the CAN bus", () => {
const temperature = 22;
sendTemperatureCommand(temperature);
expect(canBus.lastMessage).toEqual({
type: "CLIMATE_TEMP",
value: temperature,
});
});
Stefan leyó por encima de su hombro.
—Bien. Ejecútala.
Falló. Por supuesto que falló: ella aún no había implementado nada.
—Ahora haz que pase.
Veinte minutos después, con Stefan haciendo preguntas en lugar de dar respuestas, Júlia había refactorizado sendTemperatureCommand() hasta entenderla de verdad. La prueba pasó. La ejecutó otra vez. Seguía pasando.
—Una menos —dijo Stefan—. Tres más.
Júlia miró el visto verde en la pantalla. Era una cosa pequeña, una sola prueba pasando, pero se sentía como el primer suelo firme bajo sus pies en meses.
—¿Cómo sabes esto? ¿Lo de probar primero?
—Lo aprendí por las malas. Años escribiendo código que se rompía en producción. Años depurando a las 03:00. Al final entendí que escribir primero la prueba era una manera de pensar con claridad antes de tocar el teclado. No es magia. Es disciplina.
—Los otros equipos no hacen esto.
—Lo sé. Por eso no funciona nada.
Júlia lo miró de verdad. Era más de veinte años mayor que ella, alemán y el consultor al que todos debían tomar en serio. Esa atención tenía un peso que ella no quería cargar sin cuidado.
También parecía cansado. Triste. Como alguien que había viajado muy lejos para sentarse junto a una desconocida y ayudarla a escribir una prueba.
—¿Por qué estás aquí? De verdad.
Stefan calló un momento.
—Porque Leo me lo pidió. Porque Helena me paga. Y porque… necesitaba estar en algún lugar que no fuera Berlín.
—¿Qué tiene de malo Berlín? —La pregunta era curiosidad, no una invitación a cargarla con aquello.
—Todo. —Sonrió, pero no con los ojos—. Pero no es tu problema. Tu problema es esto —señaló la pantalla— y en esto puedo ayudarte.
Júlia asintió despacio.
—¿Volverás mañana?
—Estaré aquí todos los días. Eso es embedded advocacy. No me siento en reuniones: me siento con desarrolladores. Escribo código. Les ayudo a mejorar en terminar las cosas.
—Eso es… diferente.
—Lo sé. Escribe las otras tres pruebas. Mañana reviso cómo vas.
Se alejó y luego se dio vuelta.
—¿Júlia?
—¿Sí?
—Eres buena. Mejor de lo que sabes. El problema no eres tú; es el sistema que te tiene atrapada. Voy a intentar cambiarlo, pero quizá no funcione. Así que sigue aprendiendo. Sigue escribiendo pruebas. Y si todo se derrumba, aún tendrás las habilidades.
Se fue antes de que ella pudiera responder.
Júlia quedó sola ante el escritorio, con el resultado verde encendido, y sintió algo que no había sentido en meses.
Esperanza.
A la mañana siguiente Stefan asistió a su primera reunión diaria.
Fue un desastre.
Doce desarrolladores formaban un círculo reacio junto a las pizarras de navegación. Un scrum master —o alguien a quien habían dado ese título— sostenía un temporizador y una libreta. La energía estaba entre un funeral y una toma de rehenes.
—Empecemos. Navegación. Felipe, tú primero.
Felipe, un hombre corpulento de cuarenta y tantos que claramente era el desarrollador sénior, se encogió de hombros.
—Lo mismo que ayer. Espero la especificación del bus CAN de BergMotor. Les escribí tres veces. No responden.
—¿Puedes hacer otra cosa?
—¿Qué sugieres?
Silencio.
—Siguiente. ¿Marcela?
Una joven de ojos cansados habló.
—Bloqueada. Mi feature branch tiene conflictos con la de Felipe. Intentamos fusionar ayer. El build se rompió. Seguimos arreglándolo.
—¿Cuánto tardará?
—No sé. Tal vez una semana.
Stefan mantuvo el gesto neutral, pero por dentro catalogaba: feature branches largas. Sin integración. Sin pruebas para atrapar conflictos pronto. Sin CI que falle rápido.
La reunión siguió: bloqueado, bloqueado, esperando aprobación, bloqueado, esperando a Diego —quienquiera que fuera— para que terminara algo que había empezado tres meses antes.
Cuando terminó, Stefan se acercó a Felipe.
—¿Puedo preguntarte algo?
Felipe lo miró con la sospecha cautelosa de quien ha visto demasiados consultores.
—Tú eres el alemán.
—Stefan Richter.
—Sé quién eres. Leo te mencionó. Escribiste el ensayo.
—Para mis pecados.
Felipe sonrió, pese a sí mismo.
—¿Qué quieres saber?
—¿Por qué feature branches? ¿Por qué no desarrollo basado en trunk?
Felipe lo miró como si le hubiera propuesto que todos trabajaran desnudos.
—¿Trunk-based? ¿Que todos hagan commit a main cada día?
—Cada hora, idealmente.
—Es una locura. Romperíamos el build sin parar.
—¿Tienen pruebas automatizadas?
El silencio de Felipe fue respuesta suficiente.
—Ahí está. Trabajan aislados durante semanas y luego intentan fusionar. Claro que todo se rompe. Cuanto más tiempo están separados, más difícil se vuelve integrar.
—¿Cuál es la solución?
—Pruebas primero. Integración continua. Commits pequeños, fusiones frecuentes. No es magia: es disciplina. Pero requiere que todos cambien a la vez. No puedes hacerlo solo.
La expresión de Felipe cambió. Por un momento Stefan vio al desarrollador que había sido veinte años atrás: curioso, hábil, aún no vencido por el proceso.
—Yo trabajaba así cuando empecé. Antes de todo este… —Señaló la sala, las pizarras, la reunión que no había logrado nada— esto.
—¿Lo intentarías de nuevo, si alguien te mostrara cómo?
Felipe lo miró largo rato.
—Pregúntame de nuevo la semana próxima. Después de ver si hablas en serio.
Se alejó.
Stefan anotó en el teléfono: Felipe Gómez. Escéptico pero recuperable. Necesita pruebas.
La doctora Helena Ferreira llevaba cuarenta años en software. Había programado cuando las tarjetas perforadas eran normales. Sobrevivió la revolución del PC, la burbuja de internet y la explosión móvil. A los cincuenta y ocho se sentaba en consejos y veía a gente más joven repetir los errores que ella había cometido décadas antes.
Stefan la encontró en la sala de reuniones de la planta ejecutiva, revisando documentos con la intensidad de quien aprendió que leer la letra pequeña era la única forma de sobrevivir.
—Stefan. —No se levantó—. Siéntate.
Él se sentó.
—He estado mirando las cámaras de la planta. Ayer se sentó tres horas con Júlia. Escribieron código juntos.
—Para eso me contrató.
—La mayoría de los consultores no tocaría un teclado el primer día. Ni el último. Leo tenía razón con usted.
—Leo exagera.
—Leo tiene buen gusto. —Se recostó—. ¿Cuál es su evaluación inicial?
Stefan pensó cuánta verdad podía soportar. Decidió: toda.
—Los desarrolladores son buenos. Los sistemas están rotos. Trabajan aislados porque nadie les enseñó a trabajar juntos. No tienen pruebas porque nadie les mostró por qué importan. Fallan porque la organización está diseñada para hacerlos fallar.
Helena asintió lentamente.
—¿Y puede arreglarlo?
—Puedo intentarlo. Puedo enseñar prácticas que funcionan: TDD, comprobaciones automatizadas de build y flash, desarrollo basado en trunk. Pero nada de eso importa si la organización no cambia.
—¿Qué significa?
—Los problemas técnicos son síntomas. La enfermedad está en otra parte. —La miró a los ojos—. Klaus Hartmann está escarbando en las finanzas. Encontró algo.
El rostro de Helena no cambió, pero sus hombros se tensaron.
—Lo sé. Vi sus informes preliminares.
—¿Y?
—Nada que pueda probar. Todavía no. —Se levantó y caminó hacia la ventana. São Paulo se extendía debajo: vidrio, hormigón y doce millones de personas intentando ganarse la vida—. Bernardo Souza lleva cinco años como CFO. En ese tiempo los costos de desarrollo se triplicaron y la producción se redujo a la mitad. Siempre tiene explicaciones: iniciativas nuevas, programas de transformación, consultores externos.
—QuantumMind Solutions.
La espalda de Helena se puso rígida.
—Ha oído de ellos.
—Klaus los mencionó. Llegan la próxima semana.
—Sí. Lo contraté porque Leo confía en usted, y yo confío en Leo. Pero tengo que advertirle algo.
—Adelante.
—Bernardo no lo quería aquí. Quería a QuantumMind. Le dijo al consejo que la transformación real requería “experiencia adecuada” y que un único consultor con reputación no bastaba.
—Pero usted lo anuló.
—Convencí al consejo de probar ambos: QuantumMind para “gobernanza y proceso”; usted para “prácticas de desarrollo”. —Su voz se volvió amarga—. Era la única manera de hacerlo entrar.
Stefan entendió: estaba ahí porque Helena había luchado por él contra un CFO que no lo quería y prefería consultores caros con frameworks.
Un CFO que quizás ocultaba algo.
—¿Qué quiere que haga?
—Haga lo que vino a hacer. Enséñeles a los desarrolladores. Arregle las prácticas. Muéstreles que existe otro camino. Y observe. Escuche. Si Bernardo hace algo mal, la evidencia estará en los detalles: presupuestos, contratos, decisiones que no tienen sentido.
—¿Quiere que investigue?
—Quiero que preste atención. Hay diferencia. —Volvió al escritorio—. Tenga cuidado, Stefan. Bernardo es encantador y peligroso. No lo subestime.
—No lo haré.
Helena lo estudió un momento.
—Una cosa más.
—¿Sí?
—Júlia Nascimento. Es joven, talentosa y vulnerable ahora mismo: su líder se fue, su equipo fracasa, está sola.
Stefan sintió calor en la cara.
—Estoy aquí para ayudarla a escribir pruebas.
—Lo sé. Déjelo así. Vi cómo lo miró en la planta. Busca un héroe. No sea ese héroe. Sea un maestro. Cualquier otra cosa los destruirá a ambos.
Stefan asintió sin confiar en su voz.
—Bien. —Helena volvió a los documentos—. Ahora vaya. Tiene noventa días. Haga que cuenten.
El bar del hotel estaba casi vacío poco después de medianoche. Stefan se sentó solo ante un whisky que no bebía, mirando cómo se derretía el hielo.
Su teléfono vibró. Klaus Hartmann:
Klaus Estos números son catastróficos. Noventa desarrolladores, dieciocho meses, ocho millones de euros. Deberían haber entregado tres productos. Tienen una radio medio funcional.
Klaus Tengo que informar a Stuttgart. Van a querer respuestas.
Stefan ¿Y qué les dirá?
Klaus Que alguien nos miente. Solo que todavía no puedo probar quién.
Stefan dejó el teléfono. Tomó el whisky. Lo dejó otra vez.
No dejaba de pensar en Júlia: en cómo se le iluminó la cara cuando pasó la primera prueba, en la esperanza frágil y desesperada de sus ojos, buscando que alguien creyera en ella.
No seas un héroe, había dicho Helena.
No intentaba serlo. Intentaba enseñar a una desarrolladora a escribir pruebas. Eso era todo.
Pero se conocía lo suficiente para reconocer las señales: la atracción hacia alguien joven, brillante y sin complicaciones; la huida de un apartamento berlinés que olía a desinfectante de hospital y negociaciones de custodia; la tentación de ser la respuesta de alguien cuando él no podía responder sus propias preguntas.
Sophie tenía diecisiete años. Había sostenido la vida de su madre mientras él volaba de regreso desde México. Pasó tres semanas con él en Panamá después de que el compromiso en Berlín terminara. Luego él la puso en un avión de vuelta a la escuela y aceptó el siguiente contrato a ocho mil kilómetros. Padre del año.
Había venido a São Paulo a arreglar un equipo. Tal vez a probar que sus ideas no eran teoría. Tal vez a saber si aún creía en lo que enseñaba.
Lo que no esperaba era encontrar una razón para quedarse.
El teléfono vibró otra vez. Leo:
Leo Primer día hecho. ¿Cómo te sientes?
Stefan Como si estuviera al borde de algo. No sé si los salvo o si caigo con ellos.
Leo Ese es el trabajo, amigo. Bienvenido a São Paulo.
Stefan acabó el whisky de un trago. El ardor parecía apropiado.
Mañana enseñaría a más desarrolladores. Escribiría más pruebas. Vería a Klaus cavar en los números, a Helena vigilar a Bernardo y a QuantumMind preparar su llegada.
Mañana empezaría el trabajo de verdad.
Esta noche solo se sentó con el peso de las esperanzas de noventa desarrolladores y sus propias preguntas sin respuesta, mirando cómo respiraba la ciudad.