23 puntos por spilist2 2024-03-09 | 2 comentarios | Compartir por WhatsApp

(Al volver a leerlo por la mañana, vi que la publicación original tenía errores de formato y además era demasiado larga, así que la vuelvo a subir en una versión resumida)

He visto que quienes recién empiezan con ChatGPT suelen cometer 3 errores cuando intentan resolver un “problema complejo” con ChatGPT

  1. Esperar que ChatGPT les dé “la respuesta correcta” de una sola vez
  2. Esperar que ChatGPT les dé la respuesta correcta “de una sola vez”
  3. Como esa expectativa no se cumple fácilmente, se decepcionan y terminan usando ChatGPT solo para problemas simples, usándolo de forma pasiva o dejando de usarlo por completo

Como resultado, pierden muchas oportunidades de mejorar su productividad usando IA

Hasta hace unos meses, yo también era así

  • La carga inicial de la app era lenta, así que analicé el tamaño del bundle y encontré un archivo JS gigantesco. Descubrí que se podía eliminar la mayor parte de este archivo de 18,500 líneas
  • Al principio fui borrando a mano mientras lo revisaba visualmente, pero era demasiado aburrido y cometía errores a cada rato
  • Empecé a trabajar con ChatGPT. En el proceso me di cuenta de que, igual que un principiante, yo también estaba trabajando esperando que me diera “la respuesta correcta de una sola vez”
  • Tras darme cuenta, usé una “estrategia de colaboración entre tres partes” y experimenté un avance enorme en poco tiempo

Progreso del trabajo

Refactorízalo por mí

  • Le di una función, le expliqué el enfoque que quería y le pedí que la refactorizara → falló. Ni siquiera compilaba
  • No estaba entendiendo la estructura del código para modificarla, sino que iba borrando línea por línea

Escribe código que refactorice

  • En vez de hacerlo directamente, le pedí código en JS para refactorizar → falló. Esto también borraba línea por línea
  • Pensándolo bien, probablemente ChatGPT no había aprendido lo suficiente sobre este tipo de refactorizaciones masivas

Escribe código de refactorización con AST

  • Yo quería borrar bloques, no ir línea por línea. Es decir, hacía falta una comprensión sintáctica del código, así que pensé que usar AST sería una buena opción
  • Le asigné a ChatGPT el rol de un ingeniero con experiencia desarrollando para ESLint y le pedí que lo hiciera usando AST; entonces salió un excelente boilerplate basado en babel. Un gran avance
  • Como yo no tenía experiencia con babel, fui aprendiendo junto con ChatGPT mientras agregaba la lógica, pero al final me topé con dificultades. Era complicado manejar lógica compleja

Ya probé esto con AST. Esta parte no me está saliendo bien; ¿tú cómo lo intentarías?

  • Me di cuenta de nuevo de que estaba intentando obtener la respuesta correcta de una sola vez, así que cambié de estrategia. Cuando dejé de pensar que traverse tenía que ejecutarse solo una vez, todo empezó a fluir
  • Avancé rápido con un enfoque de ejecutar algo simple primero, ver el resultado e ir acumulando la lógica
  • En las partes donde algo no salía bien, le preguntaba a ChatGPT cómo implementar ese objetivo específico
  • Al final, las partes difíciles de convertir en reglas las terminé con mis propios ojos y manos. Para entonces, la cantidad de código ya se había reducido muchísimo y eso lo hizo posible

Resultado

  • Un código de 18,500 líneas quedó en 1,335 líneas, y el tamaño del bundle del chunk principal se redujo aproximadamente 7.8%
  • Al reducirse el tamaño del archivo JS y la lógica necesaria para la carga inicial, la velocidad de carga inicial mejoró un poco
  • Gané experiencia y confianza al haber refactorizado código legado largo y complejo usando AST
  • También gané confianza en que la mayoría de los problemas complejos pueden resolverse de forma efectiva mediante una colaboración entre tres partes: IA + código + humano

Modelo mental para resolver problemas complejos de forma efectiva junto con IA

  1. Entender qué hace bien la IA, qué hace bien el código y qué hace bien el ser humano.
  2. Analizar el problema que quiero resolver y distinguir las áreas donde IA/código/humano son más fuertes.
  3. Ayudar a la IA a producir bien el primer código, probar ese código en unidades pequeñas mientras lo mejoro junto con la IA y, en el proceso y al final, hacer yo directamente lo que sea más fácil para una persona.

2 comentarios

 
agart319 2024-03-12

Lo leí bien.

 
moderator 2024-03-09

Se eliminó la publicación duplicada.