Cuándo nos llaman

  • Una función se armó en dos días y falla de manera intermitente hace dos meses, y nadie sabe en qué parte.
  • Las pruebas pasan, la revisión se aprobó, y la función igual falló para todos los usuarios reales.
  • El código creció más rápido que la comprensión que alguien tiene de él, y un cambio chico ahora toca cosas que nadie esperaba.
  • Un prototipo llegó a producción sin que nadie decidiera que tenía que llegar.
  • Hay mucho código y muy poco acuerdo sobre qué partes son confiables.
  • Todo funciona en la máquina de quien lo generó, y las fallas empiezan en los bordes: otro formato, otra versión, otro huso horario.

Qué hacemos

Leer lo que realmente se generó

No es pasar un analizador. Seguimos a mano los caminos críticos y comprobamos si el código hace lo que el código de alrededor supone que hace. El código generado es verosímil por construcción, y eso es justamente lo que lo vuelve difícil de revisar rápido.

Ejercitar el camino que recorre una persona

La mayoría de las pruebas generadas cubren el caso que su autor ya tenía en la cabeza. Probamos el otro: el formato real que manda el navegador, la entrada vacía, el segundo clic, la versión de la biblioteca que está instalada y no la del ejemplo.

Encontrar los supuestos que nadie escribió

Reintentos silenciosos, tiempos de espera que no existen, una biblioteca usada como funcionaba dos versiones mayores atrás. Pasan la revisión porque parecen normales.

Hacer visible la falla

Instrumentación en los caminos que importan, para que el próximo problema intermitente tenga una ubicación en lugar de una teoría. Un sistema que nadie puede observar es un sistema que nadie puede arreglar bajo presión.

Dejar el criterio

Por escrito: qué se revisó, qué se encontró y qué mirar la próxima vez. El objetivo es que tu equipo deje de necesitarnos para esto, no que nos siga llamando.

Proyectos típicos

Un camino crítico, una semana, precio cerrado

Tomamos el camino donde equivocarse sale más caro —el pago, la autenticación, lo que mueva dinero o datos personales— y lo leemos en serio. Un informe escrito al final. Autocontenido: podés parar ahí, y usarlo con quien quieras.

Auditar una función que falla de forma intermitente

Reproducir la falla, encontrar el supuesto que la causa, corregirlo, e instrumentar el camino para que la próxima se vea en minutos y no en semanas.

Revisar un código antes de que crezca más

Leer las partes que concentran el riesgo, escribir qué se rompe primero y por qué, y priorizar por consecuencia y no por lo feo que se vea el código.

Montar una revisión que el equipo pueda sostener

Comprobaciones que corren en cada cambio, y un estándar corto y escrito sobre qué tiene que mirar igual una persona. Automatizar donde es confiable, criterio donde no.

Llevar un prototipo que anda a algo operable

Manejo de errores, límites, secretos fuera del código, registros que digan algo, y un despliegue que se pueda revertir.

Qué se lleva

  • Un informe escrito: qué se revisó, qué se encontró y la consecuencia de cada hallazgo
  • Las correcciones aplicadas en tu repositorio, pasando por tu proceso de revisión
  • Pruebas que cubren el camino de una persona real, no sólo el feliz
  • Instrumentación en los caminos que fallan en silencio
  • Un estándar corto que tu equipo pueda aplicar sin nosotros

Preguntas que nos hacen

¿Están en contra de usar IA para escribir código?

No. La usamos todos los días y es una ganancia real. El problema no es que un modelo escriba código, es que el código verosímil pasa la revisión más rápido de lo que alguien puede verificarlo. La velocidad conviene conservarla; lo que falta es el paso que hacemos nosotros.

¿No alcanza con correr una herramienta de análisis estático?

Esas atrapan una categoría, y conviene tenerlas. No atrapan una función correcta por separado y equivocada para el sistema que la rodea, que es la mayoría de lo que encontramos. Eso requiere leer el código teniendo el resto del sistema en la cabeza.

¿Le van a decir a nuestro equipo que lo hizo mal?

No, y sería inútil. Casi nada de lo que encontramos es descuido: es código que parecía correcto, en un lenguaje que nadie tuvo tiempo de cuestionar. El informe va a quien lo pidió, y el punto es qué hacer ahora.

¿Cómo empieza y cuánto cuesta?

Un camino crítico, una semana, precio cerrado, un informe escrito. Sabés qué estás comprando antes de la primera llamada. Desde ahí podés parar, darle el informe a quien quieras, o seguir —y casi todo lo que encontramos conviene arreglarlo lo arregle quien lo arregle—.

¿En qué se diferencia de la revisión de arquitectura?

La revisión de arquitectura mira la forma del sistema: cómo encajan las piezas, qué cede primero bajo carga, qué te va a costar el diseño el año que viene. Esta mira el código en sí, sobre todo lo escrito hace poco y rápido. Si no sabés si el problema es el diseño o la implementación, empezá por la revisión.

Contacto

Iniciar una conversación

Cuéntenos qué están construyendo, o qué se está rompiendo. Va a recibir una respuesta directa de un ingeniero, no un libreto de ventas.

¿Prefiere el correo? Escriba a [email protected]. Respondemos desde una dirección real, y nada de lo que envíe se guarda en otro lado que nuestra casilla.