If I had six hours to cut a tree, I’d spend the first four sharpening my axe.
Abraham Lincoln

I’m currently working with a client helping them upgrade their systems to the most recent version of their software. Along the way, we’re refactoring and adding some functionality. The programs all have the ability to exchange configuration data via exporting and importing CSV files. In a perfect world, the data would line up between the programs. Obviously, it’s not a perfect world.

So I whipped out my trusty touch typing skills, loaded a handful exchange files into various programs such as Excel(tm) and SlickEdit(tm) and started blasting away. Ed volunteered to work on the next section of files that needed to be rearranged. The task was tedious and we worked in relative silence. An hour or so later, I completed my section and was ready to test.

We compared our strategies for accomplishing the task. While I was “slaying the monster”, Ed had been trying to figure out how to use Excel’s built in functions to parse the data elements to automatically generate two values that we needed. Using Excel’s built in functions to do string manipulation is like cutting a steak with a dull axe. It can be done, but it’s not a pretty sight.

I saw the forest, and all the work that needed to be done. Ed saw the trees, and noticed that our task would be easier if we could find a way to let the computer do the dull, error prone, highly repetitive tasks. We now have a simple (took less than an hour to write and test) little program that does just that. (No, it’s not Excel.)

There’s a handful of lessons in this story:

Working with other people can increase a solution’s quality. My way would have worked, eventually …