(Deliberate) practice makes perfect

Paul Murphy
Tech @ Domain
Published in
5 min readNov 21, 2018

Practice with your fingers and you need all day. Practice with your mind and you will do as much in one and a half hours. — Leopold Auer

This year I decided to organise a coding dojo with my co-workers. It’s something that I had seen other companies run and was interested to give it a go. What wasn’t immediately obvious to me at the outset were some of the benefits of running a coding dojo for our engineering team.

When it was suggested to me that I should write a blog post about our experience my initial thought was to write a how-to article for running a coding dojo. But what I felt was more important, was to talk about these additional benefits.

What is a coding dojo?

A dojo is a hall or space for immersive learning or meditation — wikipedia

Whilst the name dojo is traditionally associated with the field of martial arts, increasingly it is been used in other areas, such as software development. As the name implies a coding dojo is a place where developers go to practice and improve on their skills.

At each dojo meeting, typically held every fortnight, the team is presented with a programming challenge to solve; will spend around 15 to 20 minutes discussing the problem and possible solutions, before spending 1 to 2 hours coding. The problem should be solved using pair programming, with each pair allowed between 5 to 7 minutes to advance before rotating.

For more details on running a dojo, I recommend visiting the Coding Dojo website. I’ve also added some other good references below.

So I’ve discussed briefly what a coding dojo is, but why should you consider running a coding dojo? What are the benefits to you, as an organization and also as an engineer? To understand this I would like to briefly discuss motivation.

Motivation

Motivation is a surprisingly interesting topic and one that is not as well understood as you might think. I am nowhere near educated enough to talk about this topic, but if you do nothing else today then you should watch this short video; The surprising truth about what motivates us

Amazing, right? As mentioned in that video, studies have shown that the 3 factors that lead to better performance and personal satisfaction are Autonomy, Mastery and Purpose.

Mastery is our urge to get better at stuff. It’s the reason that engineers all over the world devote their time to open source projects, to hosting or speaking at meet-ups and signing up for online services like PluralSight and others. These people are driven by their desire to become masters of their craft — queue He-Man gif

So how does someone achieve mastery? And can anyone become a master, or do you need to have a god given talent? Well, as it turns out, talent is not given but earned through hard work and something which is referred to as “deliberate practice”.

So what is deliberate practice?

The differences between expert performers and normal adults reflect a life-long period of deliberate effort to improve performance in a specific domain

— K. Anders Ericsson

The easiest way to describe deliberate practice is to look at a real-world example which most of us will be able to relate to, and that example is Tiger Woods.

Woods has been seen to drop balls into a sand trap, step on them, and then practice shots from that near impossible lie. This is deliberate practice in motion; having already mastered shots from the sand trap, he is now practising the skill at a more challenging level with the intention of mastering. When the time comes for woods to make such a shot in a competition he will be ready, and onlookers will be truly amazed at this talent.

Great performers focus on very specific aspects of what they do until they are improved; then move onto the next aspect.

(Deliberate) Practice makes perfect

This what we try to replicate when running a coding dojo. Often times our day-to-day tasks can be repetitive and mundane, and much like driving a car, these tasks do not demand our focus or challenge our cognitive capacity. And so over time, an engineers learning will slow and ultimately plateau.

Avoiding this plateau, often referred to as the autonomous stage of learning, is key if we are to achieve mastery in our chosen field. Running a coding dojo can challenge software engineers in ways that they would not necessarily be challenged in their day to day roles.

In our first couple of sessions, we choose to focus on recursion, a skill which not all engineers would be comfortable with. As the solutions progressed members of the group who has mastered these techniques can guide the team to a more optimal solution, helping them to better understand the techniques and providing the feedback which is so crucial when learning.

But why would an organization want to do this?

We live in an economy which is increasingly based on human capital, and not on financial capital. It is the abilities of the people in an organization which determines it’s success or failure. Employees today are demanding that employers help make them better (more important than money).

So an organization which adopts these principles of great performance, and for developing the careers of its employees will increasingly be at an advantage when it comes to hiring new talent. In effect, these companies will have a “first-pick advantage”.

References

--

--