October 18, 2013

Practice makes perfect

A while ago a study attempted to pinpoint the relationship between repetition and quality. The backdrop was pottery. Pottery students were separated into two groups in the beginning of the term and were told that they would be graded differently. The first group would obtain good marks based on quantity and had to produce as many vases as they could during the term. The second group would be assessed solely on the quality of their work and should turn in a single vase in the end of the term.
When the term started, the quantity-grade students created as many vases as they could. Some were grotesque. But after a while they realised that there was a lot of time being wasted due to rejects and rework. They naturally created a rhythm to try and achieve a sustainable production pace.
The quality-grade students spent most of their time devising the best strategy, investigating techniques and producing plans and designs containing detailed descriptions of how they were going to do the killer vase.
At the end of the term the experiment revealed that the general quality of the quantity-graded students was actually better than the quality-graded ones. As a matter of fact some quality-graded students didn’t turn in a single vase! Through repetition students learned to focus on what gave them speed as well as what got in the way of quality. Because they could keep experimenting until they actually got the results they wanted they were not afraid of trying to get creative with their practices and processes. This result isn’t earth-shattering. As a matter of fact, it simply proves the ever present "practice makes perfect" cliché and, reflects the human need to iterate over and over in order to master a skill.

Now, let’s take this concept to software development. Teams must integrate, deploy, test and perform various other non-code related activities. When teams forfeit the chance to repeat and learn on such tasks they throw away the chance to master them. Agile teams that want to deliver quality products, fast, master the hard tasks early. Of course time can be a constraint and, in this case, manual execution rules repetition out. That's why we automate. High performance teams have good, well-thought-out Continuous Integration pipelines and invest in learning new skills and techniques that reduce time wasting. If your team has a Kanban wall, iterations and stand-ups but lacks the passion for improvement, automation or avoids dealing with tasks that are in the "too hard" basket, you're not being Agile, you're just doing agile. And you will fail.

1 comment: