 |
| Figura 1. |
English version, here.
Es muy curiosa la forma en que me llegó la inspiración para escribir esta nueva entrada. Mientras atendía la misa del día del 25 de diciembre me vino a la mente cómo el código generado por AI, mediante vibe coding, de alguna manera se relacionaba con el legacy code que muchas veces nos ha tocado manipular. También recordé una charla que atendí en el pasado Nerdearla celebrado en Madrid (el primero en Europa) en donde Alan Buscaglia mencionaba un gran problema que muchos de nosotros ya hemos enfrentado: realizar code reviews de código generado por AI. Y este recordatorio a su vez me recordó la siguiente publicación que una eminente figura dentro del mundo del desarrollo de software, en el área de pruebas, hizo hace tiempo.-
Con todo el hype que existe alrededor de la AI, ya se han estado haciendo evidentes varios problemas que han surgido al momento de utilizarla dentro del desarrollo de software.
Y es que pareciera que las personas que toman las grandes decisiones de un negocio no se dan cuenta de que no existe una solución única y mágica para resolver todos los problemas que intentan resolver. O quizá sí se den cuenta, y son muy conscientes de los riesgos, pero los ignoran deliberadamente. En el mejor de los casos, y siendo demasiado benévolo con estas personas, puede que ignoren cómo funcionan los avances científicos y tecnológicos.
La AI ahora nos puede permitir crear aplicaciones (casi) completas en menos de doce horas para diferentes propósitos. Basta con escribir un prompt bien detallado para que el agente empiece a generar varias líneas de código en diferentes archivos creando un proyecto (semi) robusto y que además esté listo para deployar a producción. Y ¡voilà!, tenemos una aplicación (casi) funcional.
Los detalles vienen después de haber liberado la aplicación al público, y éstos normalmente no tardan en aparecer. Si los usuarios finales empiezan a notar problemas con la aplicación, es evidente que los reportarán. Quien se haya encargado de generar la aplicación por vibración tendrá que investigar las causas raíces de estos problemas. Pero ¡oh sorpresa! ¿Por dónde empezar? Es relativamente fácil decirle al agente qué es lo que queremos desarrollar, pero no es fácil evaluar todo el código que éste nos ha generado.
Antes de que los primeros agentes de AI fueran lanzados al público, hacer code reviews era un proceso relativamente rápido. En el mundo ideal, los pull requests eran «pequeños» y a lo mucho podían llevarnos tres horas de revisión (insisto, en el mundo ideal y «pequeños»). Ahora nos encontramos frente a la titánica tarea de revisar miles de líneas de código, generadas por la AI en menos de una hora, y el análisis de todo ese código puede tomarnos días (sí, días). Cualquier buen developer o tester sabe que no debería deployar a producción algo generado por completo por la AI. Imagínense que así lo hiciera... ¡Tremendo lío que se armaría!
Ahora, imaginen el siguiente escenario: Pedirle a la AI que arregle los problemas que los usuarios reportaron. La AI lo puede hacer, pero al mismo tiempo puede generar más problemas y hasta realizar cambios inesperados. Todo esto complicaría el desarrollo y actualización de la aplicación, y eventualmente generaría una deuda técnica enorme.
Otro escenario: Si alguien ajeno al desarrollo de la aplicación empieza a trabajar en ella, se topará con varias líneas de código que no entiende, y sin el contexto adecuado no sabrá por dónde empezar. Estará solo a la deriva, luchando contra un legacy system, y por ende la deuda técnica seguirá incrementándose.
Sobre esto último, ya están surgiendo trabajadores que se están encargando de arreglar todo el desastre generado por los vibe coders, y me imagino que están ganando unas enormes sumas de dinero por sus servicios. Porque, claro, este tipo de trabajos no son para nada sencillos de ejecutar. Hay que saber qué archivos y líneas de código modificar. Leer y entender lo que alguien más genero no es algo sencillo. La siguiente historia (quizá real) lo ejemplifica mejor.-
Steinmetz no sólo tenía una gran fama como investigador, sino que además era considerado un técnico implacable. Por ello, cuando en una de las fábricas de Henry Ford comenzaron a tener problemas con un enorme generador eléctrico recién instalado, el famoso empresario no dudó en solicitar su ayuda.
Cuando llegó a la fábrica, el ingeniero pidió una libreta, un lápiz y un camastro y durante dos días se dedicó a escuchar el sonido del generador y a realizar incontables cálculos. Cuando terminó, pidió una escalera, cinta métrica y una tiza. Subió con esfuerzo a lo alto del generador y midió con sumo cuidado, colocando una precisa marca de tiza en una parte de la enorme máquina.
Tras ello, comentó a los escépticos presentes que era necesario desmontar una placa del lateral del generador y eliminar 16 vueltas de la bobina a partir del punto en que había realizado la marca de tiza. Los ingenieros de Ford siguieron sus instrucciones y el generador comenzó a funcionar perfectamente.
Poco tiempo después, Henry Ford recibió una factura firmada por Charles Steinmetz por un importe de 10.000 dólares. El empresario, a pesar de agradecer el buen trabajo realizado por el ingeniero, devolvió la factura a General Electrics y solicitó una nueva y detallada. Steinmetz respondió enviando de nuevo la factura a Ford con el siguiente detalle: «Marca de tiza en el generador: 1 dólar. Saber dónde hacer la marca 9.999: dólares. Total a pagar: 10.000».
Satisfecha la petición de Ford, la factura fue abonada sin ninguna queja. O, al menos, eso es lo que contaba Jack B. Scott, hijo de un antiguo empleado de Ford, en una carta que envió a los editores de la revista “Life” en mayo de 1965.
En conclusión, el full vibe coding se ha convertido en una pesadilla: miles de millones de dólares, o euros, perdidos, además de reputación.
La
AI es una herramienta más y solamente eso. No un sustituto de los seres humanos (y nunca debería serlo). La
AI está para ayudarnos a ser más ágiles y eficientes en nuestro trabajo (
aunque ya se ha demostrado que los senior developers y senior testers tardan mucho más tiempo desarrollando software cuando la utilizan), pero hay que emplearla sabiamente. Yo utilizo la
AI para generar ciertas piezas de código que necesito para mis pruebas automatizadas, pero siempre estoy analizando lo que los modelos me generan. No me dejo llevar ciegamente por ellos. Una vez solamente dejé que la
AI hiciera por mi una traducción completa de unas configuraciones de
CI/CD de
CircleCI a
GitHub Actions, pero sabía el contexto de lo que quería, analizaba el código generado y lo seguía puliendo con la ayuda del agente inteligente. Fue una experiencia agradable.
Para el tiempo que escribo esto, la burbuja de la AI se encuentra a punto de estallar. Veamos en que terminará todo esto.
Bibliografía.-
Comentarios
Publicar un comentario