works on my machine

expressão

programaçãocultura de operações

A defesa clássica do desenvolvedor quando o código falha em todo lugar, menos no próprio notebook.

A frase que lançou mil contêineres. A distância entre 'a minha máquina' e a produção - versões, caminhos, variáveis de ambiente, dados - é exatamente o que builds reproduzíveis, CI e Docker existem para fechar.

Funciona na minha máquina é a defesa que encerra a conversa e a frase que batizou uma categoria inteira de problema: software se comporta de forma diferente em ambientes diferentes, e o ambiente de quem desenvolve é o menos representativo disponível.

As causas são banais e numerosas. Versões diferentes de biblioteca, uma dependência instalada globalmente anos atrás e esquecida, variáveis de ambiente definidas num perfil de shell, caminhos de arquivo que só existem localmente, um banco com dados de teste de formato diferente da produção, um fuso horário, um idioma, mais memória, nenhuma latência. Nada disso está no repositório, que é exatamente por que o código parece correto e se comporta de outro jeito.

A resposta da indústria foi tornar o ambiente parte do artefato. Contêineres, manifestos declarativos de dependência, arquivos de trava e infraestrutura como código existem todos para fechar a distância entre o que é versionado e o que de fato roda, e a piada de enviar sua máquina ao cliente é a descrição honesta do que é uma imagem de contêiner. A frase sobrevive como taquigrafia para uma falha de reprodutibilidade, e a resposta útil ao ouvi-la é curiosidade sobre o que difere, e não discussão sobre de quem é a máquina correta.

Todos os verbetes do glossário