I can't speak to business, but I can about technology. When you're "on the job", you don't have extended periods of time where you have the luxury of studying a complicated topic in depth. Many tech jobs also don't give you the luxury of breadth, but rather are guided by an overarching practical purpose -- to get the "job" done.
Your generalization of the knowledge one gains by doing a degree is much too broad.
Here's the dirty little secret that people like you overlook - spending four years hacking around and hanging out on HN will teach you nothing about Big O notation and how to analyse it or about advanced data structures. What it will teach you is plenty about chasing low hanging fruit and very little about tackling big and difficult problems.
Sure, someone who's very driven will learn the same amount regardless - mostly by reading all the same books that someone who's gone to school will have read. But most people are not that driven. Most people are happy to hack around building webapps on the back of other people's libraries and then deluding themselves into thinking that gluing together a bunch of libraries and adding a pretty frontend counts as a significant achievement.
Frankly, with your attitude you're doomed to hire the mediocre while the people with the brain and skills to do any form of non trivial analysis go elsewhere - as they well should.
This is not a binary issue. There are many facets to software development. Knowing Big O will not teach you how to best use git in a production setting. It turns out they are both useful and important.
And that is the crux of the matter. A college graduate that is not driven to learn about the practical aspects of programming is no better for the job than the non-graduate who is not driven to learn about the theoretical side. After only four years of study, I would say that both applicants in the previous example are on equal ground. Both are lacking, just in different areas. It is not really clear at that stage which one of the two will have the drive to fill the gaps.
The dirty little secret is that you cannot apply generic processes to find the best applicant. Doing so will lead to mediocre selection no matter which bias you choose.
This is an awesome, insightful comment and really highlights what I'm getting at.
You're right that they both have weaknesses. What I'm saying is I'm willing to go all in on the person who figured out much of it by himself using whatever he had available to him than the person who had a college instructor put together everything for him and then provide additional readings, power points, and web links to all their students.
A smart person has to think their way out of a box. A resourceful person can just hack their way out of the box. I don't mind a little mess, so I'll take the resourceful person over the smart person everyday of the week.
You're putting together a collection of false dichotomies in this thread. Let me muddle them up for you:
CS departments are not all ivory towers.
Consider the following opportunities in my department:
(1) TA or grade production-quality software classes taught by Google engineers, with discussion on version control, code style, scalability, etc.
(2) research and implement algorithms for diagnosing hospital patients more effectively using ML techniques,
(3) push the frontier of computer vision in concert with former telecom engineers.
Software development contains a large set of cool, non-trivial problems. Without formal CS training, you will not get to access those problems. This might change someday, but it is not close to true right now.
> Without formal CS training, you will not get to access those problems.
This is also a false dichotomy. You do not really know what people are working on outside of the college setting.
Computer vision is pretty low hanging fruit for anyone to take on. I will grant you that it may be difficult to access medical data outside of the institution, but the same ML techniques can be applied to other data that is relevant. As a hobby farmer, I see all kinds of interesting places for ML on the farm. How many CS students are working with that kind of data?
No, it's a reality of the labor market for doctorate holders. Startups are experiencing a shortage of coders, but the supply of CS doctoral students is robust. Just look at how quickly internships/positions at industry labs (AT&T, Yahoo, Microsoft) fill up.
Not all computer vision is "low-hanging fruit," especially if you're pushing boundaries. Similarly, applying ML techniques to "other data that is relevant" is a far cry from using ML to save lives at a hospital due to misdiagnosis. I'm not talking about regressing A/B testing results.
> Not all computer vision is "low-hanging fruit," especially if you're pushing boundaries.
Computer vision is low hanging in the sense that you already have everything you need to make positive contributions to the study. I think the same is true with ML in general, but it was specific about what type of ML, which hangs higher due to the data availability.
> Similarly, applying ML techniques to "other data that is relevant" is a far cry from using ML to save lives at a hospital due to misdiagnosis.
Are you saying that programmers that are not working directly on saving lives are essentially wasting their time? There are a lot of interesting ML problems that do not save lives, but they are still worth working on.
"Computer vision is pretty low hanging fruit for anyone to take on."
Sure, but to be fair to achompas, that isn't what he said. What he said was
"(3) push the frontier of computer vision in concert with former telecom engineers."
Pushing the frontier of CV (as distinct from implementing/applying some CV algorithms) is hard to do outside a university or industrial research lab. Without formal CS training, it is very hard (Not impossible, but very hard) to access those problems.
Hard is quite different to impossible, which is what achompas implied. The beauty of computing is that you are only limited by your imagination. Anyone can accomplish anything they want. You do not need a CS degree to get there – though for some, it might help.
My point is that you simply cannot generalize. You have absolutely no idea what talents someone has just by looking at their history. It is simply irrelevant information if you want to hire the best of the best.
Hard is quite different to impossible, which is what achompas implied. The beauty of computing is that you are only limited by your imagination. Anyone can accomplish anything they want. You do not need a CS degree to get there – though for some, it might help.
Look, I appreciate your attitude. You have a positive outlook on what you can accomplish, and that's undoubtedly a good thing.
But, to be frank, the skills required to access my example problems above are not trivial. Let's consider the autodidactic route for computer vision:
1. You need to be cozy with linear algebra, convex optimization, calculus, and algorithmic complexity if you even want to understand prior research. This, alone, is 1-2 semesters of course load for a full-time student.
2. Then, you need to survey prior research to gain awareness about what already exists. You'll hit Google Scholar, search for papers, and have to circumvent article paywalls.
3. After that, you'll need to code your own framework (non-trivial) or convince other researchers to share their source code (very non-trivial--almost impossible, given that they might monetize or license their work, or their university owns said license).
4. Then you need to collect data to test your CV algorithm, iterate on it, etc.
Universities overcome all of these barriers. Hence, it is unrealistic to suggest one can produce cutting-edge CV work by themselves (or without university help).
1. Anyone can take two semesters worth of time to study the material. This is not exclusive to students.
2. You have to spend the time doing the research no matter who you are. Alternatively, you can ask someone else. Either way, anyone can do it.
3. This is a fair point, but you are allowed to spend money. If it costs money to access that code, so be it. Students are paying for that access too.
4. Again, true of anyone.
But more to the point, who cares how someone achieved their accomplishments? If it was through college, great, if it wasn't, still great. Why are you immediately discounting the person who did something amazing, just because he did it by himself?
Edit: I confused you with another poster. You may not have been judging people on their past. I do agree that people are more likely to do that work in a school setting, but that remains irrelevant when it comes to hiring.
I'm inclined to agree. Since the differentiator is expected drive, one can reasonably conclude that autodidactic is more likely to have it. It is what got them this far. While many graduates also fit that description, it is difficult to filter them from those who graduated only due to social pressures and income dreams.
For the theoretical programmers out there, you may recall that the future is independent of the past, given the present. I'm not certain it is worth hiring anyone based on their history. I would look to what they can offer today, and try to discern from that where they are headed in the future. It takes more effort this way, but you get what you give.
I hate to say this, but you're really starting to sound like you have a chip on your shoulder. You admit that GP has a good point, but then you go ahead and bash one type of person based on some ridiculously flawed notion that an "instructor put together" their knowledge for them. That's as far as I'm going to read this thread.
It depends on what you're doing. If you're writing java/python/ruby plumbing, sure some practical experience is great.
If you're job is to improve PageRank, I'd rather much take the person with a strong theoretical background linear algebra, probability, machine learning, and algorithms. That person is more than smart enough to learn the coding on the job.
Your generalization of the knowledge one gains by doing a degree is much too broad.