Being an average programmer
Hi, I’m Ryan and I have a confession to make: I’m an average programmer (it really wasn’t that hard to admit).
I once read a post about being the averagest (it’s long, but good), and at that point I realized that there’s nothing wrong with that. In fact, it’s almost better to be average (or at least to recognize that you’re not the best).
Most programmers have only a vague notion of how competent they are at what they do for a living. —Steve Yegge
Thinking you’re the best implies that you’re satisfied with what you know. You’re no longer studying your craft. As “the best” you know enough to know that you can do anything, so why bother? But chances are, you’re not the best. In fact, there are plenty of people who are better than you. And it’s not because you can’t tame complexity, it’s because you’re not working as hard as they are. You’re not practicing. (And by “you” I don’t mean you—it’s that other person we’re talking about, here)
Those who feel “average” are the one’s seeking ways to improve. They buy books, read articles, study code, and practice what they know. They tend to work harder toward the unattainable goal of being the best.
It’s more than just “being the best,” too. You need to stay current. Programming is not a static profession. Of course there are exceptions, but you cannot expect to use what you know right now for the next 30 years of your life. You’ll become obsolete.
And unfortunately, most of these efforts to improve don’t (and/or can’t) happen during work hours. I think it’s fair to say that I heavily use what I know at work, but don’t necessarily improve upon what I know. To some extent, yes; but for the most part, it’s up to me, the programmer—it’s up to me to want to get better. And on my own time.
One way that continually helps me to improve is sharing and/or maintaining open-source projects. It’s amazing how quickly an attitude can change when the code is being viewed by the world. Many people already share this point-of-view, which is great.
Another, somewhat obvious tip: find those who are better than you and learn from them. Pay attention to how they do things. Study their patterns (yes, study!). You should be able to read through code like pages in a book. Well-written code is inspirational to say the least.
And sure, when I look at code written by a better programmer, it can be disheartening. After all, that’s what I want my code to look like. But at the same time, it keeps me grounded; it shows me that I’ve got a long way to go; and most importantly, it reminds me that I’m merely an average programmer.

Nick Tuesday, 18 Nov, 2008 Posted at 11:13AM
I’m glad you wrote this article. I feel like I’m a crappy programmer most of the time. Of course, I still feel like I sort of live in Chris’ programming shadow. After all, Chris sparked my interest in programming and I always admired his way of approaching a project and the way he would hash it out when it came down to coding. This is just my own personal example.
But, you’re right. I’m an average (or slightly below average) programmer, too.
Ryan Tuesday, 18 Nov, 2008 Posted at 12:08PM
Thanks to git and GitHub it seems that I’ve been able to work with Chris (or at least, collaborate) a lot more lately. And yes, I’ve learned a lot from him, too. The thing about him is, he’s brilliant and he practices what he knows, so he’s got uber-skills. I’ve yet to see him stumble on something.
Looks like you’re working on a new site, huh? How’s it coming? Still in Rails or did you go back to PHP?
Nick Tuesday, 18 Nov, 2008 Posted at 12:24PM
I had something about 20% developed in PHP and got sick of it. It’s just too much effort to put forth for what you get in the end. So, I’m back to Rails. :-)
The new site is almost done. I’m just troubleshooting a few small problems I’m having. I’ve got an RJS template that’s acting screwy and spitting out Javascript on my screen. So, this will keep me occupied for a while, yet…
Nick Tuesday, 18 Nov, 2008 Posted at 12:56PM
Update – I found out that my inclusion of jQuery was causing Rails’ RJS templates to act funny with prototype. This is one of my frustrations with Rails to begin with, but I suppose it’s a small price to pay for all of the other benefits.
Ryan Tuesday, 18 Nov, 2008 Posted at 01:09PM
I suggest looking into unobtrusive javascript, especially since you’re already using jQuery. Rails doesn’t force you to use Prototype or anything, it’s just the default. Here’s a better explanation of that myth.
Using jQuery means you can’t use RJS, though. But that’s not a bad thing, it’s arguably better. Being unobtrusive is one of the main reasons to use jQuery.
Of course, if you still want to use RJS with jQuery, see this plugin (it redefines all of Rails’ ajax helpers to use jQuery instead of Prototype).
And feel free to let me know if you’re hung up on something.
Chris Wednesday, 19 Nov, 2008 Posted at 10:12AM
@Ryan, @Nick – well, I’m glad I’ve been of help, but my code isn’t perfect either! And it’s rarely right the first time around.
Anyway, since we’re talking about people who inspire us, I’m going to throw Jamis Buck in, because I’ve always found his code to be clean and rather clever.