As universities offer more and more curriculum online, would you hire someone who had self taught himself through a CS degree? Or would you want to see the diploma?
Certainly, being a self-taught programmer and self-teaching your way through a CS degree are different things. Likewise, Computer Science as an academic field and Programming as a career are different. Other responses have mixed this up... expecting someone trained as Computer Scientist and to be good at programming jobs is, I think, silly.
The CS department at my Ivy league school did not teach very much that would qualify the students (my peers) for work. In light of that, I consider myself a self-taught programmer, even though I have a diploma with a CS degree from my school.
So, I don't think that it's about having a degree or about (claiming) to be self taught. If you are applying for a programming job, it's about your programming portfolio, wherever and however it exists.
I have a huge bias towards self-learning. Most people I know get a degree/diploma to get a job. The people who self-teach are doing it more because they're curious cats. I'll take the curious cat.
What about people who do both at the same time? Personally I find this model to really work for me, Uni opens up my eyes to what exists out there, and I dig deep into the specifics of what piques my interest on my own time.
I find that most programmers who are only self taught are missing breadth. They're great with what they encountered and had to try, but usually suck at even knowing of the existence of what lies just beyond the edge.
Or at least the ones I've had the pleasure of talking to :)
> They're great with what they encountered and had to try, but usually suck at even knowing of the existence of what lies just beyond the edge.
That is one area where the internet could use improvement.
Google can teach you anything... if you know what you're looking for; but there doesn't seem to be a good system for exploration beyond that. If you follow the right discussion/link services and keep a general watchful eye out, the stuff out beyond the edge will eventually flow to you, but there is certainly room for improvement.
I believe it is a solvable problem and the company that gets it right will have amazing growth potential.
The problem is the start. Self taught folks usually find it hard to break into the mainstream, unless they have already done stuff on their own (startup) or are known in the open source community. The CS degree guarantees a channel to enter a company.
I was reading a related article from Prof. Vivek Wadhwa about this (his take on students dropping out to do startups), and he encourages going to school (any school).
Though, there is some truth I think in school providing a bigger picture/research that is hard to for some self taught folks to get to.
I self-taught myself programming for a while, discovered I liked it, and decided to go back to school in CS so that I could learn even more about it. (The first time through school, I was interested in different things and ended up with a philosophy degree.) While some of people I encountered in the CS department were there to line up a job, school can just be an efficient, focused learning method for the curious.
In general, one nice thing about hiring CS students as opposed to purely self-taught programmers is that, in my experience, they're more likely to have a good understanding algorithms and data structures. Self-taught coders often only learn as much as they think they need to know about the topic to complete the task in front of them. (Obviously, for those interested, it's as straightforward to teach yourself analysis of algorithms as any other topic.) For some types of programming positions, having a rigorous background in this area is crucial, though in others not so much.
It really depends on the person. Self-taught people are proven to be curious and like to learn, but you can also find people with degrees that are like that. They start with the a degree but never stop the learning process.
Damn, that's a good anecdote to counter my argument. So I'm going to have to provide my own. I took electrical engineering. In third year I was doing a lab, and the guy next to me didn't know that capacitors are used in analog filters. I would have asked him how he got to 3rd year knowing so little, but I was too depressed.
Given that my own background[1] is a weird mishmash of formal education at various levels, and auto-didactic learning, I would be totally down with hiring somebody without requiring that they have a particular degree. As long as they can convince me that they have the required knowledge / skills, I really don't care if they're self-taught, university educated, learned through an apprenticeship, learned at a community college, or some hybrid of all of the above. I'm only interested in the end result.
[1]: For what it's worth, I was a junior when I dropped out of my bachelor's degree in CS program, but over the years I've accumulated 3 associate degrees: General Education, Computer Programming, and High Performance Computing, and have studied all sorts of stuff on my own time... just because it's what I found interesting. And I still work on learning new stuff each and every day. <shrug />
I am more inclined, as a rule, to hire self-taught programmers who have built something interesting over programmers with flashy degrees and little experience to back it up.
I've found little correlation between diplomas and effectiveness as a programmer in my hiring. So, that includes people who are self taught. I may be in the minority, and I think that people who have diplomas sometimes have the opinion that anyone who didn't go thru the pain they went thru is missing something.
I'm an old dog so there were no CS classes at my middle school when I started programming. Naturally I have a bias towards those who took matters into their own hands and are self-taught.
ditto for me. I've actually found after years of interviewing that on average, self-taught programmers are almost always better. Not always true of course, but usually true.
Certainly, being a self-taught programmer and self-teaching your way through a CS degree are different things. Likewise, Computer Science as an academic field and Programming as a career are different. Other responses have mixed this up... expecting someone trained as Computer Scientist and to be good at programming jobs is, I think, silly.
The CS department at my Ivy league school did not teach very much that would qualify the students (my peers) for work. In light of that, I consider myself a self-taught programmer, even though I have a diploma with a CS degree from my school.
So, I don't think that it's about having a degree or about (claiming) to be self taught. If you are applying for a programming job, it's about your programming portfolio, wherever and however it exists.