Three Steps To Becoming a Better Programmer

There are people who love programming. Who enjoy the challenge and pleasure of creating something. Of watching it grow and flourish. Of seeing it do what it was destined to. Such people start off with a spark in them. When the spark is fanned into a flame, they become creators of software that makes a difference in our lives.

I’m asked, once in a while, by promising coders, about how to become better at the job they love. This is my advice to them:

  1. Code. If you’re a painter, and you want to better yourself, what would you do? Paint more? Paint things you haven’t painted before? Use painting techniques that you haven’t used before? Surely yes. And why should these steps not be applicable to our profession? To become a better programmer, program. Write programs. Complete ones, that work. Not one, not two. Just keep doing it. The more you do, the better you become. Rewrite it in Haskell. Port it to Solaris. Add a garbage collector. Support another user-interface language. Publish your work as open source. Write a patch for gcc.
  2. Look around you. Things happen. Things change. It’s always exciting out there. So many things to learn. So many things you never knew existed. Read about elegant solutions to challenging problems. See how people create, use, misuse and abuse technologies. Find out what Brainf*ck is. What IOCCC is. Why Ariane 5 failed. Why jwz started a nightclub. Why Python has a GIL. Why VirtualAlloc returns 64k-aligned pointers.
  3. Reflect. Connect your input and output. Think about what you read. What you learned. How you can apply it to your work. Reflect and ruminate. Why did your code work the very first time with Python? Why is it faster to iterate through std::vector than std::list? How should duck-typed languages handle primitive types? When is it best to use frameworks and when libraries? Why should this routine here create so many page faults? Shall I build a generic backend for duck-typed languages?

If you’re reading this, you’re probably one of the gifted few. You are one among a rare and endangered species. Keep the spark, the flame, the passion alive. May the force be with you.


  1. George Ninos said,

    Oct 12, 2007 at 11:40 pm

    Very well put. I especially agree with point 1. Just like an athelete must train their muscles and reflexes to be competitive, developers must code and create alogrithms to become more effective and efficient.

  2. Oct 13, 2007 at 3:22 am

    […] Becoming a better programmer […]

  3. Oct 13, 2007 at 5:22 am

    […] you “anonymous”, whoever you are, for your advice on how to be a good […]

  4. Jericho said,

    Oct 13, 2007 at 5:58 am

    To be a better programmer, one should really know how to code. That’s basically the most important thing. I know this one guy who calls himself a programmer yet he doesn’t even know how to code! I’m pretty sure he hasn’t read this article yet. Heh

  5. Vermilk said,

    Oct 13, 2007 at 8:57 am

    I used to program for a living but have long since given it up. Given it up as a living. I still like to twiddle the bits occasionally but more on a higher level. I miss it. I always said it was like putting a puzzle together. It’s always rewarding when you’re finished (if you’re ever finished).

  6. paddy3118 said,

    Oct 13, 2007 at 12:15 pm

    Read others code.
    You are not the only great programmer out there and even currently failing code might have a better approach to a problem.

    – Paddy.

  7. Robert said,

    Oct 13, 2007 at 12:15 pm

    Jericho: I’ve come across a couple of those myself. One guy actually turned out to be someone who created spreadsheets for people. He ‘programmed’ them…

    So now I say I’m a developer. I write software that people then program :)

  8. lowerpericles said,

    Oct 13, 2007 at 2:07 pm

    “… challenge and pleasure of creating something. Of watching it grow and flourish. Of seeing it do what it was destined to.”

    “… who makes the best trade off, the best compromise between two orthogonal qualities.”

    “The second system originates from a deep, basic need of humans — to make things better. To correct mistakes. To live life one more time, without making the same mistakes again. The Undo button. Do it till you get it right. Citius, Altius, Fortius.”

  9. looptheloop said,

    Oct 13, 2007 at 3:39 pm

    I never consider myself a programmer. It’s something I enjoy doing, be it C, VB, VBA, or Assembler.

    I’ve also coded some very handy spreadsheets as well. Coded? Yes you can do a lot with Excel if you know how to make use of VBA and a few API declarations.

    But programming isn’t about knowing all the syntax. That comes from your documentation or wherever you can find it. Not everyone gets to go to school for this stuff.

    The real focus is imagination and problem solving.

  10. NR said,

    Oct 22, 2007 at 6:36 pm

    Excellent and interesting one.:)

  11. musafironmove said,

    Nov 1, 2007 at 12:51 pm

    fascinating… :)

  12. Chintan said,

    Jan 18, 2008 at 5:45 pm

    I am trying to improve .. thanks :)

  13. Feb 1, 2008 at 5:59 am

    […] though I know full well the solution. Specifically, I realize that I’m only doing the #2 of these Three Steps and ignoring the other two almost completely. This is not good, and I plan to start making changes […]

  14. pedro said,

    Feb 5, 2008 at 10:52 pm

    Awesome read, just fell in love with your blog keep it up! :)

  15. Effectize said,

    Oct 28, 2008 at 10:29 am

    89 Ways for You to Become the Coolest Programmer in the World…

    Since there are dozens of posts on becoming a better developer, but no single post with all the advice you need, perhaps, you’ll find this short guide useful.
    1. Learn the Skills You Need

    Learn the programming basics

    “The goal of this guide is to b…

  16. venlee said,

    Jan 6, 2009 at 10:44 pm

    Nice Work M8

  17. Mar 12, 2011 at 3:39 pm

    […] Three Steps To Becoming a Better Programmer < The Tired Architect […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: