A brief note on tools
Lately, I've been doing a lot of home renovation tasks. Hanging cabinet hardware, sanding, cutting and staining wood, hanging lights, and much more. Spending more time building things in the real world has refreshed my perspective on the tools we rely on to accomplish things.
Here's an example: I recently had to make a few modifications to our fence to make sure the dogs don't get out. Through this process, I needed to cut wood -- nothing fancy, just standard cuts of 2x4's. I also needed to drill new holes and remove old screws.
The tools required here are, abstractly:
- A tool that has the ability to make relatively smooth cuts of wood
- A tool that can drill holes in wood
- A tool that can put screws or nails into wood
To make basic cuts of wood, there are two options, a hand saw, or a power saw. Both will do an adequate job at cutting the wood, but one will require far more time and effort than the other (hint: it's the handsaw). Luckily, I picked up a decent powersaw a few months back, so making those cuts will take seconds, not minutes. And I'll exert almost no effort, compared to manually sawing the wood.
Now, drilling holes. Believe it or not, people did drill holes before power drills, and they did it with one of these:
Now, obviously, I have a power drill. But at some point, once the use of my drill became second nature, once I had taken it for granted, it hit me: It wasn't so long ago that people were forced to use the manual drill. They had no other tool. Nothing better existed. It had not yet been invented.
We're not really talking about wood, are we?
The question I'd like to pose is: in software engineering, are we in the age of the manual drill, or the power drill?
On the whole, sadly, I think we still live in an era of manual drills. Many of us still write code with
text editors that were conceived in the 1970's. In the world's most widely used language, we still have errors like this:
Obviously, some toolkits are more advanced than others. In my opinion, the iOS SDK and toolkit (xcode, interface builder, etc) are way ahead of the web application development toolkit.
But it's not about IDE vs text editor -- that flame war entirely misses the point. It's not about whether we'd rather write code in a text editor or an IDE (though, that's certainly part of it). Just like my fence, I wasn't cutting wood for the fun of it, I was fixing the fence (again, cutting wood was part of that process). Instead, we should be focused on which tools make us most effective and efficient at creating products.
Personaly, I hope we're entering the age of the power drill:
Thanks to Brent Dillingham for reviewing this post.