Real programmers make their own tools

Real programmers make their own tools

Jan 30

I’m making a distinction between “real programmers” and “Real Programmers” because they are two completely different things. Really. “Real Programmers” also make their own tools, for sure, but they are in a different league and outside the scope of this discussion.

I’m talking about all the other programmers, the ones that don’t calculate their own offsets by hand and that don’t program on the bare metal all the time. I’m talking about the programmers that get the majority of programming work done.

So far in my career I have found that there are fundamentally two types of programmers. The first type are the ones who do it as a job, who get paid to program and program adequately, get the job done, but leave the work behind at 5pm when they go home. The second type are the ones who love programming, who wake up and go to work and program, who go home and program, who stay up all night programming and when they’re done programming, they blog about programming.

As far as I am concerned, there are pro’s and cons in employing both type of programmer. The 9 to 5 workers will do what you tell them, probably reasonably well but they will probably not do much innovation or anything outside of the scope of what they are specifically instructed. This is fine if you have somebody to dish out the work regularly and check that everything is getting done.

To get the best out of the programmer who lives for programming, you have to get them to buy into the idea of the system they are working on. They get bored easily and so must be challenged constantly, preferably with difficult problems. For these guys, once they buy into your (their) system and take ownership of it, they will work on it obsessively and this is where the real innovation comes from. The down side to this bunch is that they get hung up on the details and the Feature Creature speaks to them all the time and it is very easy from them to lose focus and go off on a tangent.

The way you tell the difference between the two types of programmer is simple and it is a question I have asked in interviews since the first time I hired another programmer. “Have you written any software in your spare time that you use yourself every day”. It’s a straightforward question but the answer tells you a lot about what kind of programmer you are talking to. If somebody is a programmer and he doesn’t make programs that he uses himself, he does not program because he loves it. He programs because he is able and it pays the bills.

A true artists makes his own tools.

What made me think about this is that recently I have been seriously missing a little application I wrote many years ago in Visual Basic 6. It was a simple thing, basically a miniature notepad like application that lived in your system tray and I called it QuickPad. You clicked on the icon and it popped up docked to the bottom right of the screen and had three ‘pages’. There was a button at the top of the window to keep it on top of any other window and the application automatically saved the text documents on exit and loaded them when the application started at system start-up.

It was a simple thing but I used it, every day, all day, hundred of times. I have a habit of copying and pasting many arbitrary lines of text, notes, links, whatever into notepad now and being the hoarder that I am, saving them all over the place. It is no way to properly manage notes but they are generally not important enough to warrant a filing system. The point is, I created QuickPad in response to a need I had. And that is the thing I love the most about programming. On a computer, I can solve my own problems and write my own software, create my own tools.


  1. poisonbit

    Totally agree with this.

    And where you said “programmer”… I would like to add “or sysadmin”.

  2. Yep, I guess the same could be said for sysadmins; the ones who make their own tools and use them every day are the ones who live for what they do.

Leave a Reply