Have you reached all your potential as a programmer?

This is not about what you know, but about how fast you can apply what you already know.

Think for a second how do you always try to solve a particular problem. To oversimplify this, I'm going to divide it in two different groups:

  1. The first group are those people who start from the beginning, and step by step work on their problem until they reach a solution. When they do, they are done. (And everything works, and it also looks good.)

  2. The second group are those people who care the most to reach the end as soon as possible (thus not paying attention to the details along the way.) After they find the right path, they come back and clean everything that has to be cleaned. (And then everything works as well, and it also looks good.)

(Just to be clear, I'm assuming both groups reach exactly the same place at the end. Not only their solutions are the same, but there's also no difference in the quality of their program.)

Granted, I think most people are in (have tried) both categories. I'm also not sure whether one of these is better than the other every single time.

But I try myself to be in the second group every time I can (thus meaning that I like better the second approach.) Here is what this means:

  • When I'm trying to solve a problem, I don't care about anything else than to find the solution (the feedback I need to know that I'm done.)

  • From my coding, I remove every detail that gets in the way of speed. Remember, my goal is to move fast to get feedback as soon as possible.

  • I heavily use mocks, hardcoded values, ugly code, and anything that I need to move on and get to the end.

  • I usually have to ask anyone pair programming with me to be patient: people freak out when they see the tail of debt I leave when I'm moving fast.

  • When I find the light at the end of the tunnel, I come back cleaning: mocks, hardcoded values, ugly code, and every compromise I made gets fixed.

(Some people would tell you that this approach is called "prototyping". It might be, but I don't like to call it that way: the word "prototype" forms a picture of an incomplete product in my mind.)

Why do I like this approach anyway?

Because I've seen how fast it is.

I've worked with people who know it all, and their only difference has been how fast they can get from point A to point B: the time it takes to get things right when you aren't sure yet those are the things you need, adds up against you really quick. Being messy while you find answers, and then taking the time to clean up your mess (the mess that really matters) comes up ahead most of the time.

Is this for you?

Seems so obvious and simple, but I promise it's very powerful!

I've taught this approach to several colleagues before. They've tried and now they can't go back. They feel they work faster now. I definitively know they do.

The key is to constantly evaluate whether you are ready to clean things up or keep moving along. If you've proven your point, start cleaning. If you haven't, don't worry about the details yet.

If you find yourself in the first group most of the time, try this for a change. You might not like it, and that's fine, but who knows? There might be something there for you.

Have something to say about this post? Get in touch!

Want to read more? Visit the archive.