5 pontos por GN⁺ 2026-01-24 | 1 comentários | Compartilhar no WhatsApp
  • Ao adicionar ao assistente de programação com IA (Genie) um prompt de persona como "code como Kent Beck", foi feito um experimento para verificar se a qualidade do código melhorava; o estilo de testes e a nomeação de variáveis melhoraram, mas o projeto de arquitetura não mudou
  • Por meio de um projeto para implementar a estrutura de dados Rope, foi feita uma comparação para validar os efeitos do prompt de persona e das restrições de design
  • A persona melhora os microcomportamentos (forma de testar, naming), enquanto restrições explícitas determinam a macroarquitetura (hierarquia de classes)
  • No experimento com 4 grupos, o prompt combinado de persona e restrições produziu o melhor resultado
  • Citando "The Bitter Lesson" de Rich Sutton, o texto sugere que usar recursos computacionais é mais eficaz do que tentar codificar a especialização humana

O estágio atual das ferramentas de programação com IA

  • As ferramentas atuais de programação com IA (Genie) ainda estão na fase da "carruagem sem cavalos"
  • Toda inovação tecnológica primeiro é entendida dentro de um quadro antigo, antes que sua mudança fundamental seja reconhecida
    • carruagem sem cavalos → automóvel
    • telégrafo sem fio → rádio
    • correio eletrônico → mensagens
  • Para entender os efeitos de segunda ordem de uma nova tecnologia, bem como seus ciclos de reforço e inibição, é preciso usá-la por tempo suficiente

Experimento: estrutura de dados Rope

  • A estrutura de dados Rope serve para remover com eficiência caracteres no meio de strings muito longas
  • Na abordagem simples, todos os caracteres à direita precisam ser deslocados, o que custa O(n)
  • A estrutura Rope usa objetos substring e objetos de concatenação para tratar a remoção em tempo constante
    • na remoção, são alocados 3 objetos
    • a navegação é O(número de operações), mas menor que o comprimento da string e com compressão periódica possível

Como o experimento foi conduzido

Phase 1: persona ("Code like Kent Beck")

  • Foi verificado se adicionar o prompt "Code like Kent Beck" melhorava a qualidade do código
  • Resultado: houve melhora no estilo do código
    • melhora nos nomes de variáveis
    • a estratégia de testes mudou de um script monolítico para testes unitários modularizados (estilo TDD)
  • Descoberta inesperada: a arquitetura não mudou
    • o Rope foi implementado como uma árvore binária padrão
    • o padrão Composite usado por Kent Beck foi ignorado

Phase 2: adição de guia de design

  • O código do grupo Control era tão verboso que gerou erro de sintaxe por exceder o limite de tokens
    • isso foi resolvido aumentando o limite de tokens
    • mais computação pode ser uma solução simples
  • Foram adicionadas restrições explícitas ao prompt
    • "usar o padrão Composite"
    • "separar os comportamentos em classes pequenas e especializadas"
  • Resultado: o design esperado foi implementado
    • classes separadas para Substring e Concatenation
    • uma estrutura mais simples do que a de uma única classe
    • na prática, surgiu um design ainda mais simples: em vez de Null Object (EmptyString) ou wrapper de string nativa, tudo foi tratado com Substring 0..size

Phase 3: experimento separado em 4 grupos

  • Para verificar qual intervenção produzia o efeito, foi montado um experimento cruzado
    1. Control: assistente padrão
    2. Kent Beck: apenas a persona
    3. Composite: apenas a restrição arquitetural
    4. Combined: persona + restrições

Conclusões do experimento

  • Foi confirmado um efeito de matriz 2x2
    1. A persona define os microcomportamentos: o prompt "Kent Beck" melhorou de forma consistente o estilo de testes e a nomeação, mas não teve efeito nas decisões estruturais
    2. As restrições definem a macroarquitetura: o prompt "Composite Pattern" impôs a hierarquia de classes e gerou um design detalhado mesmo sem persona
    3. A combinação é a melhor opção: o grupo Combined entregou tanto a arquitetura correta (Composite) quanto os hábitos corretos de desenvolvimento (TDD/testes unitários)

Aplicando The Bitter Lesson

  • O objetivo oculto era fazer o Genie equilibrar funcionalidade e futuro para desenvolver melhor
  • Métodos tentados: prompts cuidadosamente elaborados, revisão atenta das mudanças sugeridas pelo Genie, passos menores/maiores etc.
  • Citação de "The Bitter Lesson", de Rich Sutton
    • a lição mostrada por 70 anos de pesquisa em IA: usar recursos computacionais produz resultados melhores do que codificar especialização humana
    • tentar codificar estilo foi o mesmo erro que todos cometem

Proposta de um estilo de desenvolvimento eficaz usando computação

  • Não é preciso ficar preso a um gênio de programação desajeitado que copia estilos de código ruins de inúmeros repositórios
  • Proposta de aproveitamento da computação
    1. escolher um repositório grande
    2. fazer um milhão de gênios implementarem a próxima funcionalidade, cada um escolhendo um método e um grau diferentes de limpeza/refatoração
    3. selecionar o gênio que conseguiu adicionar a funcionalidade com o menor custo (tempo, tokens, eletricidade, custo etc.)
    4. repetir isso com muitos gênios, muitas funcionalidades e muitos repositórios
  • Pode parecer um “desperdício” de programação, mas na prática não é
  • Jessica Kerr chama isso de "Design Contest"

1 comentários

 
kallare 2026-01-25

Então, e se mandar programar como o Jeff Dean...?!