To start my blog off just right, I thought I'll take an especially nice topic: The tool metaphor as it's often used in the Software Craftsmanship community!
When people talk about Software Craftsmanship it usually doesn't take long for the tool metaphor to come up. Just yesterday, Markus Gärtner tweeted the following
Like a craftsman can choose which hammer to use, people in the software world should pick their own tools as they see fit. — Markus Gärtner (@mgaertne) February 7, 2013
Sounds very reasonable at first glance.
Craftsmen are usually proud of their tool mastery, and it's considered rude to question the Craftsman's choice of tools. Hey, we know what we are doing!
However in some software projects, especially in large enterprise projects, it's quite common, that a certain set of tools is set in stone from the get-go1. So proper Software Craftsmen are usually offended that they're not allowed to use "the best tool for the job" in such projects. Sometimes even the professionalism of these projects is questioned.
While my general sentiment is with Markus' above statement, I find it harmful to stress this metaphor too strongly.
Because it's basically comparing apples to oranges.
Whenever a carpenter chooses a hammer for a task, his/her choice is easily revertible and has no long-term effects, apart from the end-product's quality.
In software projects however, a tool choice can have very profound and long-lasting consequences, and is usually not easily revertible.
One of the most basic decisions in a software project, is the programming languages used. And this is unquestionably a decision that's one of the hardest to revert.
Think a little about it, the next time you tell colleagues or an audience about the "right tool for the job" and how Craftsmen should always be able to choose their tools.
The question of how this comes about and whether this is sensible, is enough flamewar-material to make the sun look like a bonfire. ↩