4 ms·
Will prefix this with the necessary disclaimer that there are exceptions to this on both sides, and by generalising I'm necessarily going to get it wrong for so
by paragraft 12y ago
Will prefix this with the necessary disclaimer that there are exceptions to this on both sides, and by generalising I'm necessarily going to get it wrong for some specific cases. One of the best devs I know dropped out of CS in the first few months, contributed to opensource projects (particularly in OS X stuff), got recruited by Apple, has been with them for some 6-7 years since on a product you all know.
Caveat over, onto the generalization: From having done a few dozen interviews now, the self-taught applicants are more likely to have holes in their knowledge that they don't know about. That is, CS grads have (hopefully) gone through a broad and formal program so they have a more complete mental map of the knowledge space and their own weaknesses. The self-taughts don't know what it is they don't know.
This gap can be overcome, but the pattern I've often seen is the knowledge gap and disadvantage is compounded by the first jobs the self-taught tend to end up in. Rejected from graduate programs in larger firms where they'll be exposed to a wider range of talent, they often end up in smaller shops where they work in a niche where they're not challenged to keep growing (just as often due to the nature of the business. Smaller shops tend to be contract businesses, and contract work doesn't provide much opportunity to go deep on problems in the way that will stretch and grow you). And because they don't know what they don't know, they don't realise the gap between their skillset and their contemporaries who went the formal CS track.
Frequently I've interviewed developers who've done this for 5-10 years and decided they wanted to try working in a larger company. And they're hard interviews. I hate it when an earnest applicant is an obvious 'no' in the first few minutes, and it's because they've specialised into a low-level dead-end, and they didn't realise it.
Having said that, I think we're at a point where it's easier for a self-teaching programmer to overcome this. Even compared to when I went through uni in the mid-2000s, it's ridiculously easy to get the material that would cover an undergrad's CS education. There's no need for a self-taught person to be caught short in an interview on not knowing what a linked list is, or the basics of algorithmic complexity. I could probably put together a list of 10-20 Wikipedia articles and Khan videos that, if you were to read and watch until you understood, would cover you for the vast bulk of CS-related questions you're likely to hit in an interview.
- thinkdevcode 12y agoSo by "gap" you mean unable to answer some trivial questions during an interview that don't pertain to the job at all? While I agree self-taught developers may lack knowledge in certain areas, they compensate by being able to learn quickly and efficiently for the job at hand. School taught, though not always, will lack that discipline and/or efficiency. At least in my experience, so take what I said with a grain of salt.
- maratd 12y ago> they compensate by being able to learn quickly and efficiently for the job at hand. We ALL need to be able to learn quickly or we simply don't last. If you've been doing this for a decade or more, you're guaranteed to have that skill in abundance, regardless of your origins. What the OP was getting at is that you get exposed to a host of different ideas and paradigms in a proper CS program. Assembly, lisp/ada/scheme/etc., C/C++/Java, graphics, computer learning, computer architecture, etc. I learned how to code when I was ten, but I would have never exposed myself to any of those things if I didn't focus on CS in college. What does that add? Exactly what the OP said. I know what I don't know. And it's a lot.
- thinkdevcode 12y ago> We ALL need to be able to learn quickly or we simply don't last. I totally agree with that statement. In my response, I meant that self-taught devs have a leg up, so to speak, in the beginning. In the end, we all need to learn quickly and adapt regardless of how we started. > Assembly, lisp/ada/scheme/etc., C/C++/Java, graphics, computer learning, computer architecture, etc. From my own experience as a self-taught developer, I have learned, though maybe never used professionally, almost all of those topics to some degree because I had a keen interest in understanding software and computing in general. I find that self-taught devs, though not a majority, are like that - they want to know and understand because its passion of theirs. Also, i'm not saying that university trained students lack that passion either. I believe at the end of the day it really doesnt matter whether you are self-taught or not, only the passion you bring into learning and understanding is what matters.
- 12y ago