La IA generativa tiene numerosos usos, pero uno de los más prometedores para las organizaciones son las increíbles ventajas del desarrollo asistido por IA. Con innovaciones recientemente anunciadas como Devin AI, el primer ingeniero de software de IA del mundo, la integración de la IA es una propuesta atractiva para los líderes tecnológicos que buscan aumentar la eficiencia en sus procesos de ingeniería y en sus resultados.
Las organizaciones pueden abordar la integración de la IA en el desarrollo de código, concretamente, de varias maneras. Una opción es utilizar herramientas como GitHub Copilot para crear automáticamente código repetitivo e implementar una forma de programación por pares basada en IA. Otra opción es aprovechar los desarrolladores de IA autónomos como Devin, que tienen el potencial de trabajar de forma independiente junto con sus homólogos humanos.
El desarrollo asistido por IA ofrece varias ventajas a las empresas y probablemente seguirá dando forma al futuro del desarrollo. Sin embargo, también plantea diversos riesgos de seguridad que deben gestionarse para aprovechar al máximo la tecnología.
Se estima que el 81 % de los desarrolladores ya utilizan asistentes de codificación de IA, como GitHub Copilot, Tabnine y Amazon CodeWhisperer, para responder a preguntas y escribir código difícil. Puede que cuanto más avance y más ubicua se vuelva la IA, más aumente la dependencia de los equipos de desarrollo de esta tecnología.
La adopción del uso de la IA tiene numerosos beneficios potenciales para los equipos de desarrollo, tales como:
Mayor eficiencia: la IA puede realizar automáticamente varias tareas de desarrollo, que van desde responder preguntas básicas hasta escribir código automáticamente y diseñar interfaces de usuario de forma automática. Estas capacidades pueden acelerar el tiempo de comercialización, reducir los costes de desarrollo y maximizar la productividad de las empresas con menos personal. Un estudio de investigación concluyó que el uso de GitHub Copilot permitía a los desarrolladores completar las tareas de codificación un 55 % más rápido. Esta mejora de la eficiencia puede permitir a una organización reducir el número de empleados o ampliar drásticamente el volumen de código que produce.
Menor desgaste de los desarrolladores: la capacidad de la IA generativa para automatizar la creación de código repetitivo elimina la necesidad de que los desarrolladores escriban código simple y repetitivo. Mejorar la experiencia de los desarrolladores reduce el riesgo de desgaste o de rotación de empleados si los desarrolladores se aburren con estas tareas. En 2023, el 73 % de los desarrolladores declararon haber sufrido desgaste en algún momento de sus carreras. Según el 60-75 % de los desarrolladores, la capacidad de la IA para automatizar estas tareas mejora la satisfacción laboral.
Mejor calidad del código: además de escribir código, la IA también se puede utilizar para detectar automáticamente errores, vulnerabilidades y otros problemas con el código durante el proceso de desarrollo. La capacidad de encontrar y solucionar los problemas antes de que lleguen a producción reduce el riesgo de que una organización pierda tiempo y recursos revisando o remediando fugas de datos.
Desarrollo especializado: la IA puede escribir código especializado si un equipo de desarrollo carece del conocimiento y la experiencia para escribir a nivel interno. La eliminación de la necesidad de conocimientos especializados reduce la necesidad de contratar especialistas externos o de ofrecer grandes incentivos para atraer a expertos en la materia.
Formación y mejora de las competencias de los desarrolladores: la IA generativa tiene el potencial de proporcionar formación "justo a tiempo" a los desarrolladores, mejorando la seguridad del código y preparando a los desarrolladores inexpertos más rápidamente. De media, los desarrolladores aceptan el 30 % de las sugerencias de código, y los desarrolladores inexpertos tienen una tasa de aceptación más alta. De esta manera, se reduce el coste de la gestión de vulnerabilidades y las empresas pueden maximizar las capacidades de su equipo de desarrollo.
La IA generativa es una herramienta eficaz, pero no es una solución perfecta. Cuando evalúen las posibilidades de incorporar la IA en los procesos de desarrollo y la manera de hacerlo, los directores técnicos también deben tener en cuenta los riesgos y los posibles impactos en la organización.
Una reciente fuga de datos de Samsung es un buen ejemplo de los riesgos de no gestionar adecuadamente el uso de la IA. La empresa había prohibido previamente el uso de la IA generativa, pero levantó esa prohibición para mejorar la productividad de los empleados. En el plazo de tres semanas, la empresa supuestamente filtró datos confidenciales de I+D de semiconductores, código fuente y grabaciones de reuniones internas a ChatGPT en un intento de corregir errores de código y generar automáticamente actas de reuniones. Estos datos son accesibles para OpenAI y podrían haberse utilizado para entrenar su modelo, lo que podría dar lugar a que también estuvieran expuestos a otros usuarios.
Algunos de los riesgos más importantes del desarrollo asistido por IA son los siguientes:
Fugas de datos confidenciales: las herramientas de IA generativa están diseñadas para aprender constantemente y pueden entrenarse a sí mismas con los datos introducidos por los usuarios. Los datos confidenciales y las muestras de código introducidas en una herramienta de IA generativa pueden pasar a formar parte del modelo y mostrarse a otros usuarios. En 2023, Samsung filtró accidentalmente datos confidenciales de semiconductores a través de ChatGPT, y las investigaciones han descubierto que estas herramientas también pueden incluir otros datos confidenciales en las sugerencias, como puntos finales privados de las API.
Código de menor calidad: la IA generativa es imperfecta y puede crear respuestas incorrectas y código de baja calidad. El uso de código generado automáticamente puede afectar negativamente a la experiencia del usuario e introducir vulnerabilidades en una aplicación.
Menor comprensión del código: los desarrolladores suelen estar "disponibles" porque escriben el código, lo entienden y pueden abordar cualquier problema. El código generado por IA es más bien un misterio, que puede dificultar la capacidad de un equipo de desarrollo para solucionarlo si algo sale mal.
Alucinaciones de IA: en desarrollo, las alucinaciones de IA pueden llevar a IA generativa a recomendar el uso de paquetes y bibliotecas inexistentes. Si los atacantes crean estos paquetes, pueden inyectar vulnerabilidades o código malicioso en las aplicaciones de cualquiera que utilice esos paquetes recomendados.
Problemas de licencia: las recomendaciones de la IA o el código generado automáticamente pueden utilizar código de terceros con términos de licencia incompatibles. Por ejemplo, si la IA utiliza código con una licencia de libre reproducción, una organización puede necesitar abrir el código que lo utiliza o enfrentarse a demandas por infracción de los derechos de propiedad intelectual.
Aumento del gasto en la nube: el código generado por la IA puede realizar solicitudes de servicios de pago o utilizar de forma ineficiente el almacenamiento, la informática y otros recursos de la nube. Como resultado, el gasto en la nube puede aumentar debido a un código no optimizado.
Dependencia de la solución: los asistentes de codificación habilitados para IA están dando sus primeros pasos, y periódicamente surgen nuevas soluciones. La integración de una solución concreta en un flujo de trabajo puede reducir la eficiencia o forzar un cambio costoso cuando haya nueva tecnología disponible.
La IA tiene numerosos beneficios potenciales y es probable que sea el futuro del desarrollo. Idealmente, la IA generativa permite a las organizaciones crear código más sofisticado, eficiente y seguro con menos recursos y en un plazo más ajustado de lo que sería posible con un equipo de desarrollo totalmente humano. Las empresas que se niegan a permitir el desarrollo asistido por IA corren el riesgo de ser superadas por la competencia y de perder a los mejores talentos frente a las que lo hacen.
Sin embargo, los directores técnicos que deseen utilizar la IA para mejorar sus procesos de desarrollo también deben considerar y gestionar los riesgos de la tecnología. A continuación, presentamos 8 prácticas recomendadas que pueden ayudar a reducir o eliminar los principales riesgos del desarrollo asistido por IA:
Validación de las recomendaciones de la IA: las alucinaciones de la IA son un problema común, y estos errores pueden ser sumamente perjudiciales en el desarrollo de software. Comprueba la precisión del código y de la información generada por un sistema de IA antes de utilizarlo.
Gestión de los riesgos de los datos de la IA: plantear a la IA una pregunta de programación o hacer que genere código repetitivo es un riesgo relativamente bajo. Proporcionar una dirección IP confidencial para comprobar si hay errores o hacer una pregunta podría exponer datos. Forma a los desarrolladores sobre el uso aceptable de la IA e implementa salvaguardas de prevención de pérdida de datos (DLP) para gestionar el riesgo de fugas.
Implementación de DevSecOps: la IA puede acelerar muy rápido el desarrollo de código y reducir la comprensión de los desarrolladores del código que están escribiendo. La implementación de las prácticas recomendadas de DevSecOps, como la creación y las pruebas de los requisitos centrados en la seguridad, reduce el riesgo de fallos de seguridad.
Automatización de las pruebas de seguridad: el código generado por IA puede introducir vulnerabilidades o código no funcional en la base de código de una organización. La incorporación de pruebas de seguridad, incluidas las pruebas de seguridad de aplicaciones estáticas (SAST) y las pruebas de seguridad de aplicaciones dinámicas (DAST), en canales automatizados de integración y distribución continuas (CI/CD) limita el impacto potencial del código poco seguro generado por IA.
Realización de pruebas funcionales y no funcionales: además de introducir vulnerabilidades, el código generado por IA puede ser de menor calidad o incluso no funcional. La realización de pruebas unitarias para los requisitos funcionales y no funcionales puede ayudar a garantizar que el código sea tanto funcional como eficaz. El cumplimiento de las guías de estilo y las prácticas recomendadas de programación también pueden ayudar a identificar y evitar el código problemático.
Control de las cadenas de suministro de software: la IA puede recomendar o utilizar paquetes o bibliotecas vulnerables, maliciosos o inexistentes con condiciones de licencia incompatibles. La realización de análisis de composición de software (SCA) y la elaboración de una lista de materiales de software (SBOM) proporcionan visibilidad de las dependencias de la aplicación y permite validarlas antes del lanzamiento.
Implementación de la protección en tiempo de ejecución: a pesar de los esfuerzos de los desarrolladores, es probable que el código vulnerable llegue a producción. La aplicación se debe proteger mediante WAF, WAAP, RASP y otras medidas de protección que puedan bloquear los intentos de explotación en los entornos de ejecución.
Valoración de la IA interna: los modelos de lenguaje de gran tamaño (LLM) de código abierto permiten a las empresas alojar sus propios sistemas de IA. Mantener la IA dentro de la empresa reduce la amenaza de fugas de datos, datos de entrenamiento contaminados y otros riesgos del uso de la IA generativa.
Cloudflare for AI ofrece a los directores técnicos las herramientas que necesitan para crear, alojar y proteger los canales de desarrollo asistido por IA y las aplicaciones que producen. Más información sobre cómo aprovechar la eficacia de la IA mientras implementas la seguridad por diseño.
Este artículo forma parte de un conjunto de publicaciones sobre las últimas tendencias y temas que afectan a los responsables de la toma de decisiones sobre tecnología en la actualidad.
Más información sobre cómo simplificar y proteger las iniciativas de IA en el libro electrónico "Conectividad cloud, una forma de recuperar el control de la informática y la seguridad".
Después de leer este artículo podrás entender:
Cómo el desarrollo asistido por IA beneficia los procesos de ingeniería
Los riesgos de utilizar la IA en el desarrollo de software
8 prácticas recomendadas para reducir o eliminar los riesgos del desarrollo asistido por IA