Ese desarrollador es ChatGPT y tengo una relación de amor y odio con él.
Hay tantos artículos sobre IA hoy en día, así que trataré de ser breve.
Usar ChatGPT para codificar es como tener un desarrollador Junior debajo de ti. Pueden obtener el 80% del código allí, pero deberá revisar prácticamente todas las líneas.
Tengo que admitir que hay muchas formas en las que podría usar ChatGPT para ayudar a escribir código. Probablemente sea mejor en algunos de ellos y peor en otros.
Por ejemplo, he escuchado a mucha gente usándolo como motor de búsqueda. Personalmente, lo encuentro un poco cuestionable. No es tan difícil encontrar documentación o incluso respuestas a través de una búsqueda. Yo uso Kagi que ayuda a reducir la pelusa.
Por el contrario, usando ChatGPT, ¿cómo se supone que debes saber si la respuesta es verdadera?
En el otro lado del espectro, hay muchas personas que lo usan como un autocompletado glorificado. Algo así como Github Copilot . Puedo ver que es útil.
El escenario que he elegido es:
Convirtiendo mi código de chakra-ui a tailwindcss .
¿Por qué?
Mirando alrededor del campo, parecía que incitar bien es la diferencia entre obtener resultados buenos o mediocres. No soy el mejor en esto, pero investigué un poco e hice lo mejor que pude.
Me aseguré de usar varias indicaciones para que llegara a un buen estado. Solo pego mi código cuando parece que sabe que solo debería convertir mi código.
Honestamente, esta parte podría mejorarse. Entre la interfaz de usuario y la interacción, es bastante difícil de usar:
Puede tomar algún tiempo para que alcance el estado deseado
Entre pensar en qué escribir, luego esperar a que responda y termine de escribir, se vuelve bastante molesto hacer este trabajo.
es inconsistente
No ayuda que no siempre puedas reutilizar las mismas indicaciones. ChatGPT tiene algo de aleatoriedad, por lo que tuve que modificar el aviso cada vez. Copiar y pegar un mensaje que funcionó anteriormente no ayudó.
Es muy fácil salir del estado deseado.
Lo anterior está bien si es una cosa de una sola vez. Pero descubrí que es muy fácil que la IA olvide todo después de la primera conversión de código. El éxito más repetido que tuve fue 3 veces creo. Más allá de eso, devolvió cosas completamente ajenas, como explicar qué hace mi código.
El token es un factor bastante limitante
Solo hay una cantidad limitada de código que puede producir debido a su límite de tokens. Puede consultar el tokenizador aquí para ver cómo calcula los tokens . No es muy amigable para el código. A continuación se muestra un ejemplo de una de sus salidas. Cada color diferente representa una ficha.
Debido a esto, tengo que dividir la conversión en varios pasos. De lo contrario, la generación se detendrá en el medio. Decirle que continúe no funciona la mayor parte del tiempo. Combinado con los puntos anteriores, esto se convierte rápidamente en una tarea ardua.
Con todo, la sensación que tengo es que no quiero escribir en inglés. Si ya tengo que escribir algo, prefiero escribir directamente código que funcione.
Puedo ver que la ingeniería rápida es una habilidad clave para tener en el futuro. Similar a cómo saber cómo buscar es una habilidad clave en el mundo de hoy.
A pesar de todo el trabajo que tomó, ChatGPT generó un código bastante impresionante. Aquí hay una comparación entre el original y el resultado:
Como puede ver, hizo el trabajo decentemente bien.
El bueno
La estructura se lleva bastante bien.
Aparte de los detalles, la estructura HTML es bastante similar a la original. Los espacios están apagados, pero el diseño general permanece.
El contenido del texto no cambia.
El contenido en sí se manejó bien. A pesar de que tuve que verificarlos dos veces, nada cambió. La única excepción son los derivados de JS.
El malo
Tenía clases aleatorias.
Hay muchas clases que no hacen nada. Algunos se cambiaron y otros eran clases de viento de cola no válidas.
Hay un montón de pequeñas diferencias
La interfaz de usuario parecía como si una biblioteca acabara de actualizarse y alguien olvidó migrar el código. En este caso, es porque ChatGPT cambió aleatoriamente los valores de las clases. Por ejemplo, un padding
de 3 a 4, o cambiar el font-weight
de negrita a normal. Los detalles estaban todos mal.
No funciona la mitad del tiempo
Las capturas de pantalla anteriores son las que puedo comparar directamente. En realidad, los resultados estaban incompletos o eran tan erróneos que tuve que hacer muchos cambios para que funcionara. Y por eso, no puedo compararlo uno al lado del otro. Simplemente no hay nada con lo que pueda comparar ya que el código no se ejecuta.
Lo bueno de esto es que tengo algo a partir de lo cual trabajar. Afortunadamente, el trabajo en sí es muy sencillo. Es fácil detectar errores. El mapeo entre las clases de chakra-ui y tailwind es casi uno a uno. Solo es tedioso porque la sintaxis es diferente.
Pero este enfoque es más parecido a revisar los RP. Tuve que escanear todo el código para asegurarme de que todo se hizo correctamente.
Se ve bien a primera vista. Pero hay muchas trampas una vez que trabajas con él y prestas mucha atención. Trae esta falsa sensación de seguridad que me frustró un poco una vez que descubrí todas las fallas.
Una gran parte es código que se interpola de otras bases de código. No se ve terrible, pero no es lo que quería.
Incluso hay algunos cambios alarmantes como cambiar el encabezado de h2 a h1. Solo puedo asumir que hizo esto debido al contenido.
Se sintió como si un desarrollador junior juntara algo y no probara su código . Y ahora tengo que revisarlo y arreglarlo sin poder decirles que lo arreglen ellos mismos.
Y esto es horrible. Ya tengo mi dosis de revisar las relaciones públicas en el trabajo. ¿Ahora tengo que hacerlo yo también para mis propios proyectos? ¡No, gracias!
Si bien no creo que esté cerca de allí todavía, sí creo que la IA será útil en algún momento para el desarrollo en el futuro. Si la respuesta es LLM, ¿quién sabe?
Los límites de token aumentan constantemente
Me he demorado demasiado en terminar este artículo. Durante ese tiempo, hay muchos anuncios sobre el aumento del límite de tokens. Si bien no estoy seguro de si es público, pagado o lo que sea, es genial verlo.
Solicitar UX debería ser más fácil con el tiempo
Con los complementos de ChatGPT y una mejor integración, se deberían mejorar problemas como recordar el estado y la consistencia. Con suerte, eso reducirá el esfuerzo necesario para obtener resultados útiles de ChatGPT.
Mientras tanto, completé la otra mitad de la migración manualmente. ¿Fue más rápido? Bueno, quién sabe. Se sentía más o menos lo mismo. Pero escribirlo manualmente se sintió mucho mejor.