A Fool With A Tool Is Still A Fool

A fool with a tool is still a fool

This is a a much heard quote in the IT world and it is of course true, but IMHO that is not the end of it.

There is more to this quote.
I would argue that:

A genius not using the correct tools is also a fool

You might get further than the fool with a tool because you have the mental skills to get further, but you will still be severely hampered by the lack of good tools.

So might we also say?

One gets nowhere with tools alone.

and

A fool is a fool and nothing will change that, least of all tools

On the other hand we also hear the following a lot…

Programming is a craft with Masters and Apprentices

There is even a Software Craftsmanship Manifesto explaining it.

So if we, as Software Craftsmen, allow for this can we then also compare ourselves with, for example, a carpenter?

Would a carpenter build a house with only a hammer and nails? I think not…

If all you have is a hammer, everything looks like a nail

A carpenter has a whole set of tools at his disposal for all kinds of things he has to do in order to get the work done. But a carpenter has also been an apprentice learning to craft with the help of these tools. A tool only has meaning if it serves a purpose and has been learned to use by the craftsman.

The Agile Manifesto for software development emphasises Individuals and interactions over processes and tools

This is logical because we are nothing if we only have the tool and not the skills. The Agile Manifesto does not say not to use tools.

A software craftsman creates software from the raw material called language. Lots of different kinds of raw material are available to the craftsman like Java, Kotlin, Scala, Python, C and lots more.

A software craftsman has to deal with the hardware on which his software runs, but the tools much more interesting for his trade are the tools used to craft the software.

Text editors, compilers, Integrated Development Environments, Continuous Integration systems, testing frameworks, etc. are all tools at the disposal of the software craftsman for moulding, testing and compiling his raw material. The level of mastery acquired by the craftsman will decide how well his end product will be put together. However without most of the tools mentioned it will be hard to do so in a productive, controlled, repeatable, improvable way.

Funnily enough the tools we use to make our lives better have been created with the same raw material we use for our own products, which makes us very special craftsmen :-)

So while we should indeed focus on the Individuals and interactions during the process of our craft because the knowledge how to build your product lies there, it would be stupid to ignore the need for good tools. It is also important to invest in getting to know your tools. Don’t let everything be a nail.

A small adjustment to the title of this rant might be

A fool with a tool is still a fool, but at least know your tools fool!

Though that hopefully will lead to much more discussion ….

Please do so in the comments section… I’d love it.

Ivo.