stamatios
← Voltar ao feed
Robô empilha pranchas finas sobre blocos robustos, metáfora de camadas finas sobre primitivas no coding agêntico
Dev & Engenharia

Coding agêntico favorece camadas finas sobre primitivas focadas

resumo de ~3 min

Um experimento com gráficos

Robin Wieruch conta que, em um projeto freelance, precisava de três gráficos customizados (barras empilhadas, linha e donut) que seguissem exatamente o design system do cliente. A escolha óbvia seria Recharts, já instalado no projeto. Ele então rodou um experimento que teria sido irresponsável pouco antes: em uma hora, criou duas versões dos mesmos componentes - uma construída sobre os primitivos matemáticos do D3 com React renderizando o SVG, e outra com Recharts, com a mesma API e os mesmos design tokens.

O resultado o surpreendeu. A versão com primitivos atendeu ao design com precisão, incluindo animações de entrada, tooltips com crosshair e filtragem de legenda, sem atritos. A versão Recharts chegou a 80% mais rápido, mas os 20% finais exigiram o mesmo código SVG customizado de qualquer forma, e a animação de entrada congelou na stack React do projeto - o único contorno foi desligá-la. Os workarounds se acumularam justamente no lado de alto nível.

O que é uma abstração

Wieruch define uma biblioteca de alto nível como "trabalho de implementação pré-pago e codificado": alguém gastou milhares de horas para que os ticks dos eixos caiam em números redondos e que o tooltip siga o cursor sem piscar. O preço não é dinheiro, é flexibilidade - as opiniões da biblioteca sobre renderização, estilo e comportamento vêm embutidas, e fora do "caminho feliz" o desenvolvedor volta a pagar, seja em wrappers, estilos remendados ou issues fechadas com "not planned".

Esse cálculo, e não elegância, explica por que as equipes subiram a escada de abstrações por vinte anos: quando um gráfico manual custava três semanas e uma biblioteca custava uma tarde, aceitar as opiniões da biblioteca era a única escolha racional. jQuery, Backbone, Angular, React, bibliotecas de componentes, ORMs e meta-frameworks converteram trabalho humano caro em dependências baratas. Houve sinais precoces de reversão, como o Bootstrap dando lugar ao Tailwind e o Shadcn UI, que entrega o código para o time copiar e possuir - apostas em propriedade feitas antes de ela ficar barata.

O que muda com codificação agêntica

O argumento central: quando um agente produz um componente revisado e funcional em minutos em vez de semanas, a escassez de trabalho de implementação que justificava a biblioteca de alto nível evapora, e a aposta racional desce a escada - primitivos sem opinião mais uma camada fina que o time possui. Ele esclarece que não é um retorno a escrever tudo à mão nem "IA muda tudo": o pêndulo vai de alugar opiniões para possuir uma camada.

A camada fina do autor são componentes de gráficos de algumas centenas de linhas, sobre os módulos de escala e forma do D3, renderizados pelo React e estilizados com os tokens do projeto desde o início. Sem treadmill de upgrades, sem esperar maintainer, sem ler código alheio para achar por que uma animação congela. Ele ressalva que possuir uma camada só é viável se o time consegue mantê-la - daí a importância dupla dos fluxos agênticos, para escrever e para manter a consistência via padrões documentados e revisão.

Primitivos não significam zero dependências

A distinção relevante não é biblioteca versus ausência de biblioteca, e sim sem opinião versus com opinião: a dependência calcula por você ou decide por você? Uma escala (d3-scale) mapeia números em pixels sem opinar sobre o desenho; um framework de gráficos controla o SVG, o ciclo de animação e os tooltips. Problemas difíceis e estáveis - aritmética de datas (date-fns), validação de esquema (zod), interpolação de cores, posicionamento flutuante - continuam merecendo dependências. O que vale possuir é a parte que carrega a identidade do produto: renderização, interação e comportamento.

Quando a biblioteca ainda vence

O autor argumenta contra si mesmo: sem um fluxo agêntico estabelecido, o cálculo antigo vale por completo; se a interface é commodity (um dashboard interno com gráficos padrão), usar Recharts segue sendo certo e reconstruir seria vaidade; a responsabilidade de manutenção é real, já que a biblioteca tem milhares de projetos expondo casos extremos e o time tem um; e componentes com requisitos profundos de acessibilidade, como combobox, date picker e modal com foco gerenciado, codificam anos de testes com leitores de tela que não se regenera casualmente. Ademais, seu experimento funcionou porque ele sabia julgar o resultado: o agente colapsa o custo de escrever a camada, não o de entendê-la.

O ponto de cruzamento

A heurística antiga se mantém: quanto mais os requisitos se afastam do caminho feliz da biblioteca, mais os primitivos vencem. O que a codificação agêntica fez não foi mudar a heurística, mas mover o ponto de cruzamento dramaticamente na direção dos primitivos - requisitos antes do lado da biblioteca, como três gráficos seguindo um design system, agora ficam do outro lado. A conclusão do autor: a camada mais valiosa do codebase daqui a alguns anos provavelmente não será uma que você instalou, mas a camada fina que seu time escreveu sobre primitivos porque finalmente pôde pagar para possuí-la.