Technology · · 5 min read
Meta utiliza datos de cambios de código para evaluar el impacto de la IA en la ingeniería
Una conversación con el investigador de Meta Moritz Beller examina las métricas de productividad de los desarrolladores de la empresa, los efectos de la IA y los límites de las pruebas automatizadas.
Según un informe de newsletter.getdx.com, Meta está utilizando mediciones tomadas de cambios de código individuales para comprender cómo las herramientas de ingeniería y la inteligencia artificial están afectando al trabajo de los desarrolladores. El investigador Moritz Beller afirma que la empresa ha observado que el tiempo dedicado a elaborar un cambio ha disminuido más de un 40 % interanual, mientras los ingenieros producen cambios más numerosos y de mayor tamaño.
La métrica, conocida como tiempo de elaboración del diff, recoge el esfuerzo activo implicado en crear, probar y revisar un cambio de código. Analizar los cambios de forma individual ofrece a Meta una visión más precisa que calcular la productividad a partir de todo lo que hace un desarrollador durante un día.
Meta no utiliza esta métrica para clasificar ni evaluar a ingenieros individuales. En su lugar, examina los patrones en los equipos, los departamentos y la empresa en su conjunto. El objetivo es detectar regresiones, identificar mejoras útiles y decidir dónde está justificada una mayor inversión en herramientas de ingeniería.
Una visión más detallada de la productividad
La empresa considera el tiempo de elaboración del diff una señal entre varias. También tiene en cuenta el rendimiento, el tamaño de los cambios y su calidad, porque ninguna métrica por sí sola puede describir de forma fiable la productividad en ingeniería. Por ejemplo, tardar menos en completar un cambio no es necesariamente beneficioso si el código resultante es deficiente o requiere correcciones sustanciales.
Este enfoque también permite a Meta comprobar si los cambios en los frameworks y las herramientas para desarrolladores producen beneficios prácticos. El informe cita la memoización automática del compilador de React como ejemplo. Frente a añadir el almacenamiento en caché manualmente, el enfoque automático del compilador redujo aproximadamente un 30 % el tiempo necesario para elaborar un cambio. Beller presenta resultados de esta magnitud como una prueba de que las mejoras fundamentales en el entorno de desarrollo pueden ser más importantes que los pequeños retoques en las interfaces.
La disminución del tiempo de elaboración no se explica por completo por una escritura más rápida o por la generación de código. Beller cree que los desarrolladores podrían estar utilizando el tiempo que ahorran para reunir contexto y ocuparse de tareas relacionadas con la implementación. La redacción de prompts parece representar solo una pequeña parte de esa actividad adicional.
A medida que generar código se vuelve menos costoso, el problema más difícil podría ser definir qué debe hacer ese código. El valor de la intención del desarrollador aumenta cuando un sistema automatizado puede producir rápidamente una implementación, pero puede interpretar mal una solicitud incompleta.
Lo que las métricas de productividad no captan
La telemetría tradicional registra mejor los cambios de código que el trabajo que los precede. Las sesiones ante una pizarra, las lluvias de ideas y los debates sobre arquitectura pueden ser cruciales para un resultado sin dejar una conexión clara con un diff posterior. Las transcripciones de reuniones y otros registros creados por la IA podrían facilitar el estudio de parte de esta preparación.
Eso no hace que la arquitectura sea menos importante. Evitar un documento de diseño puede simplemente trasladar la carga a los revisores, que entonces tienen que inferir la estructura prevista a partir de la implementación terminada. Por tanto, una producción más rápida puede ocultar trabajo adicional en otras partes del proceso de ingeniería.
El estudio anterior de Beller, Mind the Gap, comparó la actividad registrada automáticamente con las propias evaluaciones de los desarrolladores sobre su productividad. El tiempo dedicado a programar era un predictor significativo, pero el descanso, las interrupciones y las tareas de guardia también influían en lo productivas que se sentían las personas. Una nueva versión tendría que examinar cómo trabajan los desarrolladores con agentes, cuánta confianza depositan en ellos y si coordinar varias tareas automatizadas a la vez genera una carga cognitiva excesiva.
Una mayor producción tampoco garantiza una mejor experiencia laboral. El debate señala que la productividad puede aumentar mientras la concentración, el esfuerzo mental y la satisfacción general permanecen sin cambios o disminuyen. Las relaciones interpersonales, el entendimiento compartido y el intercambio informal de conocimientos son importantes para el trabajo de ingeniería, pero siguen siendo difíciles de representar en la mayoría de las métricas.
Reducir las reuniones innecesarias puede mejorar el rendimiento, pero eliminar demasiada colaboración puede privar a los equipos de ideas y contexto. Los pequeños intercambios sociales también importan: una investigación analizada en el episodio concluyó que las conversaciones informales antes y después de las reuniones predecían con más fuerza la productividad declarada por las personas que la calidad de internet.
El reto de las pruebas para los agentes de IA
Los agentes de IA hacen que crear pruebas unitarias y de extremo a extremo resulte barato, lo que podría abordar una carencia histórica entre los desarrolladores que antes escribían poca cobertura automatizada. Sin embargo, una colección de pruebas superadas puede generar una sensación engañosa de seguridad cuando la implementación y las pruebas comparten la misma interpretación equivocada de una solicitud ambigua.
Un agente puede producir código y pruebas que sean coherentes internamente y, aun así, no cumplan el objetivo real del desarrollador. Ese riesgo hace más importante definir la corrección antes de comenzar la implementación. La conversación sugiere que el desarrollo guiado por especificaciones podría convertirse en el equivalente del desarrollo guiado por pruebas a medida que los agentes asuman una mayor parte del trabajo de programación.
La velocidad de la implementación automatizada también aumenta el riesgo de que los equipos construyan sin saberlo lo mismo en paralelo. Una medición más completa tendrá que tener en cuenta no solo el código terminado, sino también la alineación, la comunicación y el esfuerzo duplicado. Los datos de Meta sobre el nivel de los diffs ofrecen una forma de observar algunos efectos de las nuevas herramientas, pero el debate más amplio deja claro que la productividad en ingeniería sigue siendo un problema humano y organizativo, además de técnico.