I have similar situation as Steve. I was studying physics, working for a nationally recognized lab under a guy who should have gotten a nobel, when I got a job as a software developer and realized that was what I really wanted to do with my life.
I used to put down that I studied physics, but eventually, I just dropped it. My resume now is one page, with a summary at top of my skills and a list of the places I've worked taking up the rest.
I find that this is a really good filter. If someone won't hire you because you didn't go to college, you know that this is someone you don't want to work for. They are expressing a prejudice-- assuming you lack a skill based on their own assumptions, because they probably needed college to teach them. Many times people rationalize this by saying "college shows commitment". Well, keeping a job for 4 years shows commitment. Outside projects that are a lot harder than college was shows commitment.
The real reason I didn't finish college is that it didn't make mathematical sense. It costs a lot, delays your career and doesn't deliver sufficient value to cover these costs. I think that situation has gotten a lot worse.
So, the right thing to do is look at the education section skeptically. Did they work their way thru college? Why did they go? Did they think they were getting more value than the cost?
I hear companies won't hire people without degrees. I see "BS requires, Master preferred" a lot. I never let that stop me from sending my resume, and back when I was willing to work for others (rather than myself) I tended to get interviews, and 4/5 of those interviews would result in an offer or another step in interviewing (for companies that had a multi-step process.) I learned quickly to send all my resumes out on one single day, and have interviews scheduled close to each other, lest I get offers from some companies before I'd had a chance to interview at others.
None of these companies cared whether I had a degree. (And the ones who did, probably never called me in for an interview, but there's no way to tell which jobs have already been filled vs. which ones were at companies with that prejudice.)
But I consider that a blessing-- this filters out companies that confuse the symbol (eg: the diploma) for the reality (eg: having the skills.)
I've met a lot of "smart" people who think they are so smart that they don't realize how much smarter other people can be. This limits their world view. It even interferes with their ability to comprehend or think logically. They let prejudices and ideology get in the way of perceiving reality.
The last thing you want to do is work for a boss who believes his fantasy over reality.
And filtering out the ones who think you're not qualified because you don't have a diploma is a useful tool for that.
I express strong feelings here. I am unabashedly opinionated, but I think it is critical in hiring to hire people who think differently than you. I think its critical to give the benefit of the doubt, allow a wide variation and then focus on what's really important- the relevant ability, their capabilities. I think "cultural fit" is often used to exclude good candidates for unfair reasons. I think I'd hire someone I disagreed with all the time if they were qualified (but haven't put this to the test yet- only having hired someone who disagrees with me most of the time.)
 I am very willing to hire people with degrees. Even though college is often a waste of time and money, and could show bad judgement, they can also show other things-- like the need to spend a couple years finding yourself outside the overwhelming influence of your parents, or the need to figure out what it is you really want to do with your life, etc. Some do it out of a commitment to their parents because it means so much to their parents, and I respect that. I don't think that someone turning 18 magically means they've figured everything out.
 I have found, however, that hackers (eg: people who taught themselves when they were young) right out of highschool are about as equally prepared for employment life as (most) people with CS degrees right out of college. Either way its going to take a couple years before they're really productive. Hackers shouldn't go to college.
I am assuming that hackers are generally auto-didects and not the kind of people who need to be trained, while college is for people who need to be trained, the kind of people who can't just pick up a new language over the weekend, or can't just read a college textbook to get the stuff they hadn't learned otherwise.
 In fact, I think that the fact that so many of these people who focus on degrees are people who went to college because they needed to be Trained, means that they are people who generally simply don't understand that some people self train. They don't see the advantage of the auto-didact who will learn things that seem ancillary (eg: economics) or irrelevant to someone who has been trained.
I think the training in college teaches a narrow way of thinking, or maybe it just doesn't expand the mind, while the autodidacts will expand their own minds.
Companies would be much better off hiring autodidacts and making sure at least one is in the interview loop, to ensure that the trained people don't exclude someone based on their own narrow thinking.
"Oh, your company has written your product in Haskell? That's nice. No I've never written any Haskell in my life, but I learned Lisp when I was 14 and write a long of Erlang, and pick up languages easily. I'll have no problem picking up Haskell."
I think this above conversation sounds like nonsense to a trained person, because a trained person doesn't "just pick up" a language.
Now, you might very well be the exception to that rule, but the cost of a mis-hire is so astronomically high to me that you can expect that if I ever interviewed you, I would expect you to greatly outperform a top new computer science graduate -- and I would interview accordingly. This is possible, but not likely: a top computer science graduate not only has the same intelligence and aptitude that you had at 22, but also four years of formal computer science education and some top internships to really send the principles home. Of course, it would be a mistake to imply that you'd actually want to work for me: after all, I'm the kind of employer that won't hire a software engineer who doesn't have a university degree in computer science...
Being more general and less snarky - I think that, probably, you (personally, as a single hiring manager) can get away with "only hire CS grads from great universities with firsts", if you work for somewhere easy to hire into (Facebook/Google/Twitter/whatever), because they don't find it hard to find people, just to find ones who're good enough. If (as I suspect by your estimation of the costs of mid-hiring) you're working for a no-name start-up, you're not only cutting out the brilliant people without degrees (and I've worked with many over my career), but you're also cutting out the excellent graduates who won't want to work for you because you're hiring a monoculture.
That said, a Computer Science education certainly improves your chance of getting past the hiring bar. To most it means an exposure to topics they learn about had they spent the four years doing web development: what Bryan called "how computers work" (operating systems, CPU architecture, concurrency), algorithms and data structures beyond arrays and hash tables, and advanced topics (distributed systems, machine learning).
On the other hand, if you've spent those four years contributing to FreeBSD, doing game development (and here I mean doing AI and graphics yourself), or working on another technically challenging project such as a web browser or a compiler, it would be a different story.
I have an MS in CSE but from not from a nationally recognized top-tier school. I think I've done reasonably okay as far as professional success goes, but if I had to do it all over again, I'd have transfered to UC Berkeley (or another top CS school) when I had the chance, even if it meant delaying entering the work force by 1-2 years.
Personally - quite possibly. If you did the BSc I know you were at least able to hand in something that met the basic requirements, on time or close to it. If all I know is you worked at Company X and weren't fired, that could mean any number of things, and I'd have to be a pretty good interviewer to figure out which.
I don't follow this reasoning. Unless just having the BSc is actually good enough to get hired instantly, you're going to have to figure out if the candidate is good enough anyway. The additional information from the BSc is slim, at the cost of rejecting a chunk of the candidate pool. Just doesn't seem like a very worthwhile tradeoff.
There was a story posted here before about a hiring manager that flipped coins to sort the candidate pile. "We only hire lucky people here." I wish I still had the link...
This just seems like you're limiting yourself from hiring people that couldn't afford college, but that are still extraordinarily valuable to your company. Which is just wrong.
Do 1-2 years at a community college, 1-2 at a state college, and you have a 4 year degree at a reasonable price.
I got a merit scholarship, that lowered prices for me quite a bit. Others have noted that although advertised tuition has gone up, the average price paid by students hasn't changed nearly as fast. I.e. the rich people are paying sticker price and the poor are getting subsidized 'need' based loans. The only people getting screwed are those in the middle.
I bought myself a home when I was 24, so finishing up college wasn't reasonable for me. Instead, I started working on my own projects as well as learning as much as possible to do the job of me and the developers above me. I've learned a lot in those 4 years (and and continuing to do so). So much so, that thinking about going to college gives me mixed feelings.
1) Should I spend X amount of money to re-learn the stuff I've learned just to get a small increase in pay, so I can pay off those college bills that I've accumulated from the year and a half training?
2) Should I work on this project (the Bachelor's Degree) instead of finishing up my personal project (that's potentially a great startup idea)?
3) Is and extra $5-10k a year "guaranteed" now better than an extra $500k-10 mil a year "probable"?
I don't know. Perhaps, I can compromise a little. Finish up slowly and have my cake and eat it to. All I know is, with my personal project, I have an opportunity to do something great. In the meantime, I have a good job and am earning a very good paycheck (well as far as the rest on the US is concerned).
I feel that I can always go back to school and finish up. In the meantime, I will continue to learn things on my own through my projects and my day job.
The good news is that you only need one job. For every company that requires a degree, there is one that values the self-learner even more. There is no use in fretting over individual company hiring practices.
Your company: only academia
Startups: academia + anybody else
With that in mind, it's just plain math that startups have more chance in finding great people.
The average person with a degree will outperform an average person without one. But the average person applying for a particular job who can get in is about equivalent to other people doing the same. But people prefer people with degrees. Therefore, if all else is equal, the average person you hire with a degree is worse than the average person without one.
But if you want people to perform at the very top level for computer science stuff, then you both want a top intellect and a degree. (However you, as a company don't realistically have the option of top people.)
I'm not sure it follows that a person you hire with a degree will be worse than the average person that you hire without a degree. After all, you said "if all else is equal. . . ." If all else is equal than the candidates are equally qualified and the presence or absence of the degree made no difference. I don't see how having a degree by itself (which is the scenario you envision) can ever count against you.
If you hire someone without a degree, the most you can conclude is that there was probably at least one person with a degree that was inferior to that individual. The problem is that you don't know how many people with degrees are inferior to this individual. Exact numbers matter in this case; I think that the reason that people prefer people with degrees is because having the degree is more often associated with the required skills than not having the degree.
This is actually true about any discriminated against group (which people without degrees are). On average the discriminated against group may be worse (for whatever historical reasons), but the ones who are good enough to become seriously considered despite that are actually better than the ones you would consider equally desirable. Therefore if you're on the fence about a decision, you should prefer the one who lacks the most obvious signals like degrees, etc.
This may sound like an abstract and weird hypothesis. But it is a testable one. For example see http://hbswk.hbs.edu/item/6498.html for evidence that being willing to hire women into management in a culture where women are discriminated against results in better financial returns for the company that is willing to do so.
As for your hypothesis that people with a degree are more likely to have the required skills, that depends heavily on the job. Certainly if you're going to hire someone to work on a compiler, you'd prefer people who know how compilers work. Which gives a big edge to CS grads. But for general software development I'd prefer someone who can quote Code Complete back at me than an average CS grad.
(Disclaimer, I have a masters in math, and almost finished my PhD. If you are looking to hire me, and you have an alternate candidate without my academic qualifications who you think is a tossup compared to me, then yes, I am saying that you should hire them instead.)
For example, suppose you have two positions to fill that are basically the same. You fill one position with person A that doesn't have a degree and you fill another position with person B that has a degree. Person A may have gotten the position because they beat people with and without degrees that were also applying to the position. The same applies to person B. On one hand, you're saying that person B will get some level of preferential treatment because he/is has a degree. But on the other hand, you're saying that person A is probably better than person B in a manner that isn't reflected in the basic competency tests that were used to hire them in the first place. However, at this point you're comparing apples to oranges because they weren't hired from the pool of candidates.
Moreover, I don't know what you mean by "better". You might say that someone that succeeds despite lacking a degree is probably more passionate than an equally hireable person that had a degree. He/she may have more job experience. He/she may have passed with an A+ from the school of hard knocks. It seems to me that the only way to quantify this and aggregate over individual differences would be to compare the long-term salaries of people with degrees versus those without. Pay may seem like a coarse measure of whether an employee is better or not (I should know because I left a job in which I was underpaid for years despite being productive) but it is at least a simple measure of how much a company actually values an employee.
However my personal, anecdotal experience is that peer coworkers that I've had who did not have college degrees have, on average, been better than ones who did. By "peer coworker" I mean "working with me, with a job title similar to or better than mine". By "better" I mean "impressed me more". My measure of being impressed is what I thought of the quality and quantity of work that I saw them doing.
I have no idea what their salaries were like. There were some that I know were making less than coworkers with degrees, even though I thought that their work was better. Most I never had a discussion about salaries with.
That said, on the whole I would wager that discriminated against workers get a worse salary even if their productivity is equivalent or better. Why? Because salary is the result of a negotiation, one of whose inputs is what your alternate options are. People are not paid what they are worth to the company. They are paid what the company thinks it needs to pay them to keep them happy, and the difference between that and their worth is kept by the company as profit. (Companies that do not act this way soon find that they are not able to make a profit and some time later find themselves out of business...) If some employees have a hard time being paid more elsewhere, then they will often be satisfied with less from you.
This phenomena is presumably why the paper that I pointed you to measured productivity on the basis of company growth and profitability, and not on paid salary.
Then again, there are people (occasionally) like Steve Blank and Ed Fredkin.
I have also learned that not everyone is lucky enough to have gone to university for one reason or another, that does not stop them being brilliant though.
There is a lot of snobbery around having a degree (and more so having a Masters these days) which is a great shame.
But an engineer or a physicist would probably be able to advise him on what he should sing his hard drives to make them run smoother. I don't think a compsi grad could do that ;-)
That's not proper English grammar.
Those with degrees I need to ferret out if they actually like to program or if they just are in it "for the job." I tend to find that those that have come to programming via another route are more likely to actually enjoy it.
Those without degrees I need to spend more time ferreting out the "plays well with others" skills. I tend to find that those without a college degree tend to have less experience attempting to solve tough intellectual problems as a member of a group -- this is usually alleviated by more professional experience. One other quirk that seems to come up more often is the "Smartest Person in the Room" syndrome, the constant need to prove one's superior intelligence. If you get more than one of these people on your team it tends to turn every discussion or meeting into an unproductive fireworks display of one-upmanship.
My perfect hire is the self-learner who loves to program, has a mastery of the fundamentals of computer science, can effectively communicate complex topics, and has enough confidence in their abilities to stow the ego.
Then again I'm also looking for some beach front property here in Colorado...
 - I also see this quite a bit with people who are _really_ proud of where they went to school. This is then usually combined with them somehow working the name of their alma mater into the conversation at least a dozen times during an hour interview.
There is no substitute for the skills you'll develop early in your career hacking code at a startup. At the same time, after years of working as a programmer, I feel unbalanced. I've had a lot of success at my previous jobs, but ran into challenging problems where I wished I had a few more formal analytical techniques in my toolbox. I can "just pick up" a new programming language, but I haven't been able to "just pick up" type theory.
After three years of education in law, I've come to appreciate what formal education brings to the table: an appreciation for the big picture principles of a field that are hard to grasp when you're neck deep in code working at a startup. Any auto-didact could be a lawyer. With practice, doing similar things repeatedly, they could be a very efficient one. But even a mundane corporate bankruptcy can bring up a novel point of law, and its when you encounter something totally unfamiliar that a formal education really proves useful. I think someone who can draw on the broad principles of the field is at a huge advantage when dealing with a complex novel problem than someone who has just seen the pretty specific areas that they've hacked on.
Now, if I could choose between an auto-didact with no degree and someone with a great degree and no ability to self-teach, I'd choose the former, most of the time. But if I were doing a startup that involved designing the next TCP/IP, I'd probably pick the PhD without any programming skills to speak of.
Negotiating such circumstances continues to be a struggle, for me. To the extent my opinion has any value, though, I would recommend being on the lookout for becoming part of or involved with a "lying culture" and getting out of such circumstances as soon as possible.
As I stated, in my case I compensated. For me, that seemed to end up being a self-destructive approach.
Several bad personal circumstances perhaps kept me more "trapped" than I might otherwise have been -- if it was not just personal weakness. Regardless, from that perspective, my recommendation is to walk away. The sooner you do so, the less it's going to cost you. And you won't be further empowering those who are shoveling the shit.
I started a longer comment, but I'm going to reduce it to the phrase I used within it: A lying culture.
A lying culture is corrosive, and it is particularly damaging to those who don't lie and aren't interested in the priorities such a culture tends to emphasize. (Personal power, control, and exploitation.)
I've managed to negotiate some such cultures, in good part by finding and connecting with the decent sub-population within them. Sometimes that included winning the trust of somewhat disengaged employees over to my cause.
However, negotiating such a culture for a time does not equate with long term success. I think, in retrospect, it is better to get out. Personal connections can mask, but not counteract, the larger influences.
It is also worth keeping a keen ear tuned to if and when your work culture starts turning into a lying culture.
Those "stay the course", "engagement", et al. memos can be one canary, and if you're paying attention, you'll observe some of the brightest employees -- where their personal investments and risks aren't too high -- jumping ship soon after the scent of such a change begins wafting around.
It is, I think, not just about personal opportunity. It's about a low or zero tolerance for bullshit.
Not going to college was the best thing that ever happened to my career. I got to spend my "college years" optimizing for business, which put me miles ahead of my peers who went to school. I now earn significantly more and get to work on more interesting projects (by my metric, at least) than my friends who even have PhDs in the field.
But that came with a cost. I missed out on a lot of non-career qualities by not having the college experience. I don't feel either direction is wrong, you just have to choose which is more important to you.
Also, I think the advice to go to a small college is exactly backwards. If you're really smart and can teach yourself, go to a large research university. Compared to little colleges, these universities focus quite a bit more on novel research and less on teaching students. The professors are chosen on their aptitude in the field, not as teachers. So you get to work on ground-breaking stuff with brilliant people, but have less instructional support. This is a great compromise if you are something of an autodidact.
After all, the classes are not the most important thing you should get out of a university education. It's working with other extremely smart people, doing novel and nontrivial research and being able to pursue very specialized and advanced topics of interest. And the classes that are the most important--the most advanced ones, naturally--are the sort that aren't offered at little colleges anyhow. For example, I'm going to take a class on program synthesis next semester; I don't think I'd have that same option at a small college, and it's certainly a very exciting topic!
Besides, an engineering, mathematics or CS program at a good research university is more than challenging enough for anyone. This sort of education is a great complement to the average hacker--it ensures you have breadth even in topics you don't like (CPU design may be icky, but I had to learn the basics all the same :P), gives you depth in the subjects you do like and supplies a very helpful sort of systematic organization. It really helps draw connections between otherwise disparate areas of study and gives you a good base to pursue more advanced interests.
I used to think that just being a good hacker was all it took to be a good developer but the fact is that you don't know what you don't know. There are things that you are forced to learn in academic courses that you may not have chosen on your own but which end up being valuable in unpredictable ways.
It's actually sound advice (and like all advice, you should think it through fully), if you know something already why pay $80k to get a piece of paper to prove it? Many people are employed in jobs they know but didn't major in.
(Because of the glut of liberal arts BAs, there aren't a ton of jobs for "well-rounded, cultured, and thoughtful" - though those might be little bonuses)
I've worked with a large number of people both with and without college degrees, in the US and abroad. And I've found that it's not the degree that counts -- it's the liberal education (I mean that in the sense of a well-rounded education, and many college graduates are not receiving that, particularly at colleges/universities where they're groomed for a role in software engineering). People with a broad background aren't just more inclined to problem-solve, they're better at it -- they come up with more innovative and subtle solutions, they're better able to manage their own time, etc. Time and time again I see issues being kicked around until they land at someone with a "well-rounded" background, who actually is willing to examine and solve the problem rather than looking at it from a single perspective.
I don't doubt that one can arrive at this state of mind without attending college, or that some who attend college fail to get there. But I want smart people who are able and willing to problem-solve, and in my experience college graduates have a serious edge.
I also happen to believe there are myriad benefits to a (good) college education besides vocational preparedness, but I'll spare you that spiel.
Filtering for autodidact programmers will certainly find you people who've more strongly focused on programming, possibly on software engineering, than on computing science.
However, when you need someone to tell you how to build a filesystem that's redundant to the Nth degree or when to use a decision tree construction algorithm instead of a naive Bayesian filter for data classification.... you'll need a computer scientist, and you'll damn well call for someone with a degree.
I doubt you meant it this way but that's pretty damning - in my experience people with CS degrees (or any degree) right out of college are horribly ill equipped for most things.
The problem with college is while it teaches some really great stuff, it gives people an over inflated sense of what they know and what they're ready for.
In that sense they're often the opposite of many high school graduates who might be a little too unsure of themselves because they're too worried about not having a degree.
I don't think "ill-equipped" is the right word. You probably have the right "equipment", just none of the experience or secondary skills needed. Neither hacker nor college graduate. One might have more programming experience and the other might have more formal scientific training, but that's just not what is being talked about there.