I believe the intent of college is simply to help you figure out 'how you learn' and expose you to more options and more of the world than your "high school life" did.
No college is going to give you a magic bullet of knowledge that ensures happiness or success...but every one will give you an opportunity at unique experiences and resources (and if you go the school route - take as much advantage of those as you can).
It shouldn't be about earning a grade or messing up and losing a grade...it should be about your dreams, hopes, and ambition...about what you want to get out of life and how you develop those tools, qualities, and skills to get it.
If you've figured out code and tech is your passion and you've figure out how you personally best grok it...then you're already years ahead of most university students ;-)
I'll be going to college for engineering or comp sci, so for me it will be more about learning in a more formal setting and filling in the (presumably large) gaps in my knowledge. In theory I could go out and start working in the industry after HS, but it will be much easier to do so with the credibility (and connections) that comes with a college degree.
I agree that for many college is "simply to help you figure out 'how you learn'", but for others it is about the knowledge gained.
I would at least consider joining the workforce out of HS, your reasoning for not doing so is a bit shakey, especially if you're taking out loans to pay for college.
Most 18 y/o kids can't really function in the real world and a lot of the service college provides is a glorified summer camp. Carefully consider if this is worth hundreds of thousands if dollars and 4 years of opportunity cost, to be taken "more seriously" and acquire "connections."
You can learn a lot for sure, but its a steep price to pay.
Source: I dropped out after a year and started working and Im equally successful as compared to my college graduated peers
It depends heavily what sort of things you're aiming to do.
Personally, my advice is: university-level science/engineering/math classes are going to be, on the one hand, a damned hard weed-out filter the first couple years, but once you get to the advanced stuff, it's going to be one of the only opportunities you ever get to learn truly high-level, difficult, interesting material with actual human guidance, rather than having to just pick up a stack of books and work through them on sheer hope and grit.
...and confidence gained...confidence that you have what it takes to track down and acquire the knowledge you seek. Confidence, cultural exposure, and life experience are probably the most important 'soft skills' hopefully everyone pulls out of their 20s (higher ed or not) :-)
I disagree that the "practice" taught in CS classes gets out of date with industry. Consider that modern websites use a communication protocol first developed in the 1990s and run on operating systems largely inspired by one developed in the 1970s. Of course, some things do change quickly, like what database/programming language/web framework is "in" at this particular time. The underlying concepts, however, do not change as quickly, and those are the things that engineering schools tend to teach. I just graduated from engineering school and started working. The things I learned in engineering school come up all the time. I'm especially glad I took Operating Systems. Sure, you could get through college and get a CS degree without learning anything practical, but if you pick challenging and practical classes, you'll come out a much better engineer.
Also, about the "4 years is a high opportunity cost" thing. Given how it's much easier to find a high-paying software engineering job with a bachelor's degree than without, it's probably worth it. Besides, just because someone is in school doesn't mean they can't follow along with the latest industry trends, especially in CS where much of it is open source. It's not like the only learning you do in college is in your classes.
So my advice to matteotom is ... go to college. Take challenging classes that interest you (I highly recommend studying operating systems, compilers, and computer architecture). But also, don't neglect the opportunity to learn things outside of class (sounds like you won't really have much of a problem here). Do internships in the summers to get some industry experience (and a nice paycheck). And yes, of course, don't forget to make friends and have fun (I certainly wish I did more of that in college).
> the value of a CS degree at the moment is dubious
Completely wrong.
How do you expect to re-invent the stack if you don't understand the fundamentals, and where we've been before?
The practice of CS is something that anyone can pick up. The theory is what makes you more potent. To the OP: don't be yet another Rails programmer. Help us build a better stack than the web so we can move forward.
In my opinion, the theory is just as accessible as the practical side.
If you need the structure of a degree program, that's great. However, the typical programmer, who by the nature of the job needs to be a life-long learner, will tend to have what it takes to learn it on their own already. You are going to struggle professionally otherwise. And so that structure is not necessarily an asset.
But I do agree that learning the theory is valuable.
Pay close attention to what HN discusses on a regular basis. What proportion of it is software engineering? CS theory? Or any sort of deep technical topic, for that matter? Contrast that with the proportion of marketing/blog-spam about "ToDo in Ruby on Angular.js."
The problem with aggregators is the latter category always tends towards the top because it's easy and more people can relate to it. But it's not the sort of learning that makes you think, nor is it particularly insightful. It's just telling people what they want to hear: that this Ruby on Angular.js thing is what we all gotta jump on...because everyone else thinks so!
No college is going to give you a magic bullet of knowledge that ensures happiness or success...but every one will give you an opportunity at unique experiences and resources (and if you go the school route - take as much advantage of those as you can).
It shouldn't be about earning a grade or messing up and losing a grade...it should be about your dreams, hopes, and ambition...about what you want to get out of life and how you develop those tools, qualities, and skills to get it.
If you've figured out code and tech is your passion and you've figure out how you personally best grok it...then you're already years ahead of most university students ;-)