Programando con ChatGPT
Este tema está de moda (aunque ya hay quien dice que ve tendencias a la baja). Aquí mostramos un ejemplo de como comenzamos a entender el papel de la IA ayudándonos en tareas de desarrollo
Mira que este boom de la inteligencia artificial (IA) es nuevo (el boom, no la IA), y ya hay ingentes cantidades de contenidos de toda índole enseñando cómo hacer cualquier cantidad de cosas apoyándose en ella, también programar, especialmente programar.
Pues aquí tienes uno más :D
Hace un par de semanas hice una pausa temporal en consumir contenidos de este estilo, básicamente por un tema de saturación. Todos los días hay decenas de nuevas opciones, documentación, herramientas, vídeos, etc, e intentar seguir el ritmo puede llegar a ser frustrante, y con ello el FOMO crece a pasos agigantados.
Decidí que necesitaba cambiar de enfoque, y con ello mi aproximación y aporte a este mundillo.
Este post es parte del proceso, y te explico lo que vamos a hacer:
Las partes escritas por mí son escritas por mí. No porque persiga un purismo impostado o algo así, sino porque de momento considero que en ciertas actividades es importante para mí mantener mi esencia, de hecho, ni siquiera voy a pedir revisión o corrección a ninguna IA.
Las partes escritas por ChatGPT son escritas por ChatGPT y las muestro así tal cual, sin darle muchas vueltas.
Voy a pedir a la herramienta que me ayude con el proceso de producción de una solución de software que responde a una necesidad que, honestamente, en este punto tampoco tengo del todo clara, la iremos definiendo por el camino.
Aunque sé que ChatGPT es igual de bueno en cualquier idioma, toda la interacción la haré en inglés (o en el idioma de Shakespeare, como dice mi compi Carlos Cid), cuestión de gustos.
Os voy mostrando los prompts y sus resultados por partes, luego toda la transcripción la podréis consultar íntegramente aquí.
Incluso habiéndole establecido el número de historias de usuario en tres, ha decidido que el número correcto son cinco. Es cierto que le he dejado la puerta abierta para ello también. De momento nada que objetar, ya iremos viendo.
Pasamos a escribir la primera historia de usuario.
Ha generado hasta 6 criterios de aceptación. Por cuestión de espacio no incluyo la captura de pantalla completa, pero recordad que la transcripción la encontráis aquí.
En todo caso, os digo que he echado en falta una sección de Definition of Done, así que la he pedido, y a ti estimado lector, si no te has suscrito aún a Upgrader, te pido por favor que aproveches, si gustas, que como ves publicamos cosillas chulas:
Hago lo mismo con la siguiente historia, y además de no incluir el DoD como en el primer caso, tuve que puntualizar un par de cosas porque no quedaba conforme con la especificación:
Las siguientes tres historias funcionaron de acuerdo a lo esperado, no incluyo capturas por no aburriros con un scroll infinito. Sólo puedo añadir que no he tenido objeción alguna al resultado, y ya prometo no recordaros más que el chat completo está aquí. Palabrita de boy-scout ✋🏻
Sé que me estoy poniendo varias gorras en este proceso, porque lo anterior se podría entender como trabajo de un Product Owner o similar, más que directamente un programador, y que justo el siguiente paso será más de una especie de analista, arquitecto, o similar, pero no nos paremos en esos detalles, pienso que tampoco debo aclarar demasiado que en muchas ocasiones esas líneas entre roles son bastante difusas, y está bien que así sea.
Una de las razones del mini-burnout que comentaba al principio viene por la abrumadora sensación de que detrás de la pantalla hay una especie de “magia negra” que mueve los hilos.
Pero Manu, por favor, tú sueles ser más técnico, ¿cómo dices eso y te quedas tan ancho?
Sí, lo digo. Mi mente pseudo-analítica sabe que no es así, pero esa línea tan fina que separa intentar entender lo más posible algo tan complejo, o simplemente dejarlo estar y aprovecharlo, es la razón de fondo por la que a ratos veo la cuesta sumamente empinada.
Venga, que me sacudo el halo pesimista y seguimos explorando.
La respuesta de arriba para un programador con un perfil más bien “backenero” es ORO puro. Resume perfectamente lo que quería y da respuesta a una pregunta bastante común cuando te enfrentas al green field de un proyecto: ¿por dónde tiro?
Ya sabéis que por razones de espacio no pongo la respuesta completa, pero venga, otro cachito, en todo caso el chat comple… ¡Es broma! Que antes dije “palabrita” :D
Me parece que la fase de definición está completa. El siguiente paso si que es picar código.
Ya os adelanto, la estructura final de ficheros que ha generado Doña IA no sigue al detalle la que ella misma había propuesto arriba. De momento lo dejo estar y le pido que implemente la primera historia de usuario, y lo primero que hace es recordarme que no le he establecido un criterio concreto con respecto al framework a utilizar. La decisión que ha tomado me parece correcta.
Así como el código HTML, ha generado un CSS muy simple, el código JavaScript necesario, y una librería de testing. Pienso que no ha seguido TDD, pero el resultado a simple vista pinta bien, de momento no tocamos nada y seguimos con el resto de historias de usuario.
Las respuestas de ChatGPT tienen generalmente un tono didáctico. Además de darte siempre la sensación de que no estás leyendo la verdad absoluta, que estás usando una herramienta pero que tu aporte sigue siendo necesario. Este punto me parece fundamental en la relación del ser humano con la IA, pero alto que me pongo a filosofar y el post no va de eso.
El resultado final es todo el código generado y lo puedes encontrar aquí (este enlace es distinto al otro :D).
Como decía antes, no pruebo aún, simplemente porque doy por hecho que aún no sé cómo probar nada. Sí, suena raro, puede que tengas que leer de nuevo la frase.
El siguiente paso entonces es pedirle a la IA que me explique qué proceso debo seguir para poder ponerme manos a la obra con este proyecto desde el punto de vista del desarrollador en el caso de que lo coja desde cero.
(ay los do y los does ahora que leo de nuevo :|)
Voy un poco más allá, incluso siendo desarrollador, ya tengo en local el proyecto, puedo interactuar con él, pero si leemos la documentación completa aquí, veremos que falta definir cómo debemos proceder para poner la herramienta en marcha en una página web.
Lo preguntamos y cómo no, la respuesta a mi juicio no tiene objeción, la he colgado aquí.
Ya está, es así de “simple”. Hemos generado una funcionalidad desde cero, considerando todos los pasos, con una completitud más que aceptable y en algunos casos diría que sobresaliente.
No analizaré cuánto tiempo me habría llevado hacerlo de una forma “más tradicional”. La realidad es que hacerlo, compilar todo en un repositorio de código y escribir sobre ello me ha llevado muy poco tiempo, dejémoslo ahí.
Los siguientes pasos pueden ser infinitos, me ciño a estos ejemplos: analizar si ChatGPT es la herramienta idónea por no ser un modelo específico de desarrollo, o si el código que genera es correcto, robusto, completo, etc, o si las premisas de partida de las historias de usuario son adecuadas, si las librerías que sugiere están vigentes, y todo el largo etcétera que queramos añadir.
Seguro pensaste que no iba a llegar este meme, pero si, llegó:
A mi entender, la IA está aquí para ayudarnos, de momento no es más que eso, una herramienta. Sus resultados pueden ser todo lo bueno que queramos si aportamos instrucciones claras, tareas pequeñas, etc, y conocemos en todo momento sus limitaciones. Luego, lo que hacemos con esos resultados nos abre un mundo de posibilidades porque es donde entra el ingenio humano, es donde entramos nosotros.
Luego se abre también todo un abanico de discusiones, como temas de licenciamiento y autoría, o confidencialidad, privacidad, etc, pero para poder llegar a esa discusión hay que tener bases claras que permitan dar forma a argumentos sólidos. Yo aún estoy en ello.
Ahora mismo no tengo muy claro cómo continúa la evolución de la herramienta que hemos desarrollado con ayuda de ChatGPT, lo primero es probar que funciona bien, por supuesto. Está claro que deberíamos integrar mejoras de UX, o por lo menos un UI decente, a lo mejor el proceso da para otro post.
Mientras tanto, muy al hilo de lo que siempre me dice mi compi Pablo Renaud, pienso que la IA está aquí para ayudarnos, y nuestro foco en Ebolution es sacar el mejor provecho posible para poder nosotros ayudar a nuestros clientes a potenciar cada vez más sus negocios digitales.














