I disagree strongly with your point #1. "This knowledge" specifically is deep full-system understanding, as quoted in the article:
> "They use languages, editors, compilers, and operating systems; but they don't have the first clue about how to create any of these things or even how they really work."
And yes, he is asserting that people should get this from a degree:
> If you want to build doghouses, just pick up some skills with hammer and nails, and then go for it. If you want to be an architect who designs and builds skyscrapers, then go get a degree in architecture first.
The full depth of applied understanding comes from personal interest & experience. Whether or not a person with such interest pursues a CS degree is completely orthogonal.
Plus, these applied low- & mid-level computational practicals have nothing to do with Computer Science; they are programming, architecture, and engineering. People generally do not complete CS degrees with any specific imparting of these 3 facets, unless they use their university time to pursue their own interests & ambitions in the field. And again, such people can and do pursue those outside of university, especially in their pre-university age exploratory years, and on-the-job experience with real systems.
> The full depth of applied understanding comes from personal interest & experience. Whether or not a person with such interest pursues a CS degree is completely orthogonal.
It's not orthogonal, but rather highly correlated. Combinatorics, graph theory, computer architecture, etc., will all be part of a university CS curriculum. Someone who has a CS degree will probably know those things (or at least recall them after a brief refresher).
Combinatorics and graph theory have zero to do with this practical knowledge. I'll grant that computer architecture classes introduce some relevant concepts, but this foundation can be had from anywhere as its matters, history, and details are widely discussed in the open online as a persistently current practical concern.
People like the author, with a degree and lots of experience under their belt, really overestimate what the degree specifically gave them, vs what they learned through decades of experience as they developed their craft. When it comes to practical, applied programming and skills of abstraction, informed by deep knowledge of what goes on under the hood, vanishingly small amounts of that come from university education.
Again, I will be careful to separate out those who do actual Computer Science on the job from this practical craft of quality programming. The former is much more rare, but is a separate field.
> "They use languages, editors, compilers, and operating systems; but they don't have the first clue about how to create any of these things or even how they really work."
And yes, he is asserting that people should get this from a degree:
> If you want to build doghouses, just pick up some skills with hammer and nails, and then go for it. If you want to be an architect who designs and builds skyscrapers, then go get a degree in architecture first.
The full depth of applied understanding comes from personal interest & experience. Whether or not a person with such interest pursues a CS degree is completely orthogonal.
Plus, these applied low- & mid-level computational practicals have nothing to do with Computer Science; they are programming, architecture, and engineering. People generally do not complete CS degrees with any specific imparting of these 3 facets, unless they use their university time to pursue their own interests & ambitions in the field. And again, such people can and do pursue those outside of university, especially in their pre-university age exploratory years, and on-the-job experience with real systems.