1 pontos por GN⁺ 2024-06-10 | 2 comentários | Compartilhar no WhatsApp

Perda de mais de US$ 10.000 por um único erro do ChatGPT

Processo de monetização 🛣️

  • Contexto: A monetização começou na fase inicial da startup.
  • Definição de preço: O valor foi definido em US$ 40 por mês com base no conselho de um group partner da YC.
  • Stack técnica: Houve migração de NextJS para Python/FastAPI. A integração com Stripe foi concluída.

A causa da perda de US$ 10.000 💰

  • Problema: Surgiu um problema de spinner de carregamento infinito no recurso de assinatura.
  • Resolução: Depois de analisar inúmeros e-mails e logs por 5 dias, o problema foi encontrado.
  • Causa: O código gerado pelo ChatGPT tinha um erro na forma de gerar IDs. Uma string de ID fixa foi usada, causando colisões de ID.

Encontrando o bug 🐛

  • Descrição do problema: O uso de uma string de ID fixa causou colisões de ID. Como várias instâncias estavam rodando no AWS ECS, durante o dia não havia problema, mas à noite ocorriam colisões.
  • Solução: Foi usada uma função de geração de UUID no lugar do ID fixo. Depois disso, o problema foi resolvido e o sistema se estabilizou.

Conclusão 🤖

  • Lição: O autor reconhece erros como falta de testes, copiar e colar código e fazer commit diretamente na branch principal.
  • Experiência: Foi uma experiência dolorosa, mas ficou marcada como um momento importante da startup.

Opinião do GN⁺

  • Importância dos testes: São necessários testes unitários e testes de integração suficientes.
  • Code review: Em vez de copiar e colar código, é importante revisar e validar o código.
  • Estratégia de deploy: Em vez de fazer commit diretamente na branch principal, é melhor usar uma branch separada e passar por code review.
  • Capacidade de resolver problemas: É importante conseguir identificar e resolver problemas rapidamente.
  • Escolha da stack técnica: Mudanças na stack técnica devem ser planejadas e testadas com cuidado.

2 comentários

 
znjadong 2024-06-11

Ué, código gerado automaticamente por IA tem que ser revisado, né? Por que usar isso do jeito que saiu?

 
GN⁺ 2024-06-10
Opiniões do Hacker News
  • Primeira opinião: O erro foi identificado imediatamente. A causa foi a falta de experiência da equipe. Se tivessem usado uma solução de monitoramento, isso poderia ter sido detectado facilmente.
  • Segunda opinião: O aplicativo gerou receita graças ao ChatGPT. A perda de $10.000 foi causada pela falta de habilidade em programação, depuração, logging e monitoramento.
  • Terceira opinião: A falta de monitoramento causou a perda de $10.000. Houve uma exceção no banco de dados, mas não houve alerta. Se houvesse um alerta, teria sido resolvido em 5 minutos.
  • Quarta opinião: Aponta um problema na estratégia de avaliação de argumentos padrão do Python. Eles são avaliados no momento da definição da função. Isso pode ter sido intencional por eficiência. A forma como o Python cria listas também é apontada como um problema.
  • Quinta opinião: Pessoas também cometem esse mesmo erro com frequência. Especialmente em React/TypeScript/JavaScript, é comum esquecer de usar lambda. A pessoa acha que o post do blog não explicou corretamente a causa raiz do problema.
  • Sexta opinião: Erros podem acontecer facilmente. Mas não dá para entender por que isso não foi detectado após a primeira falha. Fica a dúvida se não havia logging.
  • Sétima opinião: Publicar esse problema parece ingênuo. O ChatGPT não merece ser culpado. Isso faz pensar em uma ideia de serviço de code review.
  • Oitava opinião: Foi um problema causado por restrição de tempo. É justamente esse tipo de limitação que faz a pessoa ter medo de assinaturas de software.
  • Nona opinião: Não dá para entender startups que justificam uma reescrita completa sem nem ter clientes.
  • Décima opinião: Saber usar LLMs significa saber quando e como usá-los. A resposta do ChatGPT foi adequada, mas ver a recomendação para apagar todos os usuários em uma linha específica trouxe uma grande lição.

Cada opinião oferece perspectivas diferentes sobre problemas que podem surgir no processo de desenvolvimento de software e suas soluções. Isso pode trazer insights úteis para engenheiros de software iniciantes.