paint-brush
Mi nuevo desarrollador junior apesta un pocopor@michaelsalim
1,193 lecturas
1,193 lecturas

Mi nuevo desarrollador junior apesta un poco

por Michael Salim6m2023/05/12
Read on Terminal Reader

Demasiado Largo; Para Leer

Usar ChatGPT para codificar es como tener un desarrollador Junior debajo de ti. Puede obtener el 80% del código allí, pero deberá revisar prácticamente todas las líneas. Entre la interfaz de usuario y la interacción, es bastante difícil de usar. El éxito más repetido que tuve fue 3 veces.
featured image - Mi nuevo desarrollador junior apesta un poco
Michael Salim HackerNoon profile picture
0-item

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.

TL;RD:

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.

El escenario

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é?


  • Hay muchos recursos para ambas tecnologías, especialmente Tailwind (y, por supuesto, HTML). Debería tener muchos datos para trabajar.


  • Es muy posible crear un programa para hacer esto. Si bien puede haber muchos casos extremos, la funcionalidad en sí es sencilla. chakra-ui está inspirado en el viento de cola, por lo que hereda un montón de cosas que se pueden transferir fácilmente.


  • Es algo que necesito hacer. Entonces, es un caso de uso real que alguien más podría encontrar.

La ingeniería rápida es una tarea

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.


    Código tokenizado

    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.


    ChatGPT lanza un error cuando se le pide que termine su generación de código


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.

La salida no es tan mala

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.

Es como revisar relaciones públicas en lugar de escribir código

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!

futuro esperanzador

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.