
I've heard programmers argue about it a dozen times. Which is better,
programmers that are self taught, and know how to figure things out,
or college grads with a degree in computer science that are
"qualified" for the job, in the HR sense of the word?
If programming is a practical skill, doesn't it make sense that you
get good at it by programming?
Right off the bat, I'm just gonna go ahead and say that in my opinion,
there isn't an answer to that question.
Let's put it in another context, for arguments' sake, two businessmen.
One is an entrepreneur who started his own company with no
qualifications, and the other is a manager at a medium sized company
who went to business school. They're about equally good, and earn
roughly the same amount.
Wouldn't it be silly to say that the first guy isn't as good as the
second, just because he isn't qualified? And wouldn't it be equally
silly to say that the second guy isn't as good as the first, that he
doesn't have as much "real world experience" because he spent a lot of
time in college?
Now take the same analogy, and apply it to doctors. Doesn't quite work
does it? When the "self skilled" doctor brings out the leeches, you
kinda get the feeling that maybe a qualification isn't such a bad
thing after all.
The problem is that, the doctor analogy doesn't seem to carry in the
world of programming. Most programmers know a great programmer without
a degree or with a lower level qualification who can code twice as
well as another guy with a degree.
To me, this completely invalidates both sides of the argument. The
deciding factor is neither the qualification nor the experience.
(I'm not going to go into the whole discussion about how a computer
science degree doesn't really cover programming, other than to say
that at the very least it does teach you to think in a problem solving
kinda way.)
I can see the benefits of being well schooled. Its only since I
actually started going through course books and online learning
resources that I found myself thinking horizontally. i.e. the more you
know about the language/platform the more likely you are to choose the
right tool for the job. At times its great to just start from scratch,
Google the problem for a code snippet, and learn piecemeal, but if
that's all you ever do, then you're always going to be a "piecemeal"
programmer, hacking together your own StringDictionary when one
already exists.
To be a good programmer you need both practical, on-the-job skills,
and a theoretical conceptual understanding. It's just the way I see
it, but if you got both of those, chances are you're on fire.
The best programmers, are those who want to be great programmers.
Whether its a rails hacker building sites out of his home office, or a
corporate .NET developer working with Windows Services, just doesn't
matter.
The best programmers are those that are always writing cool little
apps to do something . Those who love reading blogs like The Old New
Thing , Coding Horror, Joel on Software, and Hacker News. Those who
love finding the best solution to the problem. Those who spend their
weekends reading something from the Pragmatic Bookshelf.
The best programmers are those that love crafting good, efficient code.