O que diferencia código simples de código de produção?
Analogia da cozinha: todo mundo consegue fritar um ovo em casa. Frigideira velha, fogo no chute, sal na hora. Funciona. Agora pega esse mesmo ovo e tenta servir 800 ovos por minuto num restaurante, em 4 turnos diferentes, com fiscalização sanitária, cliente reclamando do ponto, garçom sumindo, e o gás acabando no meio do almoço de domingo.
É o mesmo ovo. Mas é uma operação completamente diferente.
Código de produção é a cozinha do restaurante. Algumas diferenças centrais:
| Código simples | Código de produção |
|---|---|
| Roda na sua máquina | Roda em servidores que você nunca viu |
| Você é o único usuário | Milhares de usuários simultâneos |
| Quando dá erro, você olha o terminal | Quando dá erro, alguém te liga às 3h da manhã |
| Você lembra como funciona | Outras 5 pessoas precisam entender em 6 meses |
| Erro = irritação | Erro = dinheiro perdido / cliente bravo |
| Mudar é fácil | Mudar pode quebrar 17 coisas que você não imaginava |
O que código de produção tem que código de brincadeira não tem:
- Tratamento de erros real — não basta
panic, tem que se recuperar com elegância. - Logs e métricas — você precisa enxergar o que aconteceu sem reproduzir o bug.
- Testes — porque você não vai testar 200 endpoints na mão toda vez que mexer.
- Configuração externa — senha de banco não fica no código.
- Estrutura clara — outra pessoa precisa abrir o projeto e entender em 10 minutos.
- Resiliência — banco caiu, Redis caiu, rede oscilou: o sistema não pode virar pó.
Go é uma linguagem maravilhosa para backend justamente porque foi desenhada com isso em mente: compilação rápida, concorrência fácil, binário único, biblioteca padrão forte. Mas Go não te entrega arquitetura de graça — isso é com você.