Photography

How to Become a Great Programmer: One Easy Lesson!

Introduction

Whether you arrived here as part of a serious quest to
become a great programmer or just to improve your programming skills, you've
come to the wrong place. Odds are you're a lousy programmer and you'll never rise
above mediocrity at best.

Let me explain:

The main point of this article is to drive home the point
that the best programmers are self-motivated and have the necessary mental
resources to fill the gaps in their knowledge. In other words, good programmers
are natural hackers (in the traditional, knowledge-seeking sense of the word.)
That's it. If you don't fit that profile, well, you're not a very good
programmer (at least compared to those with a hacker mentality) and will always
struggle with programming.

In other words, to use the "teach someone to fish and you've
fed them for a lifetime" analogy: lousy programmers need to be shown how to
fish while great programmers can figure out for themselves how to fish.

Despite my bleak outlook for your future, I actually do have
some advice for the wanna-be great programmer:

Attributes of Great Programmers

Earlier I stated that the best programmers are
self-motivated and have the necessary mental resources to fill the gaps in
their knowledge. That doesn't mean they know everything; rather, it means they
have the ability to:

In other words, great programmers don't just know a
whole lot of stuff (although many of them do), they also have the ability to
learn more stuff: they are self-sufficient knowledge-acquiring machines.
Instead of simply wondering "why?" and wringing their hands, they naturally dig
in and find out why, without being told to do so (or how).

So far I've just talked about a general ability to seek out
and find answers on your own. While that single attribute is the driving force
behind any great programmer, it is only part of the picture. A great programmer
must also, at minimum, understand all the basics of programming: data
structures, logic, flow-control, and all that other stuff they teach you in
college.

But all those details are outside the scope of this article.
Remember, this article is about how to learn to fish, not technical details on
how to bait the hook or cast the line.

Starting Point

So where does this leave you? That depends on your previous
programming experience:

Complete novice: The bad news is that you have a
zillion things to learn. The good news is that any experience will be a
learning experience. The trick is finding things you can understand to begin
with. The simplest way: Google "___ tutorial" (fill in the blank with the thing
you want to learn. Of course, much of this will be over your head. You need to
hook up and hang out (whether online or in person) with those who know more
than you. Consider getting a mentor and/or hiring somebody to jump-start your
education process with an hour or two of pointers. Your goal should be to
become self-sufficient as quickly as possible, and to rely on your mentor only
when you're truly stumped.

Average programmer: You know a bunch of stuff but
you're somewhat of a Jack-of-all-trades. You need to hone your skills in one
area and master it. Google "advanced ___ tutorial" (fill in the blank with the
thing you want to learn).