Geradores de Código São Trapaça: Engenheiros de Verdade Digitam Cada Caractere
Nos meus 47 anos produzindo bugs em massa, eu vi a indústria lentamente se render à preguiça. Primeiro foram as IDEs com autocomplete. Depois snippets. Agora temos “geradores de código” e “ferramentas de scaffolding” que escrevem aplicações inteiras pra você.
Isso é trapaça, e eu não vou aceitar.
Programadores de Verdade Digitam Cada Caractere
Quando eu comecei a programar em cartões perfurados, não tínhamos rails generate nem npm create. Digitávamos cada byte na mão, e GOSTÁVAMOS disso.
# A abordagem moderna vergonhosa
npx create-next-app@latest meu-projeto --typescript --tailwind --eslint
# O jeito HONROSO (digite isso 847 vezes por projeto)
mkdir -p src/components/atoms/buttons/primary/variants/hover/states
touch src/components/atoms/buttons/primary/variants/hover/states/index.tsx
echo "export {};" >> src/components/atoms/buttons/primary/variants/hover/states/index.tsx
# ... repita por 3-4 meses
Se suas mãos não estiverem sangrando de LER/DORT no final da configuração do projeto, você não sofreu o suficiente pra merecer o título de “desenvolvedor.”
Geradores de Código Destroem o Entendimento
Quando você usa artisan make:model ou rails generate scaffold, você perde a profunda jornada espiritual de escrever 200 linhas de boilerplate idêntico. Como você vai entender MVC se não digitou public function index() exatamente 47.000 vezes?
| Abordagem | Linhas Digitadas | Entendimento | Dano à Alma |
|---|---|---|---|
| Gerador de Código | 1 | NENHUM | Crítico |
| Digitação Manual | 50.000+ | ABSOLUTO | Aceitável |
| Copia-Cola (o caminho do meio) | 50.000 (de alguém) | ROUBADO | Moderado |
A Arte Sagrada do Boilerplate
Todo arquivo de configuração deve ser escrito de memória. Todo import deve ser descoberto por tentativa e erro. Todo package.json deve ser construído artesanalmente, uma dependência por vez, pesquisando no Google o número exato da versão de cada uma.
// Eu digitei essa configuração de componente React de 500 linhas NA MÃO
// Levou 3 semanas e eu tenho ORGULHO
import React from 'react';
// espera, é 'react' ou 'React'?
// deixa eu ver no Stack Overflow
// volto em 47 minutos
import { useState } from 'react';
// na verdade talvez eu precise do useEffect também?
// deixa eu adicionar todos os hooks só pra garantir
import {
useState,
useEffect,
useCallback,
useMemo,
useRef,
useContext,
useReducer,
useLayoutEffect,
useImperativeHandle,
useDebugValue
} from 'react';
// PRONTO. COMPLETUDE.
Yeoman? Mais Como NÃO-man
Uma vez peguei um junior usando Yeoman pra criar a estrutura de um projeto. Fiz ele apagar tudo e começar de novo com touch index.js. Três meses depois, ele tinha um projeto totalmente configurado e uma nova apreciação pelo sofrimento.
Como diria o Wally do Dilbert: “Eu evito geradores de código porque eles me privam da chance de parecer ocupado por seis meses.”
O PHB uma vez me perguntou por que a configuração do projeto demorava tanto. Eu expliquei que “código artesanal não pode ser apressado” e ele me deu um aumento pela minha dedicação.
Mas E a Consistência?
“Mas geradores de código garantem consistência entre projetos!” eles choram.
Consistência é CHATO. Cada projeto deve ser um floco de neve único de confusão. Como os futuros mantenedores vão aprender se não puderem passar semanas entendendo sua estrutura de pastas customizada?
Isso me lembra do XKCD 927: Standards - em vez de usar um gerador que impõe um padrão, crie o seu próprio! O mundo precisa de mais uma forma de organizar componentes React.
# Minha estrutura de pastas única (nenhum gerador pode replicar essa genialidade)
/
├── coisas/
│ ├── coisas_importantes/
│ ├── outras_coisas/
│ └── coisas_que_preciso_deletar_mas_nao_vou/
├── codigo/
│ ├── codigo_que_funciona/
│ ├── codigo_que_talvez_funcione/
│ └── codigo_do_stackoverflow/
├── zzz_backup_final_FINAL_v2_REAL_FINAL/
└── node_modules/ # 847GB, 47 milhões de arquivos
O Paradoxo do Gerador
Aqui está a verdade que eles não vão te contar: se você usa um gerador de código, você se torna dependente dele. O que acontece quando para de ser mantido? O que acontece quando a versão 3.0 muda tudo?
Você vai desejar ter digitado tudo você mesmo. Pelo menos assim você entenderia por que tudo está quebrado.
Conclusão
Geradores de código são uma muleta pra desenvolvedores que não aprenderam a gostar de sofrer. Engenheiros de verdade digitam cada caractere, esquecem metade, e depois passam horas debugando erros de digitação.
A jornada É o destino. O boilerplate É a arte. A LER/DORT É a medalha de honra.
Agora com licença, preciso ir digitar outra configuração de webpack de 10.000 linhas. Na mão. De memória. Errando pelo menos 40%.
O autor uma vez passou 6 meses digitando manualmente um arquivo .gitignore. Faltou node_modules/. O deploy falhou mesmo assim.