¿Qué potencial disruptivo tiene ChatGPT, el prototipo de bot conversacional basado en Inteligencia Artificial (IA)? Esta es la pregunta que se están haciendo todos los sectores, también el de desarrollo de software. En este artículo exploramos las posibilidades y las limitaciones de la Inteligencia Artificial en su contribución a la eficiencia y la eficacia del código.

ChatGPT, asistente para programar

Más allá de todo el hype que se ha creado alrededor de ChatGPT, ¿de qué manera puede ayudar este chatbot de IA en los flujos de trabajo en el desarrollo de software?

Puede haber la tentación de externalizar toda la programación en esta herramienta de Inteligencia Artificial. Pues bien, incluso en los proyectos digitales de menor complejidad, este hipotético uso de ChatGPT es una mala idea. No hay ninguna actividad humana en la que la Inteligencia Artificial pueda reemplazar del todo a una persona. De momento.

«Lo que sí podemos decir», explica Josep Abelló, programador senior de Omatech, «es que ChatGPT puede generar nuevo código a partir de las indicaciones y del diálogo con el programador»

Ahora bien, ChatGPT no deja de ser un asistente, una herramienta que da apoyo a los desarrolladores humanos. De este modo, los programadores utilizan este chatbot y otras herramientas de IA como asistentes para agilizar el proceso de desarrollo.

Los frameworks ayudan a reducir los tiempos de desarrollo asegurando al mismo tiempo la máxima robustez de los productos. Pues bien, la Inteligencia Artificial la podemos interpretar también en esa clave.

¿Qué ventajas tiene ChatGPT para el desarrollo de software?

La gran ventaja de ChatGPT en el desarrollo de software es el ahorro de tiempo en las tareas de programación más rutinarias y en el testing. Además, este chatbot de IA puede ofrecer más de una solución a problemas que le plantee el desarrollador y ayudar a enfocar los siguientes pasos en el proceso de desarrollo.

Con ChatGPT, los programadores siempre están al mando.

  • Los desarrolladores mantienen el control de todo el proceso de desarrollo. En la toma de decisiones, siempre partiendo de los requisitos del proyecto, ahora pueden contar también con las contribuciones de este bot conversacional.
  • Los profesionales programan con más eficiencia gracias a la simplificación y agilización del flujo de trabajo. ChatGPT puede generar algunas partes de código y dar acceso en segundos a conocimiento útil y relevante para el proyecto.
  • Los programadores revisan la calidad, seguridad y fiabilidad del código generado por ChatGPT. Nunca hay que dar por bueno, de buenas a primeras, el código generado por IA. El desarrollador debe evaluar la solidez del código creado por el sistema de Inteligencia Artificial.

«El programador siempre debe valorar, interpretar y —si es necesario— corregir y adaptar el código y los datos facilitados por ChatGPT. Su misión es aplicar bien todo ese know how según el contexto del proyecto».

El chatbot ChatGPT no es una varita mágica para escribir todo el código. Pero sí que puede ayudar en el proceso de desarrollo

¿Cómo crea valor ChatGPT en el desarrollo?

ChatGPT crea valor en el desarrollo de software a través de la conversación que se establece entre este chatbot y el programador.

  • «El desarrollador expone el contexto y explica qué quiere hacer a través del uso de lenguaje natural y de la aportación de código. Tengo esta sección de código y, a partir de aquí, necesito…».
  • «El sistema entiende la petición y sabe perfectamente qué hace el código que le has facilitado».
  • «ChatGPT puede generar nuevo código, como haría un desarrollador. Tiene capacidad creativa. En otros ámbitos, como en la industria musical, ya hemos visto cómo te escribe una letra y una música singulares si le propones un tema y el estilo de un cantante conocido».
  • «La respuesta del bot puede ser tan completa como la que te dé un humano. El sistema de IA te explica qué ha pensado para solucionar el problema, y te ofrece el código y ejemplos. Es decir, no solo te escribe código, sino que te lo pone en contexto a través del empleo de lenguaje natural».
  • «Si no estás satisfecho con la respuesta, puedes pedirle una alternativa o que refactorice y mejore su propuesta».
  • «Sabes que existe una técnica o un recurso que permite hacer una cosa, pero no recuerdas cual es. Si describes esa herramienta con lenguaje natural al chatbot, te responderá cual es».
Ejemplo muy simple de petición a ChatGPT, con la respuesta que da el chatbot de Inteligencia Artificial al programador
Ejemplo muy simple de petición a ChatGPT, con la respuesta que da el chatbot de Inteligencia Artificial al programador.

¿Qué calidad tiene el código generado por Inteligencia Artificial?

El código que entrega ChatGPT es tan bueno como el brief —contexto, indicaciones, código— que le ha dado el desarrollador.

Las peticiones que hace el programador humano a este bot reflejan su conocimiento, sus habilidades y su solvencia profesional. Por eso solo un buen desarrollador sabe optimizar el uso de la IA para crear valor.

Además, el código debe ser siempre revisado por el profesional. «Por mucho que le pidas a ChatGPT una solución segura y fiable, debes estar muy atento. La razón es que el código que te entrega, igual no es seguro ni óptimo», resume el programador senior de Omatech

¿Qué limitaciones tiene ChatGPT en el desarrollo de software?

Como hemos dicho, ChatGPT se limita a asistir al desarrollador proponiendo sistemas y maneras de hacer, y escribiendo líneas de código que den valor al proyecto.

Pero este chatbot de IA no es tan eficiente cuando las preguntas que se le hacen son muy complejas o cuando la documentación que necesita es de más difícil acceso.

Podemos hacer peticiones de alta complejidad. Ahora bien, para resolverlas —siempre y cuando sea posible hacerlo—, hará falta ir puliendo en algunos pasos. Es decir, habrá que generar un diálogo con el sistema, con sucesivas peticiones, y con las correspondientes respuestas.

Paso a paso, después de muchas interacciones, ha habido desarrolladores que han construido aplicaciones enteras con esta Inteligencia Artificial. Pero se trata siempre de aplicaciones relativamente sencillas.

ChatGPT funciona bien con recursos consolidados y apoyados por una fuerte comunidad de desarrolladores. «Si le pido montar una tabla de datos con jQuery, una librería de JavaScript vigente desde hace mucho tiempo, la fiabilidad de la respuesta va a ser muy elevada. En cambio, si la librería fuese relativamente nueva y detrás no hubiese mucha comunidad, la fiabilidad será menor».

¿Puede sustituir ChatGPT a un programador?

ChatGPT no puede reemplazar a un desarrollador, porque su función es la de prestar asistencia en el desarrollo de proyectos de código.

Un programador utiliza ChatGPT como una herramienta para agilizar el proceso de desarrollo.

Para entender el rol de este chatbot de IA, podemos compararlo con Stack OverFlow, una plataforma web en la que los programadores hacen consultas en comunidades de desarrolladores construidas alrededor de un lenguaje de programación o framework.

En este foro, las soluciones y la orientación las dan personas expertas. En cambio, todas las aportaciones de ChatGPT se crean a partir de la Inteligencia Artificial. Esta es la esencia y el mérito de este sistema de IA.

Evidentemente, el talento que se congrega en Stack OverFlow te puede ofrecer más soluciones, y muchas de ellas de más valor (siempre y cuando obtengamos la respuesta que queremos). Sin embargo, no son una herramienta automática que responde al instante a tus consultas.

¿Qué diferencias hay entre ChatGPT y GitHub Copilot?

ChatGPT es un poderoso chatbot de IA, pero exige siempre un rol activo del desarrollador. El programador debe hacer peticiones empleando lenguaje natural e introduciendo secciones de código.

Cuando se comunica la petición inicial al bot, con la exposición del contexto y de los objetivos, se inicia un diálogo. El profesional puede ir añadiendo nuevos datos en el chat de IA, que ayuden a encontrar la respuesta que busca. La conversación es muy productiva gracias a la gran habilidad de ChatGPT en el manejo del lenguaje natural y de los lenguajes de programación, y gracias también a su memoria. Cuando decimos memoria, queremos decir que el sistema se acuerda de todas las cosas que se van escribiendo y aportando durante el diálogo.

A través de esta interacción, el bot puede ayudar a definir, tras varios intercambios entre máquina y persona, una estrategia o un código que den valor al proceso de desarrollo.

GitHub Copilot es una herramienta de asistencia basada en Inteligencia Artificial que tiene un acceso directo al código que está escribiendo el desarrollador. A diferencia de ChatGPT, GitHub Copilot accede a tiempo real a todo el contexto del proceso de desarrollo.

En concreto, GitHub Copilot es un asistente de pair programming, ya que, por decirlo de algún modo, se incrusta en el código que se está elaborando. Programa mano a mano con el profesional en el sentido de que puede hacer sugerencias para autocompletar el código que se está escribiendo. Luego, el programador lo debe revisar. Además, el desarrollador puede escribir comentarios para solicitar ayuda: «Genérame un código que haga esto».

«El comentario que genere GitHub Copilot a raíz de esa petición se incorporará seguidamente en el código según el criterio del usuario».