Evitando overengineering¶
Definição¶
Overengineering acontece quando o projeto fica mais complexo do que o problema atual exige. No SotuHire, isso seria adicionar tecnologias, padrões e camadas antes de validar a análise básica.
Não começar com¶
- microserviços;
- Kubernetes;
- fila distribuída;
- autenticação completa;
- React + FastAPI no primeiro dia;
- PostgreSQL antes de precisar;
- crawler complexo;
- extensão Chrome antes do MVP;
- múltiplos provedores de IA antes de funcionar com um;
- sistema de usuários;
- pagamentos;
- deploy complexo.
Começar com¶
- Streamlit;
- Python;
- módulos simples;
.env;- PDF parser;
- uma API de IA;
- JSON estruturado;
- testes de regra de negócio;
- documentação clara.
Sinais de que está virando overengineering¶
- você passa mais tempo configurando infra do que melhorando o match;
- uma mudança simples exige mexer em muitos arquivos;
- existem classes que só têm um método e não resolvem problema real;
- o README promete mais do que o código faz;
- não há testes, mas há arquitetura complexa;
- o projeto depende de cinco serviços para rodar localmente.
Quando evoluir a arquitetura¶
Evolua quando houver dor real:
- Streamlit ficou limitado;
- histórico local precisa virar multiusuário;
- buscas precisam rodar em background;
- fontes de vagas ficaram numerosas;
- há necessidade de API pública;
- deploy precisa separar frontend/backend.
Regra prática¶
Simples não é mal feito. Simples é o mínimo necessário bem organizado.