Estamos en 2028, han pasado 6 años desde el boom de la IA generativa con la aparición de ChatGPT y de lo que fue una ola de adopción de IA generativa para desarrollar software. Sin embargo después del hype que se produjo en los años 2023 y 2024, paulatinamente se fue reduciendo el uso de los copilots y asistentes de código basados en IA. Se observó que en el fondo no ofrecían mucho valor, ya que la mayoría del código que producían era incorrecto y de calidad mediocre, y que los desarrolladores pasaban más tiempo corrigiendo los errores introducidos por la IA, que el que se ahorraban. Esto provocó que las iniciativas de adopción fueran perdiendo fuerza hasta desaparecer del debate tecnológico, recordando el efímero destino del metaverso.
Si el párrafo anterior te ha extrañado, es porque seguramente no creas que describa un futuro probable. Y es que ya empieza a haber un sentimiento más o menos generalizado de que la IA generativa ha cambiado el mundo del desarrollo del software para siempre. Me atrevería a decir que junto a la búsqueda de información (lo que antes hacíamos con Google y ahora con ChatGPT), la generación de código con IA generativa es el caso de uso estrella de esta tecnología. Sin embargo hay empresas de software que todavía no han adoptado esta tecnología como acelerador de su productividad. Y con el bajo coste de esta tecnología y la reducida curva de aprendizaje, no parece que existan muchas razones para justificarlo.
En empresas como Google ya el 25% del código que se genera es propuesto por IA generativa. Según un estudio de StackOverflow se estima que un 62% de los desarrolladores de software ya utilizaban IA generativa en 2024 y otro 13% planeaba empezar a usarla pronto. Meta dice haber reducido el tiempo de depuración de código en un 30% gracias al uso de la IA. Y el popular editor de código Cursor pensado para desarrollar con IA generativa, ha sido la primera empresa en alcanzar los 100 millones de dólares de ingreso recurrente anual, en tan solo 12 meses. Y aunque por supuesto la tecnología no es perfecta, tiene limitaciones, y comete errores, el valor que provee empieza a ser evidente para muchos.
Por ello muchas empresas ya han adoptado la tecnología dentro de sus procesos de desarrollo de software, y la utilizan en las distintas etapas del proceso como son: el project planning, diseño de arquitectura, codificación, depuración, testing, automatización, despliegue y operaciones. Ya no hay duda de que aporta valor, sin embargo todavía muchas empresas no la han adoptado y algunas cuestionan si deben hacerlo o no, y cuando. Creo que esto es un error, ya que la tecnología está lo suficientemente madura como mejorar la productividad a un coste muy bajo. La cuestión no es si hay que adoptarla y cuando, sino cómo hacerlo.
Al ser una tecnología tan potente, creo que la adopción debe hacerse repensando la estrategia de tecnología, para tratar de conseguir los mejores resultados y minimizar los riesgos. Por mi experiencia como CTO fraccional que ayuda a empresas a integrar IA en su estrategia de tecnología, es importante considerar los siguientes aspectos para una adopción adecuada:
Las personas siguen siendo fundamentales
Aunque la IA automatice tareas que antes hacíamos los humanos, todavía requiere de un humano que identifique lo que hay que hacer, qué problema hay que solucionar y porqué.
Debido a la naturaleza de la IA generativa actual, es común que los resultados de la IA contengan errores o necesiten ser adaptados a nuestro contexto específico. La revisión, corrección y adaptación debe seguir haciéndola un humano con conocimiento del dominio y pensamiento crítico. Además existen tareas complejas, como viene a ser el diseño de una arquitectura óptima o determinadas funcionalidades en las que la IA todavía no es comparable a un buen desarrollador.
Toda nueva tecnología requiere un cambio en la forma de trabajar, y una apertura por parte de las personas para abrazar el cambio y acometerlo de la forma óptima. La introducción de la IA en una empresa puede venir en dos direcciones: dirigida por los líderes que evangelicen en la tecnología y pongan todos los medios necesarios para su adopción (top-down). O desde los propios empleados cuya curiosidad les lleve a utilizar herramientas de IA generativa aún cuando la empresa no las ha adoptado oficialmente (bottom-up). Ambas alternativas son válidas, sin embargo cuando la adopción es desde abajo hay más riesgo de que no llegue a todo el mundo o lo haga de forma desigual, cada cual utilice una herramienta, falte visibilidad sobre el impacto del cambio y pueda haber problemas de privacidad y seguridad de los datos.
La IA potencia, pero también exige, una metodología sólida
La adopción de la IA para desarrollar software podría verse como incorporar un grupo de desarrolladores junior que trabajen bajo la supervisión de los desarrolladores actuales, como si escalamos los equipos de ingeniería. Tener una metodología de desarrollo de software adecuada en la que trabajamos de forma ágil, en pequeñas iteraciones, examinando el proceso, con shift-left de la calidad y aplicando mejora continua, va a permitir observar el impacto de la adopción de la IA rápidamente, medirlo e ir ajustando las prácticas para obtener unos resultados óptimos. Al mismo tiempo que nos permite detectar potenciales errores introducidos por la IA y corregirlos en tiempo de desarrollo antes de que lleguen a producción.
Si carecemos de una metodología madura, y adoptamos la IA para desarrollar, corremos el riesgo de aumentar el número de bugs y la deuda técnica de nuestro software a mayor velocidad. Y que la adopción tenga un impacto neto negativo. Para estos casos la clave es utilizar la capacidad adicional que nos da la IA para mejorar la metodología. Por ejemplo, introduciendo tests automáticos que son sencillos y rápidos de generar con IA. También se puede utilizar parte del ahorro de tiempo humano para tareas que la IA todavía no puede hacer de forma óptima, como son las revisiones de código.
Se puede ver la IA generativa como un potenciador de la capacidad de los ingenieros, y la clave está en saber encontrar el equilibrio entre ir más rápido e ir con mejor calidad, lo cual conseguimos a través de la metodología.
La generación de código no es el único caso de uso
Si bien es cierto que el caso de uso estrella de la IA generativa es la generación de código, este no es ni mucho menos el único caso de uso que aporta valor en el desarrollo del software. Lo ideal es plantear una adopción que haga uso de todas las capacidades donde la tecnología puede aportar valor y no conformarse con menos. Los casos de uso principales en desarrollo de software a día de hoy son:
- Generación de código
- Búsqueda de información y resolución de dudas (lo que antes se hacía con Google y Stackoverflow)
- Creación de tests automáticos: unit tests, tests de integración, tests end to end
- Depuración de código
- Generación de documentación (a partir del código)
- Explicación de código existente
- Migración a otras tecnologías y lenguajes
- Automatizaciones de despliegue e integración (pipelines CI/CD)
- Análisis de logs y grandes cantidades de datos
- Aprendizaje de nuevos lenguajes y tecnologías
Herramientas y formación: claves para maximizar el ROI
Tenemos la suerte de que las mejores herramientas para el desarrollo de software con IA generativa son muy baratas, con licencias que van entre los 10 y 40$/mes por desarrollador para las herramientas más populares como Cursor o Github Copilot. El ROI es muy bueno ya que ese coste se recupera si ahorramos menos de 1 hora al mes a un programador. Lo cual es de prever que se supere con creces.
La interfaz conversacional de la IA generativa es engañosa, ya que pareciera que no importa como le pidamos las cosas porque siempre nos da una respuesta. La realidad es que cómo le pedimos a la IA (lo que comúnmente se conoce como el prompt) importa y mucho. El inconveniente de la IA generativa es que te permite ser todo lo perezoso que quieras, pero la calidad de su respuesta vendrá determinada por la calidad del prompt que escribas.
A día de hoy existen multitud de formaciones, que explican cómo funciona la IA generativa, la tecnología que hay detrás y cómo podemos escribir buenos prompts para obtener los mejores resultados. Si optamos por no ofrecer formación y confiamos en que cada desarrollador aprenda a usar la IA, a la larga el coste es probable que sea mayor, por la curva de aprendizaje y por la productividad perdida por desarrolladores que no hacen buenos prompts. Ya existen muchas formaciones online de desarrolladores que llevan tiempo trabajando con IA y saben cómo utilizarla para sacarle el máximo partido.
Riesgos: Identificarlos y mitigarlos proactivamente
Como toda nueva tecnología potente, la IA introduce algunos riesgos, algunos de estos son conocidos y sabemos cómo mitigarlos, pero otros todavía no los conocemos del todo bien, y se necesita tiempo para entenderlos mejor. Sin embargo, estamos viendo que a día de hoy los beneficios superan ampliamente a los inconvenientes, y las empresas están apostando por adoptar la tecnología. Una buena estrategia debe contemplar los riesgos y poner mecanismos para mitigarlos y darles seguimiento. Algunos de los riesgos más significativos, son:
- Alucinaciones y respuestas incorrectas. Por las características de la tecnología, las alucinaciones pueden ocurrir y si no las detectamos pueden ocasionar fallos en nuestro software. Mitigación:
- Las respuestas y el código generado por la IA SIEMPRE debe ser revisado por un experto humano.
- Disponer de una metodología con shif-left de la calidad: con automatismos y chequeos de calidad tempranos que permitan encontrar los fallos lo antes posible.
- Aumento de la deuda técnica. La IA actual está optimizada para generar código que funcione, sin embargo, un código funcional puede ser innecesariamente largo, reinventar la rueda, no hacer un tratamiento adecuado de los corner cases o contener un estilo diferente al de nuestro proyecto. Todo esto supone un aumento de la deuda técnica. Mitigación: Tener una metodología madura, que incluya guías de estilo, revisiones de código, analizadores de código estático y que promueva otras buenas prácticas entre los desarrolladores para reducir la deuda técnica.
- Merma de capacidades por parte de los ingenieros. Cuando se delega una parte de la programación a la IA, el ingeniero deja de tener que poner en práctica sus capacidades, esto a la larga puede suponer que se pierdan o mermen capacidades para programar, por ejemplo. Aunque esto todavía no está muy estudiado, es algo que iremos entendiendo mejor en los próximos años. Mitigación: Promover días de programación sin IA u otras iniciativas. Seguir la evolución de la tecnología, pues si esta supera en capacidad los humanos en un área, por ejemplo, la programación, pierde sentido que los humanos sigan haciendo esta tarea de forma menos óptima y más cara. En este caso es posible que las responsabilidades de los ingenieros se vean desplazadas probablemente hacía areas más funcionales y de arquitectura.
- Fugas de información sensible. La IA depende de tu contexto para poder dar respuestas personalizadas, luego los ingenieros proveerán de contexto a la IA, lo cual puede compartir a terceras compañías información sensible, como el código fuente de tu aplicación. Este riesgo se minimiza si utilizamos herramientas con licencias comerciales como Github Copilot o Cursor donde el código y los prompts no son accedidos ni almacenados por el proveedor.
Conclusión
La IA está redefiniendo como las empresas desarrollan software, aumentando significativamente la productividad cuando se adopta de forma correcta, lo cual supone un verdadero game changer. Y aunque es una tecnología revolucionaria, depende fundamentalmente de elementos tradicionales como son: las personas, el liderazgo, la metodología, las herramientas y la formación. Por ello si queremos obtener todos los beneficios potenciales de la IA es recomendable repensar la estrategia de tecnología, para incorporar esta tecnología en las diferentes etapas del desarrollo de software. Y es posible que en este proceso nos encontremos carencias y necesidades, por ejemplo, en temas de metodología, que podamos abordar como parte del plan de adopción de la IA.
En la actualidad trabajo con empresas de software que quieren introducir la IA generativa como tecnología en su proceso de desarrollo de software. Me integro en sus equipos y trabajo de la mano del CTO y otros líderes técnicos para entender cómo desarrollan software y cómo definir una buena estrategia para adoptar la IA de forma óptima y reduciendo riesgos.
Si sientes que dentro de tu empresa no estáis aprovechando todo lo que la IA puede ofrecer y buscas a alguien que ya haya ayudado a otros a recorrer ese camino, hablemos.