Tools, Jigs, and Devices

One of the things that drives me crazy is that a lot of software developers don’t write software to make their jobs easier.  Whether it’s testing code, monitoring environments, or researching bugs, there are lots of ways to automate your way out of a boring job and look like a genius.  It’s work, but it makes it easier in the long run.

In other jobs this happens all the time.  Carpenters know that creating a simple tool (called a jig) can save a time and increase quality.  Even street sweepers have a stick with a nail in the end.  But for a Java developer, when they need to do something that takes 7 separate steps, you’re lucky if they’ll write them all down, much less make a tool to do it for them.

The first time I tried this, I automated the build for a software project.  It was a classic situation where there was only one person that could build the project, and it took lots of specialized knowledge, and it only got done about once a week.  If you didn’t get something into that build, you’d have to wait another week until the next one.

Fortunately, I had just read Jared Richardson’s Ship It, which talked about repeatable builds.  I automated the download and build out of the SCM, and made it so anybody would be able to build.  My boss said that was the best process improvement he’d seen in his career.  Of course, he was the one that spent a half-day each week putting together the build, so he was the happiest person of all.

Shortly thereafter, I increased the number of tests we were doing for an upgrade from 12 (two tests per person, six developers, all manual) to over 8,000.  We found a ton of bugs that traced back to the same cause, and a lot of little bugs that were special cases.  None of those were covered in the original 12 test cases.  In the end, the upgrade went smoothly and page generation time went from 3 minutes to 15 seconds.

One great book about automation is, The Productive Programmer by Neil Ford.  I save myself 3 hours a week by taking some of those ideas and putting them into everyday life.  Especially:

  • Know your IDE
  • Create your own launchpad
  • Automate repetitive tasks

It’s 5 years old, but the techniques are more about how to be productive, so they are still relevant.  If you were only going to read one book to make you a better programmer this year, I’d make it The Productive Programmer.

And there are other tools you can use to make things easier.  I’ve started using Maven for builds, because creating new boilerplate apps is fast and easy.  Launchy is a little software device that lets you type in what program to run, and even corrects your spelling.  Using documentation to document things you really need is a tenant of Agile development, but you’d never know it from how most people do Agile.  Saving those documents forever means I usually never use them, except for about twice a year, when I need something I thought I was done with.

Think about some things that you do that you can automate.  You might be surprised how much you can get done when you don’t have to do it yourself.