Ventajas e inconvenientes de los asistentes de codificación de IA: Velocidad frente a calidad

Fiabilidad

Los asistentes de codificación con IA pueden ser buenos para la velocidad, pero ?ayudan a los desarrolladores a escribir códigos de calidad?

Con el lanzamiento este mes de Devin AI, la codificación con inteligencia artificial cobra una nueva vida: Un chatbot que gestiona todo el proceso, desde la solicitud de ayuda hasta la generación de código, pasando por las pruebas y la corrección de errores, e incluso la implementación.

Si la bola de cristal sugiere algo, el papel de un ingeniero de software va a cambiar como mínimo, pero a corto plazo, vamos a investigar los pros y los contras de los asistentes de codificación con IA.

Puntos clave

  • Los asistentes de codificación de IA, como GitHub Copilot o ChatGPT, son cada vez más populares entre los desarrolladores, ya que ofrecen aumentos de velocidad y productividad al sugerir la finalización del código en función del contexto.
  • Pero, a pesar de estas ventajas, hay que cuestionar la calidad del código producido por los asistentes de IA: ?hay rotación de código y una futura deuda técnica?
  • Los asistentes de codificación de IA pueden acelerar el desarrollo, pero comprometen la calidad del código si no se utilizan con cuidado, y el código debe revisarse y verificarse de forma forense.
  • Los desarrolladores deben tener cuidado con los riesgos de escribir código menos seguro mientras confían demasiado en su seguridad.
  • Hablamos con una serie de desarrolladores y especialistas en código para realizar un análisis desde la primera línea del desarrollo de código de IA.

?Por qué es importante la codificación de la IA?

En el núcleo de toda aplicación de software hay líneas de código. Dependiendo de factores como la funcionalidad prevista y las decisiones arquitectónicas, la base de código puede oscilar entre miles y millones de líneas.

Este código a menudo se basa en bibliotecas reutilizables e interfaces con otros componentes a través de interfaces de programación de aplicaciones (API), y puede organizarse en contenedores modulares y microservicios para gestionar la complejidad.

Dados todos los rigores asociados al ciclo de vida del desarrollo de software, escribir códigos manualmente desde cero siempre ha sido un reto para los desarrolladores.

En nuestro nuevo mundo habilitado para la IA, muchos desarrolladores están recurriendo a asistentes de codificación de IA como Devin AI, GitHub CoPilot o ChatGPT, con una investigación de GitHub que muestra que el 92% de los desarrolladores con sede en EE.UU. utilizan ahora herramientas de codificación de IA para mejorar la velocidad de codificación y la productividad.

A pesar de los avances, un nuevo estudio de GitClear ha cuestionado la creencia de que los asistentes de codificación de IA están haciendo avanzar el desarrollo de software sin inconvenientes.

El informe analizó más de 150 millones de líneas de código y descubrió preocupantes aumentos en la rotación de código y disminuciones en la reutilización desde el auge del desarrollo basado en modelos de IA.

Esta situación plantea la siguiente pregunta: si los asistentes de codificación de IA son excelentes para la velocidad, como afirma GitHub, ?qué podemos decir de la calidad y la seguridad de los códigos generados por ellos?

Asistentes de codificación de IA y cómo funcionan

Los asistentes de codificación de IA, como Devin AI, Github Copilot, Divi AI y Amazon CodeWhisperer, son herramientas que utilizan la IA para ayudar a los desarrolladores de software a escribir, revisar y depurar el código.

Aprovechan modelos generativos de IA y grandes modelos de lenguaje (LLM) que se entrenan en grandes conjuntos de datos de código para sugerir complementos para líneas y bloques de código en un entorno de desarrollo integrado (IDE).

A medida que un desarrollador escribe, el asistente ofrece recomendaciones en tiempo real para autocompletar sintaxis común, nombres de variables/funciones e incluso fragmentos enteros de código basándose en el contexto. Por ejemplo, si un programador escribe ?for i in… “, el asistente puede sugerir ”for i in range(10):? para completar la sintaxis del bucle for.

Esto no es un autocompletado genérico, sino que la IA codifica contigo y sigue tu contexto para hacer (con suerte) las sugerencias correctas.

Además de autocompletar el código, algunos asistentes también pueden generar definiciones de funciones o clases enteras si el desarrollador describe la lógica en comentarios en lenguaje llano.

Por ejemplo, un gestor de proyectos de Deloitte compartió cómo construyó y lanzó una aplicación desde cero utilizando asistentes de codificación de IA en 30 días.

Por su parte, Devin AI ha demostrado con éxito que realiza tareas en Upwork:

 

Otras características útiles de las herramientas de programación de IA son la detección de errores, la ayuda en la documentación mediante comentarios y README, y las explicaciones o ejemplos de uso del código.

Los asistentes de codificación de IA ofrecen velocidad, pero ?garantizan un código de calidad?

Una de las principales motivaciones para adoptar asistentes de codificación de IA es acelerar el desarrollo de software y eliminar las tareas mundanas relacionadas para los desarrolladores, dijo Vaclav Vincalek, fundador de 555vCTO a Techopedia en un correo electrónico.

Sin embargo, Karthik Sj, vicepresidente de Gestión de Productos y Marketing de Aisera, argumenta que esto puede producirse a costa de comprometer la calidad del software, lo que puede tener consecuencias negativas tanto para los desarrolladores como para los usuarios.

Afirma:

“En términos de calidad, los LLM subyacentes distan mucho de ser perfectos, y los resultados pueden ser impredecibles en algunos casos. Por eso los desarrolladores deben revisar siempre el código generado?.

Según el informe de GitClear, aunque las herramientas de IA ayudan a los desarrolladores a escribir código más rápido, esto no tiene en cuenta ?el código malo que no debería escribirse en primer lugar?.

El informe sostiene que la velocidad bruta de generación de código no es el único factor importante: la calidad y la necesidad del código también importan. El simple hecho de escribir más código más rápido puede introducir potencialmente deuda técnica, problemas de mantenimiento y complejidad en el futuro si se trata de código de baja calidad o innecesario.

Nazmul Hasan, fundador y CIO de AI Buster, coincide con Gitclear, y a?ade que los códigos de baja calidad pueden causar importantes dolores y ralentizaciones a los futuros lectores y mantenedores que intenten comprender y actualizar el código.

Explicando esto en una charla con Techopedia, dijo: ?Integrar asistentes de codificación de IA en mi flujo de trabajo ha tenido efectos mixtos en la mantenibilidad y legibilidad del código?.

“Estos asistentes agilizan la codificación y ayudan a mantener los estándares, pero siempre existe el riesgo de que el código generado por la IA no se ajuste a las directrices específicas de mi proyecto o no sea fácilmente comprensible para mis compa?eros de equipo.

He observado casos en los que esto provocaba incoherencias e introducía deuda técnica. Me ha quedado claro que, a la vez que se aprovecha la IA para aumentar la eficiencia, es igualmente importante garantizar que el código permanezca limpio, bien documentado y coherente con nuestros principios arquitectónicos.”

Asistentes de codificación de IA: Una receta para las vulnerabilidades del software

Dado que la seguridad de la IA generativa sigue siendo un tema de preocupación mundial, es justo cuestionar la creciente dependencia de los asistentes de codificación de IA.

Un estudio reciente de un equipo de investigadores de la Universidad de Cornell, en el que se examina cómo utilizan los programadores los asistentes de codificación de IA, descubrió tendencias preocupantes en relación con las vulnerabilidades de seguridad.

Los investigadores descubrieron que los programadores con acceso a una herramienta de codificación de IA escribían un código significativamente menos seguro que los que no contaban con asistencia de IA.

Además, era más probable que los programadores creyeran que su código asistido por IA era seguro, incluso cuando contenía más vulnerabilidades.

El estudio también indicó que los usuarios que confiaban menos en las herramientas de programación con IA y personalizaban sus indicaciones con más cuidado introducían menos problemas de seguridad.

Los investigadores descubrieron que, aunque las herramientas de codificación de IA pueden aumentar la eficacia, pueden fomentar el exceso de confianza y reducir la calidad del código de las aplicaciones sensibles a la seguridad.

Teniendo en cuenta estos importantes retos y riesgos para la seguridad del código que generan, ?hemos alcanzado el nivel en el que podemos depender de los asistentes de codificación de IA para nuestros códigos?

La respuesta no es sencilla, dice Hasan, ya que depende de varios factores, como el tipo, la complejidad y el dominio del código, la calidad y la fiabilidad del asistente de codificación de IA, y el nivel de supervisión y verificación humanas.

La seguridad es un ángulo interesante aquí, se?aló David Brauchler, consultor principal de seguridad de NCC Group, en una charla por correo electrónico con Techopedia.

“También hay que tener en cuenta que estos sistemas no están entrenados para generar buen código. Están entrenados para generar código similar al humano, incluidos sus defectos, suposiciones y vulnerabilidades.

Y es muy posible que, a medida que estos modelos consuman más datos, deduzcan más sobre los tipos de errores que comete la gente al escribir código, dando lugar a problemas difíciles de detectar.”

?Cómo pueden los desarrolladores minimizar el riesgo al utilizar asistentes de codificación de IA?

El auge de los asistentes de codificación de IA plantea un dilema a los equipos de software: o utilizarlos y arriesgarse a que el código sea de menor calidad, o prescindir de ellos por completo y retrasar potencialmente la salida al mercado de tu producto.

Pero puede haber una tercera opción: obtener los beneficios minimizando los riesgos.

A este respecto, Sj recomienda la necesidad de que los desarrolladores mejoren sus habilidades de ayuda de la IA durante la formación, así como que establezcan directrices claras sobre para qué utilizar las herramientas.

Peter McKee, Jefe de Relaciones con Desarrolladores de SonarSource, sugiere que los desarrolladores pueden necesitar introducir herramientas de escaneo de código en su viaje de desarrollo para mitigar los posibles errores de codificación de GenAI.

Dijo a Techopedia:

“Introducir el escaneado de código en el proceso CI/CD puede ayudar a supervisar continuamente el código generado por la IA en busca de errores y problemas.

Esto permite a los desarrolladores seguir centrándose en los problemas de más alto nivel del proyecto, les da una visión de los errores y permite resoluciones más rápidas.”

Para detectar vulnerabilidades en los códigos desarrollados por GenAI, McKee también sugiere emplear Pruebas estáticas de seguridad de aplicaciones (SAST), ya que pueden ayudar a los desarrolladores a identificar vulnerabilidades de seguridad antes de pasar los códigos a producción.

Conclusión

Los asistentes de codificación de IA son herramientas potentes que pueden acelerar el desarrollo de software y mejorar la productividad de los desarrolladores.

Sin embargo, no son una bala de plata, y también pueden producir código de baja calidad o inseguro, reducir las habilidades y la creatividad de los desarrolladores, y plantear problemas éticos y legales.

Por lo tanto, los desarrolladores deben utilizar los asistentes de codificación de IA con precaución y discreción, y no confiar ciegamente en ellos.

Los desarrolladores también tienen que verificar, revisar y probar el código generado por los asistentes de codificación de IA y asegurarse de que cumple los requisitos y normas de cada lenguaje de programación y sector de uso.

Temas relacionados

Artículos relacionados

',a='';if(l){t=t.replace('data-lazy-','');t=t.replace('loading="lazy"','');t=t.replace(/