Rule of thumb: if it has hard Math in it (engineering, physics...) or labs/facilities you cannot afford (chemistry...) or it requires a degree to work (medicine...) or you want to be a professor go to college, otherwise (literature, languages, philosophy, history...) you can do it on your own, it will be mostly on books.
Computer science is an edge case since it has some math/logic in it, that's why every two months there's a heated thread in HN/reddit/etc that started by someone asking or answering "do I need to go to college to be a software developer?" or similar.
> otherwise (literature, languages, philosophy, history...)
> you can do it on your own, it will be mostly on books.
Not really. Even in those cases (or possibly more so), you need the perspective of someone experienced and well-read to show you how to look at the literature. Such people are usually professors at universities.
Actually that holds true for most subjects at good universities.
Practicing computer science, which I'd rather call software engineering, is not a case. It's many. So I don't think you can generalize what one needs to proper practice it.
In college you are forced to learn all the boring stuff about code readability, data structures and algorithms, code life cycles,etc...
Most of those I know who have taught themselves code (engineers, physicists, statisticians and mathematicians) in a non-academic environment spurge spaghetti, and I hate them to death.
Are the minuses because you disagree? Please discuss.
For me, dealing with codebases generated by the untrained is a daily problem. I do what I can to try and help - I sound like a broken record rattling on about naming variables what they are and whatnot.
I actually agree in part with what you say regarding having the discipline of going to class and a teacher versus self-learning.
You are probably being downvoted because of the second sentence talking bad about self-learned programmers when it's a popular opinion that there are many self-learned programmers.
I personally only downvote when someone is being rude/out of line or says something that is flat-out false, never for opinions. I find HN to be harsh frequently (no specially more so than other inet places but still) and I'm actually a bad day away of taking the route others have taken and just leave.
I may have been too harsh. The problems i see are actually from experts in non computer science fields. They don't even know that software engineering exists, and are used to being right.
At least non statisticians are respectful of stats. Doesn't apply to programming.
Computer science is an edge case since it has some math/logic in it, that's why every two months there's a heated thread in HN/reddit/etc that started by someone asking or answering "do I need to go to college to be a software developer?" or similar.