> The foundational knowledge that used to come from struggling through problems is just… missing.<p>This is the key. Some people assume that the goal of programming is to produce code. Productive programmers understand that the goal is to produce a theory, a shared understanding with a common domain language, that is incidentally encapsulated in working software systems. Code is such a small part of programming.<p>But if you're a lazy newb who thinks code == programming, LLMs might look like magic pixie dust. But that dust turns out to be a harmful pollutant which accumulates quickly. There is absolutely no honor in layering shit on top of systems you don't understand.<p>What I see more and more is a completely defeatist attitude - "we can never understand these systems. It's too complex and it will always be broken". That's just empirically false and quite frankly a bit sad that these people have never seen or experienced a working software system. There do exist systems that were engineered to fit a purpose, and just work for that purpose indefinitely. It is possible. We can have nice things, but not if we take the defeatist attitude and outsource our thinking.