Sometimes the Tools of the Trade Take Time

November 13, 2013

I’m not a very good woodworker. I rush things. I have a general rule when I do work with wood and saws, I only work for about two to three hours at a time. If I try to work longer, I find myself getting anxious to finish. Not to quit for the day, but to end the project completely. Break out the duct tape, slap some paint on it, and call it done. An amazing ukulele this does not make.

The pressures to finish a project instead of get it right lead me to cut corners. One of the most disastrous I constantly struggle with is the waste of building a single purpose jig.

I say waste because that’s what it feels like. I have to make seven cuts to make six identical pieces. I have to build a framework to hold my wood against a stop block and provide a stable edge against which I can place the circular saw. I need seven cuts. In order to make those seven cuts I’m cutting four new pieces of wood. Then I have to attach them securely and precisely. Then I have to double check my work. And I still haven’t made cut one of the seven I need.

Another jig I made was to help place the screw holes on a set of cabinets I built for our kitchen. The handles of the two doors need to form a straight line. They also need to be evenly spaced from the center line where the doors meet. So I built a jig to hang over the door allowing me to quickly drill eight well-placed holes in doors I did not want to re-buy, re-saw, re-prime, and re-paint.

They take longer to build and use than just a quick measure and drill or a freehand saw cut. But they serve two purposes. One, they provide repeatability. And two, they provide assurance. And some times, that is worth all the effort.

In software, we have several jig-like things.  Unit Tests, Domain Specific Languages, Automated Acceptance Tests, Software Contracts, Code Generation, and Metaprogramming are all tools that often take more time to use than to solve the same problem without.  But the seventh or eigth time you use them, or when they are used to eliminate classes of bugs from your codebase.  Maybe all that time is worth it.