Revisar el código de un compañero no es buscar errores ni repartir culpas: es la última red antes de que algo llegue a producción. Te contamos qué miramos en cada Pull Request, las buenas prácticas que seguimos, qué confiarle a un agente de IA (y qué confirmar a mano aunque diga que todo está bien) y cómo hacemos code review en Nextik.
En el artículo anterior contamos cómo trabajamos con ramas y Pull Requests: cada tarea vive en su rama y entra a main por un PR. Pero un Pull Request no se aprueba solo. Entre que alguien lo abre y que se mergea hay un paso que, hecho bien, es uno de los que más calidad agrega al producto: la revisión de código —el code review.
La idea es simple: antes de que un cambio toque la rama principal, otra persona lo lee. No para buscar culpables ni para lucirse, sino para atrapar lo que al autor se le pasó —a todos se nos pasa algo— y para que el conocimiento no quede encerrado en una sola cabeza. Pero hacerlo bien tiene su técnica, y hacerlo mal es una fuente clásica de fricción en los equipos. En este artículo explicamos cómo lo abordamos.
Un code review no es un examen que el autor aprueba o reprueba. Es una conversación entre dos personas que quieren lo mismo: que el código sea bueno.
Es fácil pensar que revisar código sirve solo para “encontrar bugs”. Atrapa bugs, sí, pero ese es apenas uno de sus beneficios. Las razones por las que insistimos en revisarlo todo son varias:
Visto así, el code review deja de ser un trámite molesto antes del merge y se vuelve una de las herramientas más baratas que tiene un equipo para mejorar.
Cuando abrimos un Pull Request para revisarlo, no leemos línea por línea de arriba a abajo sin un plan. Tenemos una jerarquía mental: hay cosas que importan mucho y cosas que importan poco, y conviene no confundirlas. De lo más importante a lo menos:
Lo primero, y lo más importante: ¿el cambio resuelve el problema que dice resolver? Antes de mirar el estilo de una sola línea, entendemos la intención del PR —para eso sirve una buena descripción— y verificamos que el código realmente la cumpla. Un código bellísimo que resuelve el problema equivocado no sirve de nada.
Aquí es donde se atrapan la mayoría de los bugs. El “camino feliz” suele estar bien; lo que se olvida son los bordes:
null?La pregunta que más repetimos en los comentarios es, justamente, “¿qué pasa si…?“.
El código se escribe una vez y se lee decenas. Por eso pesa tanto que sea claro: nombres que dicen qué hacen las cosas, funciones que hacen una sola cosa, y nada de complejidad innecesaria. Una buena pregunta de revisor es: “¿entendería esto dentro de seis meses, sin que nadie me lo explique?”. Si la respuesta es no, vale la pena un comentario.
Un cambio de lógica debería venir acompañado de pruebas que lo respalden —y, sobre todo, que cubran esos casos borde del punto 2. Revisamos que las pruebas existan, que prueben lo que importa (no solo el camino feliz) y que efectivamente fallarían si el código se rompiera. Pruebas que pasan siempre, hagas lo que hagas, dan una falsa sensación de seguridad.
Algunas cosas merecen atención extra porque equivocarse sale caro: datos de usuarios que entran sin validarse, consultas a base de datos armadas concatenando texto (hola, inyección SQL), secretos o contraseñas que se cuelan en el código, permisos que no se verifican. No hace falta ser un experto en seguridad para detectar los descuidos más comunes; hace falta tenerlos presentes en cada revisión.
Al final de la lista está el estilo: espacios, comillas, orden de los imports, comas. Importa, pero no debería ocupar el tiempo de una persona. Por eso lo dejamos casi por completo en manos de herramientas automáticas —linters y formatters— que corren solas en cada PR. Discutir formato a mano en los comentarios es gastar atención humana en algo que una máquina resuelve mejor y sin discusiones.
Saber qué buscar es la mitad. La otra mitad es cómo comunicarlo, porque un buen hallazgo dicho de mala forma genera más daño que beneficio. Estas son las reglas que seguimos como revisores:
La calidad de una revisión también depende de lo que recibe el revisor. Quien abre el Pull Request puede hacer que revisarlo sea fácil o un suplicio:
console.log olvidados, comentarios de prueba y descuidos atrapas tú mismo —y que ya no le harán perder el tiempo a nadie más.Cada vez más, una primera pasada de la revisión la hace un agente de IA: lee el diff, comenta posibles bugs, sugiere mejoras y a veces hasta propone el arreglo. Es una herramienta enormemente útil —no se cansa, no tiene prisa, no se salta archivos— y la usamos. Pero conviene tener clarísimo qué hace bien y dónde no se le puede creer a ciegas.
Un agente es excelente para el trabajo mecánico y de patrón, eso en lo que la atención humana se agota rápido:
null sin manejar, una variable sin usar, un catch vacío, un patrón que se repite mal copiado.Donde hay que poner el freno es en confiar en su veredicto. Que un agente diga “todo se ve bien” no significa que esté bien — significa que no encontró nada que reconociera como un problema, que es muy distinto. Estos son los límites que tenemos siempre presentes:
Por eso, aunque el agente diga que está todo bien, hay cosas que confirmamos a mano antes de aprobar:
La regla mental es sencilla: el agente es un revisor más, no el que firma. Su trabajo acelera y mejora la revisión humana, no la reemplaza. Cuando un agente y una persona revisan juntos, se atrapa mucho más que con cualquiera de los dos por separado — siempre que la persona siga siendo quien decide.
Confía en el agente para encontrar; confía en el humano para aprobar. Un “se ve bien” automático es un punto de partida, nunca el punto final.
Juntando todo lo anterior, nuestro flujo de revisión se ve así:
main por un Pull Request revisado. Sin excepciones, también para los cambios pequeños: los descuidos se cuelan justo cuando uno piensa “esto es trivial, no hace falta revisarlo”.main y la rama se borra. Cierra el ciclo que describimos en el artículo de Git.Hay un detalle de cultura que para nosotros es tan importante como el proceso: un comentario en un review no es un ataque, y una aprobación no es un favor. Es la forma normal en que un equipo construye software del que se siente orgulloso. Cuando esa idea se asienta, el code review deja de dar pereza y se vuelve, sinceramente, una de las mejores partes del día.
Un buen code review no se trata de cazar errores ni de imponer gustos, sino de cuidar el producto y al equipo a la vez:
Son hábitos sencillos, pero su efecto se acumula. Un equipo que revisa bien su código no solo tiene menos bugs en producción: tiene gente que aprende más rápido, un repositorio coherente y la tranquilidad de que nada importante llega a main sin que más de una persona lo haya mirado a los ojos.