1 puntos por GN⁺ 2024-06-10 | 2 comentarios | Compartir por WhatsApp

Pérdida de más de $10,000 por un solo error de ChatGPT

Proceso de monetización 🛣️

  • Contexto: Se empezó la monetización en una etapa temprana de la startup.
  • Fijación de precio: Se estableció en $40 al mes siguiendo el consejo de un group partner de YC.
  • Stack tecnológico: Se migró de NextJS a Python/FastAPI. La integración con Stripe quedó completada.

La causa de la pérdida de $10,000 💰

  • Aparición del problema: Surgió un problema de spinner de carga infinita en la función de suscripción.
  • Resolución del problema: Después de analizar innumerables correos y logs durante 5 días, se encontró el problema.
  • Causa: El código generado por ChatGPT tenía un error en la forma de generar IDs. Usaba una cadena fija como ID, lo que provocó colisiones.

Cazando el bug 🐛

  • Descripción del problema: El uso de una cadena fija como ID provocó colisiones. Como varias instancias corrían en AWS ECS, no hubo problemas durante el día, pero por la noche sí aparecían colisiones.
  • Cómo se resolvió: Se usó una función para generar UUID en lugar de un ID fijo. Tras corregirlo, el sistema se estabilizó.

Conclusión 🤖

  • Lección: Se reconocen errores como la falta de pruebas, copiar y pegar código y hacer commits directamente a la rama principal.
  • Experiencia: Fue una experiencia dolorosa, pero quedó como un momento importante para la startup.

La opinión de GN⁺

  • La importancia de las pruebas: Hacen falta suficientes pruebas unitarias y de integración.
  • Revisión de código: Más que copiar y pegar código, lo importante es revisarlo y validarlo.
  • Estrategia de despliegue: En vez de hacer commits directamente a la rama principal, es mejor usar una rama separada y pasar por revisión de código.
  • Capacidad para resolver problemas: Es importante poder identificar y resolver problemas con rapidez.
  • Elección del stack tecnológico: Los cambios en el stack tecnológico deben planearse y probarse con cuidado.

2 comentarios

 
znjadong 2024-06-11

Eh, el código generado automáticamente por IA siempre hay que revisarlo; ¿por qué lo usan tal cual?

 
GN⁺ 2024-06-10
Opiniones de Hacker News
  • Primera opinión: Detectó el error de inmediato. La causa fue la falta de experiencia del equipo. Si hubieran usado una solución de monitoreo, lo habrían detectado fácilmente.
  • Segunda opinión: Gracias a ChatGPT, la app generó ingresos. La pérdida de $10,000 se debió a la falta de habilidades en programación, depuración, logging y monitoreo.
  • Tercera opinión: La falta de monitoreo causó la pérdida de $10,000. Ocurrió una excepción en la base de datos, pero no hubo alerta. Si hubiera existido una alerta, se habría resuelto en 5 minutos.
  • Cuarta opinión: Señala el problema de la estrategia de evaluación de argumentos por defecto en Python. Se evalúan en el momento en que se define la función. Puede haber sido una decisión intencional por eficiencia. También critica la forma en que Python crea listas.
  • Quinta opinión: Las personas también cometen este mismo error con frecuencia. En especial, suele pasar que se olvidan de usar una lambda en React/TypeScript/JavaScript. Cree que la entrada del blog no explicó bien la causa raíz del problema.
  • Sexta opinión: Es un error que puede ocurrir fácilmente. Sin embargo, no entiende por qué no se detectó después del primer fallo. Se pregunta si no había logging.
  • Séptima opinión: Publicar este problema se siente ingenuo. No hay razón para culpar a ChatGPT. Le hace pensar en la idea de un servicio de code review.
  • Octava opinión: Fue un problema causado por restricciones de tiempo. Ese tipo de restricciones es la razón por la que teme a las suscripciones de software.
  • Novena opinión: No entiende a las startups que justifican un rewrite completo cuando ni siquiera tienen clientes.
  • Décima opinión: La habilidad para usar LLMs consiste en saber cuándo y cómo usarlos. La respuesta de ChatGPT fue adecuada, pero aprendió una gran lección al ver la recomendación de eliminar a todos los usuarios en una línea específica.

Cada opinión ofrece una perspectiva distinta sobre los problemas que pueden surgir en el proceso de desarrollo de software y sus posibles soluciones. Puede aportar ideas útiles para ingenieros de software principiantes.