This question is asked frequently and I can summarize the ensuing debate. For any benefit offered by college, or competence that it allegedly demonstrates, it can be said that:
1. college doesn't actually accomplish that in practice, and/or
2. it's not actually important in the real world, and/or
3. the same thing can be achieved faster/cheaper/more effectively through self-education/work experience, and/or
4. it is obviously not worth the staggering investment of time and money.
I rarely see tech job ads that don't qualify the education requirement with "or equivalent experience" so the people doing the hiring seem to feel the same way.
Those 3-4 aren't really going to be the best unless you're in an environment with young girls, beer, drugs, and class, where you get to meet new people.
What are you going to do, get a job instead?
Don't make me laugh.
I'd say the connections in my extended social network are 5% through high school, 1% through uni, 10% through doing random stuff and the rest through friends. That network provides me with a more or less steady supply of jobs, girlfriends, cool dudes and assorted adventures. And, it's part of the real, permanent world and not some expensive fantasy camp that you have to leave behind when the vacation's over.
Maybe things are different here, but if it works for us, it can work for anyone, and economics may soon force the matter.
If people want to hook up, get high and party, they'll make it happen wherever they are and whatever they're doing, so they might as well be doing something useful.
So imho if you're basing uni's value purely on the social aspect then it comes up way short. Instead, go travel for a year or three, figure out who you are and what you're passionate about, then get to it. You're forced to be social in both atmosphere's.
Compare a four year degree to two years of travel and two years work experience in your chosen field. Which do you think has the edge?
With the right school, you can do all 3.
Being involved in the open source community and being a wealth of knowledge surrounding your field is more than enough.
My interview went smooth as possible as I simply talked about my past and present projects, throwing in terms like "SVN," "jQuery," and "semantics." I'm not saying sprinkle your keywords around but why wait for the interviewer to ask the question - tell him right off the bat and just let him check that item off.
For me: 6 years USAF experience in System Administration, wonderful letters of recommendation from my Commander and Vice Commander (a 3-star and a 1-star), leadership positions within open source communities in my field, and an apparent knowledge of not only my specialty (PHP) but the surrounding technologies (web servers, version control, database management, Python, Ruby, etc.) landed me a Senior Developer position with the largest contractor in US Defense.
My family and I live a much happier life, I am less stressed, don't have to worry about deployments and our take-home income is three times what it was two months ago.
In case you didn't know, working for a large defense contractor is very different from most of the "real world."
Nonetheless, a lifelong commitment to the defense industry doesn't seem like a bad deal to me. Great pay, great hours, and no matter how bad the economy sinks - my job isn't going anywhere.
The best answer I've seen regards professionalism. We require degrees from doctors and CPAs and passing the bar for lawyers not because it's a guarantee of quality, but because it indicates that the person has a certain minimal level of understanding of the field's Body of Knowledge. Having that knowledge means that they are less likely to totally screw up and they have a rational basis for finding a solution to whatever ails you. Requiring a degree in CS, SE, or EE (I don't see the point of requiring a degree if it's not directly related to the field) does exactly this.
Of course, the argument then becomes should we be regarded as professionals or "just" programmers & hackers...
Disclosure: I have a BS in EE and an MS in SE and once seriously considered becoming a registered Professional Engineer (PE). I'm also a card-carrying hacker and I disagree with the article.
But it doesn't. There are plenty of people with CS or SE degrees that lack a minimal level of understanding. Even with a terribly lenient definition of minimal.
I'm talking about people who get through 4 years of a decent CS program and would vehemently insist that "array" is an exact synonym for "linked list".
I'd say that the benefit of a CS degree is weaker -- just that it brings forced exposure to important topics, so if you have two people who are smart, the one with a CS degree is going to be more well-rounded. The thing is, you usually don't get to decide between two smart people when hiring. And the CS degrees that are around don't seem to reduce the risk of bugmaking.
Contrast that with someone who has say, a History degree who happens to be a good programmer. That person's expertise tends to be in one narrowly defined area and when taken outside that range he does badly. I'd rather hire someone who had promise to be reasonably good at anything I threw at him than amazing in one aspect and weak at most everything else.
I don't know where you work, but the people who make it through both our HR screen and the technical phone screen and end up in front of me are generally pretty bright. We normally weed people out for teamwork/communication skills rather than technical ability.
With a college degree in Computer Science, I had a world of trouble finding a job that wasn't programming. I'd apply for different jobs and inevitably end up on the 'CS major' pile on some recruiter's desk. Grr.
Instead of spending 4 years on a degree, spend 1 year learning just as much or more on your own, and then spend 3 months creating a couple good demos, an interesting resume, researching some companies you want to work at, and writing some good cover letters when applying.
Not because I believe having a degree means you aren't a good programmer. Degree or not, I just don't trust it as an indicator of skill either way. 90% of the headhunter's I've run into in the past have no coding background themselves... so why would you entrust them with something so important to your business? You could be scaring off some really great candidates. To me it says your company really doesn't know how important the position is.
Granted it's often difficult for very small companies with limited technical resources to make the right hires, but if it's an attractive business and / or great environment we'll find you. Just don't turn us down because we do or don't have a degree. It doesn't mean anything.
Granted I'm not a superstar coder, but I'm very passionate about it and work very hard. I can figure out how to do most anything I'd need to for a job. A degree wouldn't change this in the slightest.
If I thought a degree would truly would benefit me as a programmer, then I'd probably go get a degree for higher learning purposes... and not because the job market supposedly requires it.
But as far as other IT companies I don't think it's necessary.
Honestly I have a degree and if I were looking for a job right now I'd use a degree requirement to determine where not to apply. Because that, to me, says that the company is run by "managers" who don't understand the first thing about programming.
John Carmack's a dropout for God's sakes. That alone disproves just about every "devil's advocate" argument given in the article
If easier (for varying values of easier) is worth your time and money is up to you.
That being said, I don't have a CS degree but have made my bones for the last 10-15 years in some sort of developer role. The thing I can justify that a bit because when I started building websites they we're usually some sort of static site, Java was in its infancy and database driven websites were a few years off. A large bulk of what modern day programming (particularly on the web) consists of was still being developed and I could learn these skills as they rose to prominence. I could pace the growth of the technology, grow with it without too much trouble. There's a whole generation of developers in their mid to late 30's who are in this boat. I'd hire a bunch of these guys in heartbeat and I'll pay them pretty well.
Now in my current role I'm hiring junior developers fairly regularly. In this role where I'm looking for guys who are younger, smart and capable but who I don't want to pay a ton of money for. If I'm looking for a guy in their early 20s for a junior role I look for 2 things, a CS (or sometimes EE or CE) degree AND experience building something on their own. I've gotten a few guys through who started coding on their own in late high school but a lot of times they don't make the cut. In this case you don't need to have a CS degree, but just to leap the recruiters hurdles you better have one.
I dropped out one year before completing my program. Which is kind of funny because it really wouldn't have taken any effort. Instead I was chomping at the bit to work on this new and exciting back-end web stuff, so I went and got a contract job with a small webshop who didn't really understand what I was doing either at first, but we did some great work and had some great success.
My profs were great because they realized I was on to something pretty nifty and tried to make it easy for me to pursue it. They also tried to learn some of the stuff I was learning (I was teaching them in a way). In the end I think both sides benefitted from it.
I think we might have crossed paths once, I was the lead ITV engineer at TechTV doing an Interactive IO Portal for CableVision that Extend designed. Worked mainly with a woman dev who's name I can't remember right now.
That's not to say Computer Science is useless, but your time in college is better spent doing more than the minimum requirements for school (doing homework and passing tests). Otherwise, you'll have a harder time trying to get "work experience" with your first job after graduation when you could have given yourself plenty of experience with your own projects.
The question will always, be, if you are really such a kick-ass coder and love programming so much, why didn't you go and study what you love at college? If the answer is that you couldn't be bothered or you already know everything there is to know so it would be a waste of time etc. then it indicates something possibly highly problematic about your personality, like an arrogant or lazy attitude.
I also learn so much faster by doing. For me personally, there's not enough doing in university. I imagine there's quite a few similarly minded coders out there. Maybe it says were arrogant? Too cool for school? Most likely. But I get along with most people socially, and also have no problem buckling down to get a job down. In fact I get very focused when I work. I just never learned very well in the typical school environment.
That said, I think programs with internships could be extremely valuable though. A mix of theory and practical has win written all over it.
A lot of places (especially smaller companies, in my experience) are more interested in seeing examples of your work, even if it's a web page you designed or an open source app you've contributed to in your spare time.
Some of the best developers I know either A) Never went to college for B) Went to college and majored in English or Classics and taught themselves to code.
but that does not exclude people without a degree, and does not include everyone that vent to college
plus, as someone who has a degree, i know comparatively little about real-world development you learn simply from your classes.
It's not all that uncommon for a company to simply look through their rosters and pick off the highest paid non-essential personnel (for certain values of "essential," which usually put middle management above R&D) to get rid of.
Of course this largely depends what kind of work you're doing, so YMMV.