La IA generativa (GenAI) puede revolucionar el desarrollo de software. Tiene la capacidad de impulsar importantes ganancias de productividad para los desarrolladores de software y puede acelerar tanto el ciclo de innovación como el tiempo de comercialización. Sin embargo, su impacto potencial puede verse gravemente obstaculizado si se considera tan poco más que una herramienta para la generación de código. Desafortunadamente, dicha opinión no es infrecuente; se basa en un malentendido tanto de GenAI como de la práctica del desarrollo de software.
Esto significa que existe una oportunidad real para los líderes empresariales y tecnológicos dispuestos a interactuar estrechamente con el proceso de desarrollo de software y el trabajo de sus equipos tecnológicos. Al reconocer dónde GenAI puede apoyar a los desarrolladores de software y dónde no puede, pueden ser los primeros en aprovechar GenAI de forma eficaz para obtener una ventaja competitiva real, lo que permite a los desarrolladores de software no solo trabajar más rápido, sino también trabajar de forma más inteligente.
¿Dónde puede añadir valor la IA generativa?
GenAI puede, sin duda, añadir un valor significativo a lo largo del ciclo de vida del desarrollo de software. Sin embargo, es importante tener en cuenta que cuantificar este valor es excepcionalmente difícil. De hecho, existe el riesgo de que la necesidad de cuantificar el valor añadido de GenAI contribuya a reducir el impacto potencial de GenAI. En creemos que es contraproducente centrarse únicamente en el beneficio obtenido de la productividad del código; defendemos una opinión de que GenAI es parte de las herramientas que, junto con las formas de trabajar y las topologías de equipo adecuadas, son esenciales, en nuestra experiencia, para impulsar la reducción del tiempo de comercialización, aumentar la calidad y mantener continuamente la moral del equipo. Esto es distinto del enfoque adoptado en estudios recientes y prensa que se han centrado en medir las velocidades de codificación en el contexto de problemas limitados y relativamente simples, dejando el valor de GenAI en otras partes del proceso de desarrollo de software ignorado en gran medida.
A menudo, estas son partes del trabajo de desarrollo de software que son complejas, normalmente puntos de fricción o residuos. Aunque pueden no prestarse a una medición fácil, creemos que son las partes en las que el uso de GenAI puede ser realmente el más impactante. En los últimos meses, un pequeño grupo de nosotros en ha estado realizando una serie de experimentos para explorar el potencial de las herramientas GenAI como ChatGPT y GitHub Copilot a lo largo del ciclo de vida del desarrollo de software. Los resultados que hemos visto son prometedores, con resultados que sugieren un aumento del 10-30% en la productividad. Sin embargo, merece la pena señalar que estas ganancias de productividad dependen de tres factores:
Experiencia de desarrollador: Los ingenieros deben saber qué pedir y tener la capacidad de juzgar la producción de GenAI sin afectar a la calidad.
Experiencia con GenAI: Estas herramientas requieren aportaciones humanas, lo que significa que los usuarios necesitan conocimientos y habilidades no solo para escribir indicaciones efectivas, sino también las herramientas, aprender para qué usarlas y avanzar cuando se trata solo de una distracción
La naturaleza del problema en cuestión: GenAI es eficaz para problemas bien definidos, ya que se expande o se vuelve más complejo, es mucho menos probable que impulse las ganancias de productividad.
Dadas esas importantes advertencias, echemos un vistazo a algunas de las formas en que GenAI puede añadir valor al trabajo que hacen los desarrolladores.
Reducir el trabajo repetitivo para crear más tiempo para tareas de alto valor
GenAI brilla en la coincidencia de patrones y la síntesis de patrones, como la traducción de un idioma a otro. El uso más obvio de esa fuerza para la entrega de software es para un nuevo tipo de generación de código, donde la IA traduce el lenguaje natural en código, o un tipo de código en otro. Pero esto también se puede aprovechar en otras áreas, como traducir los registros de cambio en una descripción de la versión, convertir el código y los chats de equipo en documentación más coherente o mapear información no estructurada en formatos y plantillas más estructurados. Incluso podría ayudar a los equipos a generar datos de pruebas y muestras.
En otras palabras, puede eliminar algunas de las tareas que consumen más tiempo para que los desarrolladores tengan más tiempo en trabajos complejos de valor añadido. Puede hacer el patrón coincidente por nosotros; luego aumentamos los resultados y terminamos la “última milla” nosotros mismos.
Pensamiento más completo, antes
Los modelos de lenguaje grande (LLM) tienen la capacidad de sorprendernos. Es por eso que a menudo se dice que suele “alucinar”, es decir, que produce un resultado que es engañoso o falso, aparentemente en desacuerdo con los datos sobre los que se ha formado. Aunque esto puede ser claramente arriesgado en ciertos casos de uso, su capacidad para ofrecer algo inesperado los convierte en excelentes socios de lluvia de ideas y herramientas para la ideación. Pueden señalar lagunas en nuestro pensamiento.
Hemos visto grandes resultados para la ideación de productos y estrategias, como solicitar a un LLM que genere escenarios que puedan desencadenar un pensamiento divergente. También hemos utilizado los LLM como socios de preservación para mejorar las historias de los usuarios y los escenarios de prueba. Por ejemplo, si estamos intentando idear las diferentes formas en que se puede utilizar una aplicación determinada, los LLM pueden ayudar a ampliar nuestro pensamiento, llenando las brechas con escenarios en los que no habíamos pensado. El beneficio de esto es que, al capturar los requisitos de forma más eficaz, reducimos la necesidad de volver a trabajar más tarde, lo que mejora enormemente la velocidad del proceso de desarrollo.
Encontrar información justo a tiempo
Una de las mayores fuentes de ineficiencia para los desarrolladores de software es encontrar la información correcta. Desde búsquedas en línea hasta documentación interna, saber a dónde debes ir para encontrar lo que necesita puede ser un gran gasto.
GenAI ofrece la oportunidad de proporcionar nuevos tipos de funcionalidades de búsqueda además de muchas fuentes de información no estructuradas. Esto ya está sucediendo: Copilot CHAT de GitHub (actualmente en versión beta en el momento de escribir), se basa en la funcionalidad de asistencia de codificación existente de Copilot para. Del mismo modo, Atlassian Intelligence ofrece a los usuarios una forma de navegar y buscar información institucional densa y no estructurada. Por supuesto, es crucial que los sistemas GenAI estén adecuadamente integrados y formados en los datos necesarios, pero cuando se utilizan de forma eficaz, pueden dar a los equipos de entrega de software un fácil acceso a la información en el contexto de su tarea actual. Esto también abre nuevas formas para que las organizaciones revelen información especialmente crítica, como tener herramientas para recordar a los usuarios los problemas de cumplimiento o seguridad que deben comprobarse.
Aunque los chatbots GenAI no deberían considerarse un reemplazo total de la investigación en profundidad y de origen, y siempre deberían supervisarse para comprobar la precisión y las “alucinaciones”, si están formados para que tengan en cuenta el contexto del usuario, son muy eficaces a la hora de minimizar la fricción e impulsar la productividad.
Los riesgos
Los riesgos de GenAI no son secretos. Las “alucinaciones”, los sesgos y la privacidad se han discutido y debatido ampliamente en los últimos meses. En el contexto del ciclo de vida del desarrollo de software, esos riesgos se manifestarán de forma diferente dependiendo de las capacidades, cultura y objetivos de los equipos de ingeniería.
Por ejemplo, introducir herramientas GenAI a un equipo de desarrolladores sin experiencia tiene el potencial de socavar, en lugar de aumentar, su eficiencia y la calidad del software que ofrecen. Por ejemplo, cuando se enfrenta a un código que no funciona generado por GenAI, un desarrollador sin experiencia puede comprometerse innecesariamente con una solución y terminar dedicando más tiempo a intentar que el código generado por IA funcione cuando habría sido mejor leer la documentación relevante.
En resumen, dada la posibilidad de error y alucinaciones, es esencial que los resultados se traten siempre con precaución. Esto es particularmente cierto cuando la repetibilidad es crucial: sin el nivel de atención requerido, la superposición de GenAI sobre prácticas inmaduras puede exacerbar y afianzar los problemas existentes en lugar de resolverlos.
Mirando hacia el futuro: la importancia de las prácticas de ingeniería maduras
Para aprovechar GenAI y aprovecharlo al máximo, las organizaciones deben adoptar buenas prácticas cuando se trata de ingeniería de software, lo que incluye todo, desde la integración continua/despliegue continuo (CI/CD) hasta DevOps. Podría decirse que estas prácticas son más importantes en una era de GenAI de lo que eran antes porque facilitan tanto la medición como la gestión del cambio de procesos. Si tienes métricas de entrega integradas en tus flujos de trabajo, por ejemplo, determinar el impacto de GenAI, así como cualquier desafío emergente que pueda estar planteando, se puede remediar rápidamente.
Estas prácticas pueden estar respaldadas por un modelo operativo de IA eficaz. Este es un plan estratégico que articula cómo se debe utilizar la inteligencia artificial en toda la organización, proporcionando orientación y gobernanza cuando sea necesario. El beneficio es que puede permitir a las organizaciones garantizar que se mantengan fieles a sus objetivos estratégicos, cultura y procesos existentes a pesar del rápido ritmo del cambio. Ya sea que guíe las decisiones de herramientas o empodere a los equipos para responder a los requisitos normativos cambiantes, un modelo operativo sólido hace que sea más fácil mantenerse al día de estos desarrollos y adaptarse en consecuencia.
Esto no quiere decir que las organizaciones necesiten un enfoque descendente para GenAI. Se trata mucho más de crear bucles de retroalimentación que garanticen la concienciación y la alineación entre lo que está sucediendo en la base y la toma de decisiones estratégicas. Estos bucles de retroalimentación son esenciales para el éxito de la organización en períodos de rápido cambio tecnológico; puede ser tentador seguir lo que está sucediendo en el mercado, pero estos bucles de retroalimentación ayudan a los equipos de liderazgo a garantizar que las decisiones que toman siempre estén informadas y estrechamente conectadas con lo que está sucediendo en su organización.
Esto no quiere decir que se deba evitar estar atento en términos del mercado, sino reconocer que lo que realmente importa es la capacidad y la disposición de la organización para empoderar adecuadamente a los equipos de desarrollo. Como líderes, necesitamos apoyarlos para impulsar su propia productividad a través de su curiosidad y experiencia existente.