21 puntos por GN⁺ 2025-12-26 | 5 comentarios | Compartir por WhatsApp
  • Según el análisis de 470 PR de código abierto, el código escrito por IA contiene en promedio 1.7 veces más problemas que el escrito por humanos
  • En el código generado por IA fueron notablemente más frecuentes defectos clave como errores lógicos, menor legibilidad y vulnerabilidades de seguridad; en particular, los problemas de legibilidad aumentaron más de 3 veces
  • En el código de IA son frecuentes la omisión del manejo de errores, errores de concurrencia e inconsistencias de nombres, lo que amplía la carga de revisión y el riesgo operativo
  • Las causas se atribuyen a la falta de comprensión de la lógica de negocio, la búsqueda de una exactitud superficial y la preferencia por patrones poco eficientes
  • El informe enfatiza la necesidad de fortalecer los sistemas de control de calidad del código generado por IA e incorporar procesos de revisión de código, seguridad y pruebas orientados a IA

Resumen del informe AI vs Human Code Generation Report

  • CodeRabbit realizó un estudio para analizar empíricamente las diferencias de calidad entre el código escrito por IA y por humanos
    • Se examinaron 470 PR de código abierto en GitHub; de ellos, 320 fueron coescritos con IA y 150 fueron escritos solo por humanos
    • Todos los resultados se normalizaron como cantidad de issues por cada 100 PR, y se midió la frecuencia por tipo de problema mediante comparaciones estadísticas de proporciones
  • En conclusión, la IA aumenta la productividad, pero también incrementa la tasa de errores
    • En promedio, los PR escritos con IA tuvieron 10.83 problemas, frente a 6.45 en los PR escritos por humanos
    • En particular, en el código de IA se detectaron con mayor frecuencia errores de alta severidad

Limitaciones del estudio

  • Como no se podía verificar directamente si un PR fue escrito con IA, se clasificaron como tales los PR con la señal AI co-authored (co-authored-by)
    • Los PR sin esa señal se consideraron escritos por humanos, aunque una separación perfecta no es posible
  • A pesar de esta limitación, las diferencias estadísticas en los patrones de problemas entre ambos grupos fueron significativas
  • La metodología completa se publica al final del informe

Diez hallazgos principales

  • No todos los tipos de error existen solo en la IA, pero en la mayoría de las categorías el código generado por IA presenta una mayor tasa de fallas
    • Humanos e IA cometen errores del mismo tipo, pero la IA los produce con más frecuencia y a mayor escala
  • 1. El total de issues aumenta 1.7 veces

    • Promedio de 10.83 por PR escrito con IA, frente a 6.45 en PR escritos por humanos
    • Hay muchos más PR con concentración atípica de issues (outliers) en código de IA, lo que aumenta la carga de revisión
  • 2. Aumentan los errores de alta severidad

    • Los problemas graves y críticos son entre 1.4 y 1.7 veces más frecuentes
  • 3. Los problemas de lógica y exactitud aumentan 75%

    • Incluyen errores de lógica de negocio, dependencias incorrectas, fallas de flujo de control y errores de configuración
    • Su costo de corrección es alto y pueden derivar en incidentes operativos
  • 4. Los problemas de legibilidad aumentan más de 3 veces

    • La convención de nombres, la estructura del código y la consistencia de expresión son notablemente peores
    • Aunque el código parezca ordenado por fuera, son frecuentes las violaciones de patrones locales
  • 5. La omisión de manejo de errores y rutas de excepción se duplica

    • A menudo faltan validaciones de null, condiciones guard y lógica de manejo de excepciones
    • Es un tipo de problema directamente ligado a caídas reales del servicio
  • 6. Los problemas de seguridad aumentan hasta 2.74 veces

    • Ejemplos representativos son el manejo inadecuado de contraseñas y vulnerabilidades de referencia a objetos
    • No son vulnerabilidades exclusivas, pero la mayoría de los defectos de seguridad se amplifican
  • 7. Los problemas de rendimiento son menos, pero se concentran en la IA

    • Las llamadas I/O excesivas son cerca de 8 veces más frecuentes
    • La IA prefiere código orientado a la claridad, sacrificando eficiencia
  • 8. Los errores de concurrencia y dependencias aumentan cerca del doble

    • Son frecuentes errores de orden, flujos de dependencia incorrectos y mal uso del control de concurrencia
  • 9. Los problemas de formato aumentan 2.66 veces

    • Hay muchos errores formales como indentación, espacios y estilos inconsistentes
    • Incluso usando formateadores automáticos y linters, el ruido aumenta en el código de IA
  • 10. Las inconsistencias de nombres se duplican

    • Hay más nombres ambiguos, términos inconsistentes y uso de identificadores genéricos, lo que eleva la carga cognitiva del revisor

Causas de los problemas

  • La IA carece de comprensión suficiente de la lógica de negocio
    • Genera código con base en patrones estadísticos y omite reglas del sistema
  • Generación centrada en una exactitud superficial
    • El código parece correcto a simple vista, pero contiene errores en la protección del flujo de control o en el orden de dependencias
  • Incumplimiento de convenciones específicas del repositorio
    • Las reglas de nombres, estructura y formato se degradan hacia formas generalizadas
  • Debilitamiento de patrones de seguridad
    • Sin instrucciones explícitas, reproduce patrones de código obsoletos o vulnerables
  • Preferencia por la simplicidad antes que por la eficiencia
    • Tiende a usar I/O repetitivo y estructuras no optimizadas

Medidas para equipos de ingeniería

  • Adoptar IA no solo exige más velocidad, sino también rediseñar el sistema de aseguramiento de calidad
  • 1. Darle suficiente contexto a la IA

    • Es necesario especificar reglas de negocio, patrones de configuración y restricciones de arquitectura para reducir errores
    • Incluir en el prompt guías y esquemas específicos del repositorio
  • 2. Aplicar estilo de código basado en políticas

    • Prevenir problemas de legibilidad con formateadores en CI, linters y guías de estilo
  • 3. Agregar salvaguardas de exactitud

    • Pruebas obligatorias, validaciones de null/type, estandarización del manejo de excepciones y condiciones guard explícitas
  • 4. Reforzar los valores predeterminados de seguridad

    • Centralizar credenciales, bloquear el uso directo de contraseñas y ejecutar SAST y linters de seguridad automáticos
  • 5. Guiar hacia patrones eficientes

    • Procesamiento por lotes de I/O, selección adecuada de estructuras de datos y pistas de rendimiento
  • 6. Incorporar una checklist de PR orientada a IA

    • Al revisar, verificar los siguientes puntos:
      • Cobertura de rutas de error
      • Exactitud del control de concurrencia
      • Validación de valores de configuración
      • Método de manejo de contraseñas
  • 7. Incorporar automatización para revisar código de IA

    • Para evitar que se escapen bugs por el aumento de la fatiga de revisión, se propone usar la herramienta de revisión de código con IA (CodeRabbit)
      • Estandariza la calidad de la revisión y reduce el tiempo de revisión y la carga cognitiva

Conclusión

  • Las herramientas de codificación con IA son un acelerador potente, pero acelerar sin salvaguardas es riesgoso
  • El código generado por IA muestra mayores niveles de variabilidad, tasa de errores y severidad
  • Es imprescindible usar la IA como herramienta complementaria, no como reemplazo, y fortalecer los sistemas de calidad, seguridad y pruebas
  • Para asegurar velocidad y calidad al mismo tiempo, se necesita una gestión de ingeniería intencional
  • Aprovechar herramientas de revisión de código para IA puede ayudar de forma práctica a mantener la calidad

5 comentarios

 
cshj55 2025-12-26

1.7 veces es menos de lo que esperaba...?

 
ds2ilz 2025-12-26

Yo también he sentido algo parecido al programar con IA. Viendo las causas resumidas, me parece que se debe a que no se le proporciona suficiente contexto sobre patrones, convenciones de nombres, manejo de casos límite, condiciones de guardia, etc., que las personas ya damos por sentado como conocimiento básico al programar.
Por eso yo hice un archivo de reglas reuniendo justo ese tipo de cosas, y cuando programo le doy la instrucción de que lea ese archivo sí o sí y lo cumpla. Entonces, con solo ir mejorando el archivo de reglas, la calidad del resultado mejora bastante.

 
princox 2025-12-26

Me da miedo que haya quienes opinen: "hicimos un montón; si es solo 1.7 veces más, ¿no sale regalado?..."

 
kimjoin2 2025-12-26

Pero fue rápido, ¿no? Me hizo pensar en ese meme jajaja

 
GN⁺ 2025-12-26
Opiniones de Hacker News
  • Creo que el “vibe coding” ya existía antes de la IA

    • He visto a muchos desarrolladores pegar null checks por todos lados sin pensar por qué un objeto es null
    • Ese enfoque puede servir en algunas áreas, pero si todo el sistema se construye así, el mantenimiento se vuelve una pesadilla
    • El vibe coding con IA da la impresión de acelerar ese estilo de “solo mirar el resultado deseado en pantalla sin entender por qué funciona”
    • Trabajé antes en una empresa así, y como se tragaban las excepciones con null checks, los errores quedaban enterrados en silencio
      • El equipo se echaba flores diciendo que eran muy inteligentes, pero en realidad el sistema funcionaba con código copiado y pegado de StackOverflow y una estructura MVP vieja
      • En un entorno así era casi imposible pensar de forma independiente
      • Aun así, herramientas como Claude Code sí aumentan mucho la productividad cuando se usan sobre una base de código bien diseñada
    • Copiar y pegar desde StackOverflow y detenerse en “más o menos funciona” es precisamente vibe coding
      • La IA solo automatizó ese proceso
    • Más que “ves lo que quieres ver”, la expresión correcta sería “pones cualquier cosa en pantalla”
      • Un null check metido sin pensar después provoca errores de datos sutiles y hace muy difícil rastrear la causa
    • También estoy de acuerdo en que el vibe coding vuelve más rápidos a los desarrolladores dependientes de StackOverflow
      • Aumenta el número de desarrolladores que no resuelven problemas por sí mismos
      • Y además la confiabilidad termina siendo aún menor que antes
    • Lo que más me frustra al usar IA es que sigue al pie de la letra un estilo de código mediocre propio de cada lenguaje
      • Yo sigo el principio de “si no generas datos incorrectos, no tendrás que procesarlos”, pero la IA insiste en romperlo
      • Casi nunca define tipos ni mantiene invariants, y trata de resolver todo solo con cadenas e enteros
      • Por eso uso la IA de forma limitada, basada en tab-complete, y corrijo yo mismo los errores estructurales
      • Después de corregir, la IA también empieza a seguir la dirección correcta, así que si mejora la integración con IDE y LSP, podría volverse mucho más útil
  • Las críticas al vibe coding son válidas, pero la verdad es que la calidad del código ya era pésima antes de la IA

    • La mayor parte del código se desplegaba lentamente y además con baja calidad
    • Si desplegar más rápido permite validar ideas antes, hay quienes consideran aceptable tolerar cierto nivel de errores
    • Hoy en día es cada vez más común que la gerencia pregunte: “¿por qué una función así de simple tarda meses?”
    • Pero la razón de que “una función menor tome tanto tiempo” no está en los algoritmos, sino en la infraestructura y la estructura de colaboración
      • La IA no puede resolver esos problemas de fondo
    • El costo de mantenimiento y la complejidad se acumulan como interés compuesto con el tiempo
      • Para proyectos de corto plazo, el vibe coding puede servir; para sistemas de largo plazo, no es adecuado
    • Yo creo que lo importante es equilibrar al desarrollador intencional con el desarrollador vibe
      • La IA fortalece demasiado el lado vibe y rompe ese equilibrio del sistema
    • Más importante que la calidad del código es el entendimiento compartido entre el problema de negocio y la solución técnica
      • Incluso si la calidad es baja, lo más importante es tener claras las razones y los trade-offs
    • Pero no parece algo positivo que alguien que no sabe de software le diga al desarrollador que “lo está haciendo mal”
  • Decir que “el código de IA genera 1.7 veces más problemas” solo habla del número de bugs detectados

    • En la práctica también se dejan pasar muchos problemas del código generado por IA porque las revisiones de PR no se hacen bien
    • Incluso hay estudios que dicen que el code review debería enfocarse más en entender y compartir la estructura que en encontrar bugs
    • Por otro lado, también hay quien opina que el código de IA, al tener más comentarios y ser más fácil de leer, termina revisándose con más detalle
      • En el código humano abundan más los comentarios del tipo “no sé qué hace esto, pero si lo borro se rompe”
  • Hace poco Copilot me sugirió una implementación de IComparable en .NET y me ahorró unos minutos

    • Pero cambió los nombres de variables por x y y, y terminé debugueando una hora
    • Si lo hubiera escrito yo mismo, ese error no habría pasado
    • Aun así, al final era casi igual al código que habría escrito yo
  • Antes ya habíamos visto algo parecido

    • Si ignorabas el manejo de errores y los edge cases, podías desplegar mucho más rápido, pero al final eso se convertía en una bomba de bugs
    • La IA da la impresión de llevar eso al extremo
    • Incluso salió el chiste de que “entonces mejor habría que migrar a Erlang o Elixir”
  • Me pareció interesante que una empresa basada en LLM dijera que “la IA es menos mala de lo que parece”

    • Pero Coderabbit es una empresa de revisión de código con LLM, así que más bien tiene el incentivo de decir “la IA hace desastres, así que hay que revisar con IA”
    • Yo también uso Copilot como herramienta de revisión, y la revisión con IA casi siempre acierta, así que ayuda bastante antes de la revisión humana
  • Yo uso CodeRabbit con frecuencia, pero todavía tiene muchos false positives

    • A veces señala “falta validación de datos” incluso cuando el código ya fue validado
    • Aun así, si le indicas que está equivocado, la herramienta lo aprende y lo acepta
  • “1.7 veces más” y “aumentó 1.7 veces” no significan lo mismo

    • Pero al final esta discusión sobre cifras se siente como una pelea sin sentido
  • El agentic AI coding no es más que una herramienta, y si se usa mal, obviamente dará malos resultados

    • Como ejemplo de uso exitoso, recomiendan el caso de justhtml en Python
    • Pero también es problemático caer en la lógica de blanco o negro de que “si no sabes usarlo, eres incompetente”
      • Te parezca útil o no la IA, eso al final es simplemente una diferencia de experiencia
  • La frase del titular, “el código de IA genera 1.7 veces más problemas”, es imprecisa

    • En realidad, esos “problemas” incluyen detalles de formato y naming, no solo bugs
    • El artículo ni siquiera indica la cifra exacta de bugs