Formatting Your Code
Why style matters
Universal Programmers Toolkit
Care and feeding of your code collection
Effective Proactive Debugging Techniques
It's all about the tools
Good Programming Practices
What to do (or not)
Banning Bad Bots
A short but effective script
The Joy of Specs
How to (almost) guarantee a successful project
Habits of Successful Freelancers
Advice for success
How to Become a Great Programmer
One easy lesson!
Bidding on a Stranger's Project
Freelancing 101 - Don't Send That Email!
Pick up the phone instead
Ensuring Your Web Site Project Succeeds
Advice for clients
How to Take Great Photos (And Fix Lousy Ones), Part 1
Composing and shooting your photos
How to Take Great Photos (And Fix Lousy Ones), Part 2
Editing and postproduction
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:
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.
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).
Advanced programmer: you shouldn't have even read this far.
Copyright © 2014 by Kim Moser (email)
Last modified: Wed 09 January 2008 17:29:52