Craftsmen know their tools

When programmers call themselves craftsmen or artisans, I can agree that we are. At the same time though, some of these programmers underestimate what craftsmanship actually means.

Let's make a comparison.

My younger brother is an apprentice wood worker, here's a picture of his shop:

To me this looks like chaos, but my brother manages to find his way around. Even better: he actually makes pretty and useful things.

Granted, he is still an apprentice, but I've been happily surprised by the things he has crafted up until now. I can imagine his skills will improve only more and more over time.

For example, take a look at this display thingy he made:

Or this clock:

He also made me some nice sound absorbing panels for my podcast studio at home:

The same way my brother is crafting things with wood, we are building websites and programs with code. I wonder if we have mastered our toolset like he has.

See, he isn't building all this stuff with his bare hands. He's using the right tools for the job. Have a look at some of the machines he's working with:

Or this one:

I've got no clue what these monstrosities do or how to use them — but my brother does.

He had to learn to work these tools. Not only did he need to know which button does what; he had learn how to apply specific techniques to these machines in order to cut and saw the wood as he wants.

He has a mentor and spends a considerate amount of time learning and improving his tools and techniques. It takes patience: he couldn't just dive in at the beginning, there is a learning curve to creating quality.

What is a programmer's equivalent? As we call ourselves craftsmen and artisans, can I assume we also know our tools inside and out?

Can I assume we dedicate time to properly learn how to work with those tools, how to improve our skillset on a day-by-day basis?

Does it seem like a detail to us? Do we think a simple saw gets us equally far as the big monster machine my brother is using?

Can I assume we know the value of our tools? Do we realise they help us be efficient; they simplify mundane tasks so that we can focus on core problems; they are a safeguard when we tend to make stupid mistakes?

Are those fair assumptions when we call ourselves craftsmen?

All these questions pop into my head when I hear people complain about how learning to use an IDE, setting up your local environment, properly learning version control or learning a framework; takes too much time.

What did you expect? In order to write good code, maintainable code, code you can be proud of; in order to do that, you need to master the right tools.

There are no shortcuts to this, you need to spend time learning.

I want to challenge you to think about how you use your tools. There might be opportunities, areas you can improve on. Be willing to spend time improving your skillset.

It's time well invested.

PS: if you're into wood working, be sure to check out my brother's Instagram!