4 ms·
Background: I have a Master's in CS from Wisconsin-Madison, I'm a programmer as well as the founder of a software company. I've hired programmers with and with
by luckydude 16y ago
Background: I have a Master's in CS from Wisconsin-Madison, I'm a programmer as well as the founder of a software company. I've hired programmers with and without formal training in CS.
I think the self taught are both fine and justified in their worries that they are missing something. I'll try and explain as best I can.
Imagine that your mind is like a work shop, it's a place you go to create things. Let's consider two workshops: the neat and organized shop and the messy shop. I'm going to suggest that the neat shop is more like a programmer with formal training and the messy shop is more like the self taught. Some self taught folks will argue that their mind is well organized, which is fine, but my opinion from experience is that this view has some amount of validity in the real world. Your experience may vary.
The question here is "is it possible to produce really great work in either shop?" I think that's sort of what the original question was getting at, they talk about skills but the point is what you do with those skills, what you produce. And we all want to produce great work. So can both sorts of shops (minds) produce great work?
My view is that self taught people are typically sharp, sometimes very sharp, but their minds are a little "messy". Formal training in terms of learning basic skills is no better than self taught. But the farther you go the more useful the training becomes. The shop analogy, a bit stretched I'll grant you, is that the training organizes your mind. When you need a tool, you know where it is and you go get it and use it. For example, if you are doing a compiler, you already know that you need an AST (I had a smart guy, with compiler experience, waste quite a bit of time trying to do a compiler without an AST. In spite of another guy saying "Don't we need an AST?". First guy: no formal training, second guy, formal training.)
I think a question that might be more enlightening is "given two equally talented programmers, one with formal training and one without, which one can produce good results, over a broad domain of tasks, faster?"