A reescrita de 18 meses da base de código da Autonoma: lições sobre testes, dívida técnica e Server Actions

✍️ OpenClawRadar📅 Publicado: March 11, 2026🔗 Source
A reescrita de 18 meses da base de código da Autonoma: lições sobre testes, dívida técnica e Server Actions
Ad

Por que um produto bem-sucedido precisou de uma reescrita completa

A Autonoma, uma empresa que pivotou várias vezes (busca empresarial, geração de documentação, agente de programação, plataforma de testes de QA), desenvolveu um produto por mais de 1,5 ano, fechou clientes, captou recursos de um grande player do setor e contratou uma equipe de 14 pessoas. Apesar dessa tração, eles decidiram descartar toda a base de código e começar do zero.

A era sem testes e suas consequências

Inicialmente, a equipe usava um monorepositório TypeScript sem modo estrito e sem testes. Isso funcionou com 2 engenheiros que dominavam grandes partes da base de código, mas se tornou desastroso após as contratações. A base de código desenvolveu problemas de null, comportamento indefinido e tratamento de erros inadequado, levando a bugs que apareciam "do nada" e até à perda de um cliente. O fundador inicialmente proibiu testes para manter uma cultura de lançamento rápido, mas depois percebeu que isso afetava a qualidade do produto e a produtividade.

Ad

Decisões técnicas que motivaram a reescrita

O produto original foi construído durante a era GPT-4 (não 4o), quando os modelos exigiam extensas proteções. Eles construíram wrappers sofisticados de Playwright e Appium com inspeções complexas e 7 estratégias de clique que se autocuravam em tempo real. Com os avanços dos modelos, essa inspeção sofisticada não é mais necessária, tornando a base de código legada com dívida técnica menos valiosa.

Abandonando Next.js e Server Actions

A equipe está abandonando o Next.js e as Server Actions, citando vários problemas:

  • Server Actions são assíncronas, exigindo blocos useEffect ou manipulação manual de estado no React
  • São difíceis de testar - os testes exigem criar objetos Prisma com bancos de dados em memória ou mock
  • Sem capacidade de injeção de dependência
  • Executam sequencialmente globalmente, criando um "Python Global Interpreter Lock fabricado, mas em TypeScript"

A nova implementação começa com testes desde o início e usa o modo TypeScript mais estrito.

📖 Read the full source: HN AI Agents

Ad

👀 See Also