El código ya no es el problema

El código ya no es el problema

  1. Inteligencia Artificial
  2. 1 week ago
  3. 6 min read

El código ya no es el problema. Revisar lo que se genera es el verdadero cuello de botella

Razonamiento previo

“La mayoría de desarrolladores cree que la IA les hará más productivos porque genera código más rápido, pero el verdadero problema es que la velocidad de generación ha superado dramáticamente nuestra capacidad cognitiva de validación, creando una ilusión de productividad que acumula deuda técnica invisible.”

El malentendido más común: Pensar que el tiempo ahorrado escribiendo código se traduce directamente en tiempo ahorrado en el ciclo de desarrollo.

La falsa intuición: “Si el código compila y pasa los tests básicos, probablemente está bien.”

Consecuencias prácticas: Bugs sutiles en producción que emergen semanas después, arquitecturas que se degradan incrementalmente, patrones inconsistentes que fragmentan el codebase, y una falsa sensación de velocidad que enmascara fricción acumulada.

La escena que ya conoces

Son las 4 de la tarde. Llevas tres horas usando Copilot, Cursor o Claude para implementar un módulo de sincronización de inventario. El código fluye. Generas un servicio, luego un repositorio, después los DTOs, los mappers, los endpoints. Todo compila. Los tests unitarios que también generaste pasan en verde.

Haces commit. Push. El PR tiene 847 líneas añadidas.

Tu compañero lo abre, scrollea, scrollea más, y escribe: “LGTM 👍”.

Tres semanas después, el sistema empieza a mostrar inconsistencias. El inventario se desincroniza bajo carga. Investigas y descubres que el código generado usaba un patrón de retry sin backoff exponencial, que las transacciones no tenían el isolation level correcto, y que había una race condition obvia en el método de actualización concurrente.

El código estaba ahí, visible, en ese PR de 847 líneas que nadie realmente leyó.

Donde la intuición nos traiciona

La narrativa dominante dice: “La IA te hace 10x más productivo”. Y técnicamente, en la fase de generación, es cierto. Puedes producir código funcional a una velocidad que antes era imposible.

Pero aquí está el error: confundimos throughput de generación con throughput de entrega de valor.

El desarrollo de software nunca fue principalmente un problema de velocidad de escritura. Un desarrollador senior pasa quizás el 20% de su tiempo escribiendo código nuevo. El resto es leer código existente, entender contexto, diseñar soluciones, revisar, debuggear, refactorizar.

Cuando aceleramos la generación 10x pero mantenemos constante nuestra capacidad de revisión, no multiplicamos la productividad. Multiplicamos el volumen de código que pasa sin escrutinio adecuado.

El cuello de botella se movió, y muchos no se dieron cuenta.

El modelo mental correcto

Piensa en el desarrollo de software como un sistema con dos fases críticas: producción y validación. Antes de la IA generativa, estas fases estaban naturalmente balanceadas. Escribir código era lo suficientemente lento como para que la revisión pudiera mantener el ritmo.

Ahora, la fase de producción se desacopló. Puedes generar código mucho más rápido de lo que puedes validarlo profundamente. Y aquí está la trampa: la validación superficial (compila, pasa tests básicos) da una falsa sensación de completitud.

La validación profunda requiere:

  • Entender el contexto completo del sistema
  • Evaluar trade-offs arquitecturales
  • Considerar casos edge que los tests no cubren
  • Identificar patrones sutiles de acoplamiento
  • Anticipar implicaciones de mantenimiento

Esta validación profunda es cognitivamente costosa y no escala linealmente con la cantidad de código. De hecho, puede escalar exponencialmente: más código significa más interacciones potenciales, más contexto que mantener en la cabeza, más superficie de ataque para bugs.

La paradoja de la productividad aparente

Aquí está la ironía: mientras más código generas sin revisión adecuada, más lento se vuelve el sistema a largo plazo. No inmediatamente, no de forma obvia, pero inexorablemente.

Cada pieza de código no validada profundamente es una deuda que pagarás más tarde:

  • En debugging de comportamientos inesperados
  • En refactorings más complejos porque el código asumió cosas incorrectas
  • En onboarding más lento porque nadie entiende realmente ciertas partes
  • En features que toman más tiempo porque el código base se volvió frágil

La “productividad 10x” se convierte en “deuda 10x” si no ajustas tu proceso de validación.

¿Qué hacer entonces?

No se trata de rechazar la IA. Se trata de recalibrar tus prácticas:

1. Reduce el batch size de generación En lugar de generar un módulo completo, genera una función. Valídala profundamente. Luego genera la siguiente. Esto mantiene la carga cognitiva de validación manejable.

2. Invierte más tiempo en revisión, no menos Si antes dedicabas 30% de tu tiempo a code review, ahora deberías dedicar 50%. Porque ahora estás revisando más código, y la superficie de error potencial aumentó.

3. Desconfía de PRs grandes generados con IA 847 líneas de código generado necesitan tanta o más revisión que 847 líneas escritas manualmente. Quizás más, porque el código generado puede seguir patrones que parecen correctos pero tienen sutilezas problemáticas.

4. Genera tests exhaustivos primero Si vas a usar IA para generar implementaciones, primero genera los tests. Tests exhaustivos, no solo los happy paths. Usa la IA para explorar edge cases. Luego genera la implementación contra esos tests.

5. Revisa el código generado como si fueras a mantenerlo por 10 años Porque probablemente lo harás. La facilidad de generación no debe bajar los estándares de lo que aceptas en el codebase.

6. Pair programming con IA, no delegación ciega Usa la IA como copiloto, no como piloto. Genera código, pero tú eres quien decide si ese código merece existir. La IA propone, tú dispones.

La nueva habilidad crítica

En la era pre-IA, la habilidad crítica era escribir código correcto rápidamente.

En la era de IA generativa, la habilidad crítica es evaluar código ajeno (generado o no) profundamente y rápido.

Necesitas desarrollar:

  • Lectura de código de alto ancho de banda: Procesar más líneas por minuto sin perder profundidad.
  • Reconocimiento de patrones problemáticos: Identificar code smells, anti-patrones, acoplamiento inadecuado con un vistazo.
  • Intuición arquitectural: Evaluar si una implementación específica es consistente con el diseño general del sistema.
  • Escepticismo calibrado: No asumir que “si compila y pasa tests, está bien”, pero tampoco rechazar todo código generado por principio.

La ironía es que estas habilidades siempre fueron importantes, pero ahora son el cuello de botella dominante.

Conclusión

El código ya no es el problema porque escribirlo dejó de ser el limitante. Ahora el limitante eres tú: tu capacidad de evaluar, cuestionar y validar lo que se genera.

Cada vez que aceptas código sin revisión profunda, estás haciendo una apuesta implícita: “confío en que esto está bien”. A veces ganarás. Pero la deuda se acumula silenciosamente hasta que explota en producción.

La productividad real en la era de código generativo no se mide en líneas producidas. Se mide en líneas que entiendes profundamente y que decidiste, conscientemente, que merecen existir en tu sistema.

Revisa menos código, pero revísalo mejor. O acepta que estás optimizando para velocidad aparente, no para entrega sostenible.

ia productividad revisión-código