Escreva código como um humano vai mantê-lo

Comentários, nomes e legibilidade

  • Muitos preferem comentários mínimos e nomes claros em vez de muitos comentários.
  • Comentários redundantes que “explicam o que o código faz” são vistos como ruído e propensos a ficar defasados; comentários devem explicar o “porquê”, não o “o quê” ou “como o framework funciona”.
  • Alguns defendem um fluxo parecido com programação literária (escrever primeiro a prosa/intenção, depois o código), mas reconhecem que isso muitas vezes acaba virando apenas uma reescrita do próprio código.
  • O consenso: bons nomes, estrutura simples e comentários ocasionais do tipo “here be dragons / rationale” são o ideal.

Comentários e estilo gerados por LLMs

  • Há forte frustração com LLMs produzindo comentários verbosos e de baixo valor, notas históricas e conversa sobre o processo de implementação.
  • Os modelos frequentemente descrevem noções básicas da linguagem, peculiaridades do código ao redor ou o comportamento do chamador, quebrando o encapsulamento e ficando obsoletos rapidamente.
  • Tentativas de restringir isso via regras em CLAUDE.md / AGENTS.md ajudam um pouco, mas são seguidas de forma inconsistente; instruções negativas (“não faça X”) são especialmente falhas.

Produtividade vs. manutenibilidade com IA

  • Alguns afirmam ter um throughput 10x maior de features/bugs ao enviar qualquer coisa que passe nos testes e deixar a IA “lidar com a bagunça depois”.
  • Outros alertam que essa sujeira se acumula: lógica duplicada, regras de negócio divergentes e camadas defensivas aninhadas tornam o trabalho futuro de IA e de humanos mais lento e arriscado.
  • Há debate sobre se a velocidade de curto prazo será compensada pela complexidade de longo prazo, especialmente em bases de código grandes.

Prompts, checklists e fluxos de revisão

  • Muitos usam CLAUDE.md / AGENTS.md no nível do projeto, além de comandos explícitos de “/review” com longas checklists (DRY, estilo, duplicação, código morto, testes, documentação).
  • Alguns dividem a revisão em várias passagens especializadas (segurança, acessibilidade, desempenho, simplificação) e até revisão adversarial com múltiplos modelos.
  • Outros relatam retornos decrescentes conforme as listas de instruções crescem; os modelos ainda ignoram regras básicas (por exemplo, uso de git), exigindo guardrails no nível do sistema.

Ferramentas tradicionais e guardrails

  • Analisadores estáticos, linters, formatadores de código, detectores de duplicação e checagens de pre-commit/CI são amplamente recomendados como bases não estocásticas.
  • Alguns escrevem linters personalizados ou checagens no nível do compilador para impor coisas que LLMs violam rotineiramente (sem números mágicos, sem imports dinâmicos, exigência de docs/testes).

Papéis de humanos vs. IA

  • Vários desenvolvedores agora usam LLMs principalmente para exploração, refatoração e revisão, mas ainda escrevem o código central manualmente.
  • Outros adotam fluxos de trabalho intensivos em IA, aceitando que os humanos talvez não mantenham mais um modelo mental completo do sistema e passem a depender de harnesses e ferramentas robustas.
  • No fundo, muitos enfatizam: estrutura manutenível, DRY e abstrações claras ainda importam — tanto para humanos quanto para agentes que consumirem o código depois.