While I also find it questional, perhaps it will lessen the effect of a degree. In the end, you shouldn't need a degree if you have the skills. Nowadays, it can be hard for self-taught developers to get in the industry, just because they don't have a paper from a famous university.
> In the end, you shouldn't need a degree if you have the skills.
A university degree has multiple purposes.
As a student, you want to learn stuff and network with fellow students and get a paper.
As an employer, you see that the applicant has work ethic, knows the cultural norms, can obey orders, can interact with people in the field etc. And also that they have a fundamental knowledge of the field.
However, a university degree in computer science is not and should not be expected to be a developer training course.
It's very feasible to become a developer in a self-taught way and work productively in industry, building websites, CRUD apps, mobile apps etc. No need for a degree here.
It's much less feasible to self-teach computer science and math and so on. A university program will force you to do it even when it's not pleasurable. But it won't teach you practical web design skills etc. because that isn't its purpose.
What we have today is definitely a bad arrangement. Many students study a field they are ultimately aren't interested in and won't use, just to fulfill employers' requirements.
> It's much less feasible to self-teach computer science and math and so on. A university program will force you to do it even when it's not pleasurable.
I'd wager that computing science autodidacts find study pleasurable for it's own sake. Advanced graduate and post-graduate work notwithstanding, the most advanced math you need to master CS fundamentals (and then some) is the predicate calculus and some analysis. These are nontrivial, but certainly much easier than what one would deal with in a typical pure math undergrad program. They are well within the abilities of an enthusiastic hacker with a solid high school education (up to calc 1) to master from textbooks without coercion.
> As an employer, you see that the applicant has work ethic, knows the cultural norms, can obey orders, can interact with people in the field etc. And also that they have a fundamental knowledge of the field.
As an employer, an autodidact who has mastered the subject has demonstrated to me the ability to be passionate and act on his own initiative. I personally value that higher than a proven track record of conformity and trained obedience. That said, organizations differ, and for many large companies where 90% of the work is busywork, the autodidacts will get bored and leave in short order. So don't hire them if the work is fundamentally pointless salary justification.
Out of 100 people who call themselves autodidact CS people, how many are like the ones you describe, who spend years to work their way through CS theory books to the extent that would be required by passing exams with good grades?
Let's ignore for the moment whether it's even needed, whether devs will just code stuff that doesn't need much math anyway etc. as that's a different topic. I want to focus on whether autodidacts get the same level of CS knowledge as university graduates (with good grades).
My CS education did have a lot of difficult math that I enjoyed but in a running-a-marathon way, not in an eat-a-piece-of-cake way.
Having regular lectures, homework and topics given to you by experts in a logical order is very important for many people like myself, so they have no gaps and get a well-rounded overview of CS fundamentals. Designing your own curriculum is often how you end up being a crank as well (e.g. see "autodidact physicists").
And it's not just calculus and analysis, but also graph theory, complexity theory, abstract algebra, linear algebra, complex numbers, formal languages and automata, information theory, theory of compression and encryption algorithms, signal processing like Fourier theory, control theory, optimization and machine learning, and various other things you learn here and there, such as Petri nets, quaternions etc.
And also, outside of extraordinary life circumstances, why not get admitted to a university anyway, if you're so enthusiastic about all this theory stuff that you'd learn it to good-grade level just by your own motivation anyway? For example in Germany, university is free and if you prefer you can even skip all the lectures if you don't think they give you value and just take the exams, while studying in your preferred autodidactic fashion.
My default assumption, unless convinced otherwise by evidence, is that self-taught devs can put together functioning code and have familiarity with CS terminology but only a vague folk understanding of the details.
Most people who argue that university is superfluous are usually those who could not pass the exams due to a lack of interest and/or talent (or live in a country with tuition fees they cannot afford, such as the US).
> Out of 100 people who call themselves autodidact CS people, how many are like the ones you describe, who spend years to work their way through CS theory books to the extent that would be required by passing exams with good grades?
Admittedly I've only personally met order dozens of them or so in the course of a decades long career, which is why I try to snap them up when I find them. I said it's a powerful signal, not that it's common or even an advisable path for those with alternatives.
> My CS education did have a lot of difficult math that I enjoyed but in a running-a-marathon way, not in an eat-a-piece-of-cake way.
Makes sense to me, I enjoy it in a hitting-a-new-max-lift kind of way, which I imagine is pretty similar. I prefer to associate with people who, degree or otherwise, derive joy from improving themselves both mentally and physically.
> And it's not just calculus and analysis, but also graph theory, complexity theory, abstract algebra, linear algebra, complex numbers, formal languages and automata, information theory, theory of compression and encryption algorithms, signal processing like Fourier theory, control theory, optimization and machine learning, and various other things you learn here and there, such as Petri nets, quaternions etc.
The predicate calculus[1] plus analysis is sufficient for effective study of every sub-discipline you list. Obviously I assume proficiency in algebra as a prerequisite of analysis. Complex numbers and quaternions become far less intimidating when you realize they're just 2 or 4 dimensional state spaces, which are trivial in scale and potential complexity compared to what any computing scientist deals with.
> And also, outside of extraordinary life circumstances, why not get admitted to a university anyway, if you're so enthusiastic about all this theory stuff that you'd learn it to good-grade level just by your own motivation anyway? For example in Germany, university is free and if you prefer you can even skip all the lectures if you don't think they give you value and just take the exams, while studying in your preferred autodidactic fashion.
Deutschland ist doch voll geil, aber die meisten von uns wohnen nicht da.
> My default assumption, unless convinced otherwise by evidence, is that self-taught devs can put together functioning code and have familiarity with CS terminology but only a vague folk understanding of the details.
Funny, that's my default assumption for all CS grads who have a degree from anywhere other than continental Europe (including Russia) or one of the most elite US or UK programs. I had to stop asking "write a binary search on the whiteboard" as an interview question because after five tries nobody managed it correctly and they all had degrees from good CS programs.
[1] I assume you are German and CS programs in Western Europe are generally, especially with respect to theoretical rigor, superior to most in the USA, so perhaps you'll understand that I mean "predicate calculus" in the sense that Dijkstra and Scholten used in the tradition of Leibniz.
It's possible to complete the equivalent of a decent CS degree on your own, but I've very rarely seen it in practice. For the vast majority of people the fastest and easiest way to acquire the equivalent knowledge and skills is to complete a 4 year CS degree.