sagan até que sabia de algo
"Se você deseja fazer uma torta de maçã do zero, deve primeiro criar o universo."
essa citação é tão atual para programação.
afinal, tudo o que construímos é com base em conhecimentos/códigos já existentes. git rastreia isso pra gente. mas o ponto que Sagan levanta é mais profundo.
conhecimento é herdado
quando tu escreve código, tu não tá criando do zero. tá usando uma linguagem que alguém inventou. tá usando padrões que foram testados milhares de vezes. tá usando frameworks que abstraem problemas que pessoas resolveram antes de você nascer.
tu não reinventa a roda. tu pega a roda que existe, entende o suficiente pra usá-la, e constrói algo em cima. isso é eficiência.
mas também significa que herdará as decisões de quem veio antes.
abstração em camadas
aqui tá o incômodo: escrever um componente React. parece simples. mas embaixo dele tem JavaScript. embaixo de JavaScript tem um navegador. embaixo do navegador tem um SO. embaixo do SO tem hardware que tu nunca vai tocar.
cada camada abstrai a complexidade da camada anterior. tu não precisa saber como um processador funciona pra fazer um site. mas o site só existe porque alguém criou o processador.
quando tu "cria" um aplicativo, tu tá criando dentro de um universo que já existe. tu não criou esse universo. ele foi herdado.
dependências reais
em desenvolvimento de software é invisível, mas é real. em mineração fica mais óbvio.
um projeto de mineração não começa do zero. conhecimento geológico é herdado e acumulado. técnicas testadas. economias de escala de operações anteriores. tu aplica o que funciona.
mas também herda as limitações, os riscos, as suposições que vieram antes. tu não escolhe a geologia. a gente trabalha com o que tá ali.
em software é a mesma coisa. tu herda decisões de linguagem, de arquitetura, de padrões. não escolhemos reconstruir tudo. seria impossível.
então, o que tu tá realmente criando?
Sagan te força a pensar nisso. quando tu "faz" alguma coisa — um feature, um projeto, uma operação — não tá criando do zero. tá escolhendo quais dependências usar, quais universos já criados vai herdar.
a diferença entre um bom engenheiro e um ruim não é quem consegue criar sozinho. é quem entende melhor a pilha que herdou e sabe trabalhar dentro dela.