It is also true that a CS bachelor's is not and never will be equivalent to actual experience working as a software engineer.
For example, in school nobody ever taught you what it's like working on a team of 30 on a two-decade old code base with a million lines. You have different kinds of problems due to the scale - problems that school never taught you how to handle.
In my entire career (35 years), "foundational knowledge" has been important... maybe twice? Maybe once? Guessing, because I don't actually remember any instances.
(I need to back away from that a bit, because you mentioned SOLID. That's important. The rule of 3 (now 5) is important. I didn't regard them as foundational, though, because I started in 1985, and SOLID wasn't really a thing then, and the rule of 3 wasn't part of the foundations then. Back then, it was big O and structured design. I would agree that now, SOLID is part of the foundations. I didn't learn it that way, though. I learned it 10 or 15 years into my career. And no, that didn't lead me to making messes earlier, because we weren't in an environment where it mattered.)
But even not knowing SOLID won't lead you to making big messes in the kind of environment I was talking about. (It may lead you into little messes.) The big messes come from designing an API badly, naming it badly, creating something that fits badly with the rest of the code base, changing things that you think need changed without understanding what impact that has on all the code that uses it, and so on. Mistakes from SOLID, in contrast, tend to be fairly localized to one module.
Disclaimer: I don't actually have a CS degree. You may regard that as justification for ignoring my opinion on this topic. But I've seen some fresh CS degrees over the years, and I stand by my statement that they aren't very prepared for being software engineers.
Proper API design is software engineering, not computer science. And it does come with experience, but it's not necessary to start from zero.
Schools are coming around to the necessity of software engineering principles, and they're including an awful lot of solid software engineering content in their CS programs even at the undergraduate level nowadays.
If we did a little more gatekeeping and a little less bootcamping, we might have the respect and autonomy afforded to doctors, lawyers, and actual, P.E. engineers. Instead, we're just an annoyingly expensive cost center.
What we do isn't easy. We can't pretend that it's easy, that it can be learned in six weeks, or that it's possible to be truly great without earning the foundational knowledge. That pretending hurts all of us.
There are plenty of crap doctors, they just pay more to find out.
And doctors layers and engineers all got titles and accreditation after the fields really pulled their shit together 200 years ago after having buildings fall down, cases fail and people die in surgery for hundreds of years previously.
software is a very new field. it'll be fine. Also no engineer I've met wants to really do front end development for a shopping site. There's a market for people who start out with enthusiasm and a handful of knowledge.
This is a silly, silly attempt to knock down a point that should be self-evident. Success in life isn't a formal proof.
Exercising every day, keeping your weight down, eating a Mediterranean diet, not smoking, having healthy relationships, and sleeping eight hours a night do not guarantee that you'll live to reach retirement age.
It's not that silly. Just making the point that I've met plenty of people without degrees who are absolutely great engineers. And my company somehow comes up with plenty of badly engineered systems, despite being full of people with CS degrees.
Is it possible that there's some sort of cognitive bias going on with your and mine strong, opposing feelings on this subject?
Since we're being pedantic: analogies aren't reality. Saying that a healthy lifestyle could improve your longevity doesn't in any way support the argument that a CS degree makes one more likely to understand big O.
I'm done explaining why an undocumented O(n^2) solution that violates most of the SOLID principles is a Bad Thing.