News for hackers. Stuff that matters.
Re:A CS degree is better than teaching yourself how to code? by jandrewrogers on Sunday November 03, 2019 @11:09AM (#21434669)
I would make the observation that mere "dozens-to-hundreds of hours agonizing" over theoretical topics leaves one very far from qualified to design critical complex systems. At best, it gives one a shallow understanding of the domain but no expertise in the theoretical design of operational systems. Every CS grad knows how to design a database engine -- a very poor and naive database engine that has little resemblance to what an expert in the theory of databases would design. Same story with parallel systems, networking protocols, etc.

For as much time as is spent in school on theory, one still needs to spend (at least) an order of magnitude more time going deep in a theoretical domain to understand it well enough to apply it competently. The difference in the amount of self-study required to grok many classes of complex systems design between someone with a CS degree and someone without falls below the noise floor. No matter what, you will need to do inordinate amounts of self-study to acquire theoretical competency.

A CS degree is essentially a theoretical survey course. It tells you these domains exist and gives a little bit of high level context, but if you want to become an expert in those theory areas then you are still learning almost entirely on your own and/or from other experts on the job.

Re:A CS degree is better than teaching yourself how to code? by vbtemp on Sunday November 03, 2019 @12:49PM (#21435363)
I positively agree with you. You are not going to walk out of a course or two in automata theory and group theory building critical complex systems. But that coursework does provide a lot of exposure toward the "primitives" in which these complex formal systems are defined. They are the first step of many steps.

I am reminded of PGs famous example of the "Blub"[0] programming language .Here's the relevant quote:

> As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

In the above, the "Weird Language" can also be a formal modeling of the problem domain and solution.

(Note: He should not be presuming the developer is "he")

[0] http://www.paulgraham.com/avg.html