Today, I sat down and watched Tobias take control of my laptop and mangle my .vimrc file. They were some pretty instructing 40 minutes, where I just enjoyed seeing my terminal do all kinds of cool stuff it had never done before under my command. At one point, Tobias gave me a command to type in, and nothing happened. As soon as he retook control, he realized he had meant something else. And I heard the following phrase:

Sometimes, it’s hard to put into words some things I rely on muscle memory for.

It's true. Have you ever tried teaching someone how to ride a bicycle? I did. I tried to teach my wife how to ride a bike, and I ended up repeating “you have to feel it” a bunch of times. What. That must be the worst instruction ever, and it’s not that I didn’t want to teach her properly, it’s that I really couldn’t find another way to explain what I do when I’m on a bicycle. For some things, there’s just no way to replace good old practice. And I believe that is something that’s been missing in our industry. Luckily, it’s part of the metaphor that Software Craft builds upon.

The road to mastery

In older times, young people would leave their homes to learn a craft. They would live, eat and sleep at a master’s workshop, observing them, hearing them discuss their craft and overall learning and practicing. Once they had acquired a certain level of skill, they would go on to travel around, all whilst practicing their craft, learning different approaches and techniques. An aspiring Software Crafter must do exactly this. He must observe the masters, listen to their discussions and practice all of her skills.

I believe you can only learn to ride a bike, by riding a bike. I also believe that you can also learn to write good, quality code, by writing a lot of code. And sometimes, we have to repeat the same thing over and over before we can truly understand it. And that's entirely ok and expected. You never see a professional musician who doesn't practice. Why would we assume we're so different?

During our daily katas, I’ve noticed the effect of consistent practice on myself and my colleagues. The same code that used to take 10 minutes to write, has been narrowed down to 1 or 2 minutes. And it’s not like we write the same things over and over, it’s more that we now understand the inner workings of a problem that used to be closed to us. And now that we aren’t spending as much of our collective brainpower on those things, our minds are free to wander into other sort of solutions. Sometimes even in entirely different domains.

It’s a long road to mastery, without shortcuts. And everyone travels it differently. The one thing that’s true for every single one of us, is that we will never be able say there’s nothing left for us to learn. I find that both scary and exciting.

P.S: Due to popular demand, and by that I mean Timo asking about it, comments are now enabled. ⬇⬇⬇