SWE-NFI: Studying and Benchmarking Coding Agents for Non-Functional Improvements
Este artículo presenta SWE-NFI, un referente que comprende 188 tareas del mundo real y 92 reglas ejecutables diseñadas para evaluar agentes de codificación en mejoras no funcionales, revelando que, si bien los agentes logran una alta corrección funcional, se quedan significativamente atrás de los desarrolladores humanos en la ejecución de mejoras de código que preservan el comportamiento.
Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo
Imagina que le estás enseñando a un robot a escribir código. Durante mucho tiempo, la única forma de probar si el robot estaba haciendo un buen trabajo era preguntar: "¿Funciona el programa?". Si el robot construía una calculadora que sumaba números correctamente, recibía una estrella dorada. Pero en el mundo real, escribir software es como construir una casa. El hecho de que el techo no tenga goteras y las puertas se abran no significa que la casa sea un placer para vivir. Tal vez el cableado es un desastre enredado detrás de las paredes, la pintura se está descascarando o las instrucciones sobre cómo usar el interruptor de la luz están escritas con tinta invisible. Estas son las partes "no funcionales" de una casa: qué tan fácil es de reparar, qué tan segura es y qué tan agradable se ve.
Recientemente, programas informáticos inteligentes llamados "agentes de codificación" se han vuelto muy buenos construyendo la estructura básica del software. Pueden corregir errores y añadir nuevas funciones. Pero nadie sabía realmente si estos agentes también podían realizar el trabajo desordenado, aburrido pero superimportante de limpiar el código, organizar el cableado y escribir instrucciones claras sin romper nada de lo que ya estaba funcionando. Esta es la pregunta que un equipo de investigadores de universidades de Canadá, China y Singapur decidió responder. Querían ver si estos ayudantes digitales podían ser más que simples constructores funcionales y convertirse en verdaderos cuidadores de software.
Para averiguarlo, los investigadores crearon una nueva prueba llamada SWE-NFI. Piensa en esta prueba como una gigantesca lista de verificación automatizada de un inspector. En lugar de solo comprobar si un programa se ejecuta, la lista tiene 92 reglas específicas sobre qué tan "bueno" se ve y se siente el código. Estas reglas comprueban cosas como: "¿Escribiste una explicación clara de lo que hace esta función?" (Documentación), "¿Manejaste los errores de forma segura para que el programa no se bloquee?" (Manejo de Errores) y "¿Utilizaste herramientas modernas en lugar de herramientas viejas y oxidadas?" (Restricciones de Librería).
Los investigadores construyeron esta prueba utilizando 18 de ejemplos de la vida real tomados de proyectos de software reales que humanos ya habían corregido. Tomaron la versión "antes" del código, se la entregaron a varios agentes de codificación y les pidieron que lo hicieran mejor sin cambiar lo que realmente hacía. Luego, usaron su lista de 92 reglas para calificar a los agentes. También contaban con una puntuación de "referencia humana", que es qué tan bien un desarrollador humano mejoró ese mismo fragmento de código en el mundo real.
Los resultados fueron un golpe de realidad. Los mejores agentes de codificación fueron bastante buenos asegurándose de que el código siguiera funcionando (obteniendo una tasa de éxito de funcionalidad del 70.0%). Sin embargo, cuando se trataba de hacer que el código fuera mejor en las formas que a los humanos les importan, los agentes tuvieron dificultades. Se quedaron cortos frente a los desarrolladores humanos en casi todas las categorías.
La mayor brecha fue en "Patrones de Lógica", que es como la integridad estructural del código. Los humanos mejoraron esta área con un puntaje promedio de 1.5, pero los mejores agentes de codificación solo lograron entre 0.0 y 1.3. Es como si los robots pudieran construir una pared resistente, pero no pudieran entender cómo hacer que los ladrillos encajaran perfectamente o cómo añadir un arco elegante.
El estudio también encontró algunas peculiaridades interesantes:
- Un archivo vs. Muchos: Los agentes estaban bien corrigiendo un solo archivo, pero cuando tenían que coordinar cambios a través de múltiples archivos a la vez (como arreglar el cableado de la cocina y de la sala al mismo tiempo), empeoraban mucho.
- Costo vs. Calidad: Los investigadores comprobaron cuánto "combustible" (tiempo de computación y tokens de datos) usaron los agentes. Descubrieron que gastar más dinero o tiempo no siempre significaba mejores resultados. Un agente gastó 100 veces más recursos que otro y no produjo mejoras de código significativamente mejores.
- Consistencia: Una vez que un agente lograba escribir código que realmente funcionaba, era bastante consistente al realizar esas pequeñas mejoras. El verdadero problema era lograr que el código funcionara en primer lugar.
En resumen, el artículo sugiere que, si bien nuestros robots de codificación se están volviendo muy buenos en el "qué" (hacer que las cosas funcionen), todavía tienen un largo camino por recorrer en el "cómo" (hacer que el código sea mantenible, seguro y limpio). Son excelentes aprendices que pueden seguir instrucciones, pero aún no han aprendido el arte de ser un maestro artesano que sabe cómo ordenar el taller. Los investigadores esperan que, al tener esta nueva y estricta lista de verificación, podamos enseñar a la próxima generación de agentes de codificación no solo a construir software, sino a cuidarlo.
¿Ahogado en artículos de tu campo?
Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.