A Navalha de Ockham para Desenvolvedores: Menos é Mais (Mesmo)

Por William Pereira ·

O que é a Navalha de Ockham?

A Navalha de Ockham é um princípio filosófico atribuído ao frade franciscano William de Ockham (séc. XIV), que, em essência, diz:

“A explicação mais simples tende a ser a correta.”

Traduzido para o universo do desenvolvimento de software:

“Não adicione complexidade sem necessidade.”

Por que isso importa para desenvolvedores?

Porque tempo, clareza e manutenção são recursos preciosos. Quando você complica desnecessariamente, o custo aparece em forma de bugs, retrabalho, onboarding lento, perda de performance e código que ninguém quer tocar.

Exemplos práticos da Navalha de Ockham no dia a dia do dev

✅ 1. Evite abstrações prematuras

Cenário: Você criou dois repositórios para acessar o banco: UserRepository e ProductRepository. Percebeu que ambos usam o mesmo padrão e já pensa em criar uma BaseRepository, GenericRepository, RepositoryInterface, e um RepositoryFactory.

Aplicando a Navalha de Ockham: Espere. Você realmente precisa disso agora? Há apenas dois repositórios. Abstrair agora é complexidade sem necessidade.

Benefício: Você mantém o código simples até que a complexidade real justifique a abstração.

✅ 2. Evite frameworks ou libs pesadas só para tarefas simples

Cenário: Você precisa fazer uma chamada HTTP simples no backend. Decide instalar o Axios, configurar interceptors, criar uma service layer e mapear os resultados em DTOs.

Aplicando a Navalha de Ockham: Se o fetch() já resolve, use o fetch().

Benefício: Menos dependências, menos peso, menos bugs.

✅ 3. Não crie microserviços antes da hora

Cenário: Seu sistema é pequeno, mas você leu que microserviços escalam melhor. Então cria 5 APIs separadas, com autenticação própria, filas, eventos e monitoramento individual.

Aplicando a Navalha de Ockham: Monolito simples e bem organizado resolve melhor nesse estágio. Microserviços são úteis, mas só quando a complexidade real aparece (times diferentes, escalabilidade independente, etc).

Benefício: Você entrega mais rápido, com menos custo operacional.

✅ 4. Evite configurações super genéricas

Cenário: Você está criando um formulário de login. Em vez de simplesmente criar os campos email e senha, você cria um gerador de formulários dinâmicos com JSON Schema e validação personalizada para futuros usos "que talvez venham".

Aplicando a Navalha de Ockham: Implemente só o que precisa agora. Quando (e se) os requisitos mudarem, você refatora com base em necessidades reais.

Benefício: Você entrega valor mais rápido e evita o famoso “overengineering”.

Onde a Navalha de Ockham não se aplica cegamente

  • Segurança: Aqui, a simplicidade nem sempre é o melhor. Uma solução “simples” pode deixar brechas.
  • Performance crítica: Às vezes, soluções mais complexas são justificadas para ganhar milissegundos em sistemas de alto desempenho.
  • Legibilidade: Nem sempre a menor quantidade de código é mais clara. Código simples de entender é melhor que código simplesmente curto.

Como aplicar na prática

  • Antes de escrever código, pergunte: isso é realmente necessário?
  • Evite pensar em “e se um dia…” e foque no “o que é necessário agora”.
  • Use a regra dos 3: só comece a generalizar uma solução se já teve que resolvê-la pelo menos três vezes.
  • Prefira soluções conhecidas e bem testadas antes de inventar uma nova.

Conclusão

A Navalha de Ockham é um lembrete poderoso para desenvolvedores: não complique o que pode ser simples.

Quando usada com bom senso, ela:

  • Reduz bugs,
  • Aumenta a produtividade,
  • Facilita a manutenção,
  • E deixa seu time mais ágil.
“Simplicidade é a sofisticação máxima.” — Leonardo da Vinci

Voltar ao blog