- Según una investigación reciente, cuando desarrolladores de código abierto usan herramientas de IA en bases de código que conocen bien, su tiempo de trabajo aumenta 19%
- Los desarrolladores creen que la IA los hizo más rápidos, pero en realidad se vuelven más lentos: existe una brecha entre percepción y realidad
- La causa principal es el sofisticado modelo mental (estructura de comprensión) que tiene el desarrollador y las limitaciones para transferir ese conocimiento a la IA
- Según la teoría de Peter Naur, lo más importante en programación es el "modelo mental" que tiene el desarrollador en la cabeza
- Pionero danés de la informática y ganador del Premio Turing en 2005. Contribuyó a la notación Backus-Naur Form (BNF) usada para describir la sintaxis de lenguajes de programación
- Desde una perspectiva de largo plazo, para comprender profundamente un proyecto es importante construir el modelo mental escribiendo código directamente
El fenómeno de que la IA vuelve más lentos a los desarrolladores de código abierto
- Según el estudio de Metr, usar herramientas de IA hizo que la resolución de problemas fuera 19% más lenta
- Antes de empezar, los desarrolladores esperaban que la IA los ayudara a ser 24% más rápidos y, aun después de terminar, seguían creyendo que habían sido 20% más rápidos de lo real
- El estudio se realizó con desarrolladores experimentados que gestionan directamente proyectos de código abierto que entienden en profundidad
- Aunque los resultados no se pueden generalizar a todos los desarrolladores, sí muestran que en este grupo las herramientas de IA tienen un efecto contraproducente sobre la productividad
- En entornos corporativos o para desarrolladores comunes que deben adaptarse a una nueva base de código, las herramientas de IA podrían tener un papel más positivo en la mejora de la productividad
Por qué la IA vuelve más lentos a los desarrolladores experimentados de código abierto
- Según el artículo de Peter Naur, “Programming as Theory Building”, el verdadero producto de la programación no es el código, sino el ‘modelo mental del desarrollador sobre el proyecto’
- Ese modelo mental es clave para entender el sistema, diagnosticar problemas y mejorarlo de forma efectiva
- La IA basada en LLM no puede acceder directamente al modelo mental del desarrollador y, incluso si se le proporciona parte de la información, se produce una pérdida esencial en la transferencia de conocimiento
- Por ejemplo, cuando le encargas a alguien dormir a un bebé, aunque se lo expliques claramente, a menudo termina actuando distinto a lo que pretendías
- La transferencia del modelo mental es extremadamente compleja, y es casi imposible que la IA la absorba solo a partir de texto
- Por eso, delegar trabajo a la IA en un proyecto que uno ya entiende en profundidad puede reducir la productividad
- La abundante información contextual y la comprensión intuitiva del desarrollador no pueden ser reemplazadas fácilmente por la IA
¿Deberían prohibirse las herramientas de IA en el trabajo real?
- No necesariamente. Esto aplica solo a “personas que trabajan en proyectos que conocen y entienden bien por sí mismas”
- Muchos desarrolladores en empresas suelen mantener código escrito por seniors que ya se fueron, o trabajar sin comprender a fondo la arquitectura completa del sistema
- En esos entornos, la IA puede contribuir a mejoras de productividad a corto plazo al entender rápidamente la base de código y generar cambios automáticamente
- Si lo que se prioriza es la producción de valor de negocio a corto plazo y la eficiencia inmediata, las herramientas de IA pueden tener un papel positivo en la productividad
Construcción del modelo mental e IA
- Si no existe un modelo mental del proyecto, los LLM pueden ayudar a mejorar la productividad
- Pero si la esencia del desarrollo de software está en la ‘construcción del modelo mental’, depender en exceso de la IA puede deteriorar esa capacidad
- A largo plazo, si quieres entender profundamente un proyecto y transformarlo de forma activa, necesitas la experiencia de escribir código directamente
- En cambio, si el trabajo es más bien del tipo “solo hay que hacer que funcione”, usar IA puede ser eficiente
Discusión adicional y conclusión
- Con las herramientas de IA en su estado actual, es difícil mejorar la productividad de desarrolladores que ya cuentan con un modelo mental suficiente
- Aún hace falta más investigación y avances para que la IA pueda apoyar correctamente los modelos mentales o elevar de forma revolucionaria la productividad de desarrolladores experimentados
- Puede que en el futuro, con modelos más avanzados, llegue el día en que los desarrolladores ya no necesiten tener un modelo mental propio; pero con el nivel actual, la comprensión y el aprendizaje directos siguen siendo indispensables
- En última instancia, la IA puede ser un estorbo en entornos donde uno entiende profundamente lo que está haciendo, y una herramienta de productividad en entornos donde lo importante es obtener resultados rápidos
5 comentarios
> Los desarrolladores creen que la IA los ha hecho más rápidos,
como la investigación con IA se ha acelerado, se puede lograr una mayor calidad, así que incluso en el mismo trabajo, ¿no terminará saliendo con una calidad un poco mejor? Tal vez los desarrolladores piensan que, para desarrollar de acuerdo con la calidad del resultado final, es más rápido llegar con la ayuda de la IA que llegar por su cuenta.
Si para empezar no la hubieran usado, quizás habrían implementado las cosas solo con el conocimiento que ya tenían; eso me hace pensar si no será por eso.
> Por el contrario, si se trata de trabajo de "solo hacer que funcione", usar IA puede ser eficiente.
No solo entre los desarrolladores, pero como hay personas con perfiles muy distintos, siento que entre quienes terminaron siendo desarrolladores por casualidad y no les gusta o incluso les da miedo escribir o revisar código, y tienen una mentalidad de que mientras funcione basta en vez de interpretar las cosas desde una perspectiva de estructura sistemática o mantenimiento, tiende a ser más fuerte la dependencia o la fe ciega en la IA. O quizá no sea así.
Medir el "impacto de la IA" en la productividad de desarrolladores experimentados de código abierto
Opiniones de Hacker News
Creo que la entrada del blog abordó de forma interesante un factor concreto que puede contribuir a que la IA ralentice el desarrollo.
También pueden ver citas de desarrolladores en el paper (sección C.1.5).
A mucha gente le resulta fácil leer el paper, encontrar un factor con el que se identifica y concluir: “esta única cosa es la razón por la que se vuelve más lento”.
Pero en realidad hay varios elementos (al menos 5 parecen probables, y no se puede descartar hasta 9; vean la tabla de factores en la p.11).
Es más razonable un análisis multicausal que asumir que una sola cosa es la causa.
Si alguien planea probarlo por su cuenta, me gustaría mucho que compartiera los resultados al correo del paper.
Y sobre que el título del artículo se haya escrito como “AI slows down open source developers. Peter Naur can teach us why”, creo que sería más preciso algo como “A inicios de 2025, la IA ralentiza a desarrolladores experimentados de código abierto. Peter Naur aporta más contexto sobre un factor específico”.
Puede ser una formulación menos provocadora, pero creo que la precisión importa.
Gracias de nuevo por el gran artículo; sigo leyendo los comentarios
Discusión relacionada anterior
Paper completo
Cómic de xkcd sobre gestión del tiempo
greedy algorithm)Joel on Software: Things you should never do, part I
Mucho código generado por IA simplemente se produce, pasa pruebas simples y ahí queda. Incluso aumenta la cantidad de código cuyo contexto general o razón de ser ni el propio autor entiende lo suficiente
ramp-upque vivimos nosotros, sino de desarrolladores de código abierto ya muy familiarizados que hacen tareas con IA. Los LLM sí aceleran claramente la adaptación a una base de código nueva, pero una vez que ya la conoces, he sentido que más bien estorban(Se trata con más detalle en la sección C.2.7 del paper, “Uso de herramientas de IA por debajo del promedio”)
thing1,thing2, etc., mientras el contenido era siempre igual). Le sugerí usar nombres más distinguibles, y esta vez la IA terminó poniendo nombres demasiado verbosos, como enumerando todas las características de cada caso, de modo que el código dejó de leerse de un vistazo. Quizá el autor sintió que había acelerado muchísimo la escritura, pero en la práctica el tiempo invertido en feedback, revisión y correcciones borró cualquier ganancia de productividadReferencia: viejo problema de spam con IA
try:catchdemasiado amplios, lo que dificulta rastrear la fuente del problema. Yo prefiero que el problema falle rápido y de forma contundente (fail fast) para corregirlo de inmediatorace condition) en una base de código desconocida, es indispensable agregar logging, reemplazar funciones de librería, mejorar la estructura, etc. Si la IA solo te da una solución rápida del tipo “la carrera está aquí y se arregla así”, eso puede terminar perjudicando la comprensión de la estructura y de la lógica del código. A largo plazo, si sigue dominando la edición de código guiada por IA, el código mismo podría degradarse hasta el punto de que ni la propia IA pueda reaccionar ya de manera adecuadaYo también tenía una idea parecida, pero me costaba expresarla con claridad.
Modelo mental es un nombre muy acertado. Voy a tratar de usarlo de vez en cuando.