Quantity vs Quality Dichotomy

I have been following Simple Programmer for a few months now, and he recently posted a vlog entitled Quantity vs Quality is an Illusion.  This got me thinking about my beliefs on this subject.

Practice makes perfect, right?

That depends on how you are practicing.  Let’s take a look at the following two stories to illustrate my point.

Blind Repetition and the Pie Maker

Let’s take a look at Joe.  Joe is a pie maker.  He decided to open up a shop selling pies and gets up every morning and makes 10 apple pies.  Joe doesn’t taste the pies, he simply ships them off to some remote part of the world and gets the money.  Joe has no way to get feedback on the quality of his pies, but he stays in business by shipping them off to the pie-less scientists of Antarctica.

As Joe continues to make more pies, he may become more and more efficient at making pies as the movements become second nature, but his first pie is no different than his 100th which is no different than his 100,000th.

Deliberate Practice and the Pie Maker

Now, let’s meet Jane.  Jane is also a pie maker.  She decided to open up a shop selling pies and gets up every morning and makes 10 apple pies.  Jane tries a slice of one of the pies every morning to make sure they are coming out good.  She also asks her customers to give her feedback on her pies.

Jane takes the feedback from her tastings and from her customers and tweaks the recipe. She repeats this process over and over.

As Jane continues to make more pies, she may become more efficient at making pies as the movements become second nature.  Her 100th pie is certainly better than her first, and her 100,000th pie is even better.

As you can see, Jane’s work quality is improving and Joe’s is not.  Jane is looking at what she has done and trying new things in order to make her pies better and better.  Joe may be getting faster, and will likely have improved his speed more than Jane, but that is not the same thing as quality.

Programmer practice

A lot of people have been pushing the idea of code katas, or koans for a while now. While I haven’t taken the time to do any of these (I know, shame on me), I can see a lot of value in them.

These exercises are small problems that we should be able to solve in a couple of hours time.  After completing the exercise, you should take time to reflect on what worked well, and what didn’t.  Think about how you could have solved it differently, and then throw it all away.

Doing these exercises help build up our level of expertise and can make some things become second nature (thus increasing our speed).  Some studies suggest that it takes 10,000 hours of practice (deliberate practice) to become an expert.  Doing these allows us to get more time in toward that, and allows us to try out some new technologies that we don’t dare try in production!

Pushing quantity impacts quality

I agree, that as we practice a skill, be it a knowledge skill or a manual skill, we will get faster at it.  Our quantity will go up and our quality can stay the same, or even improve.  This takes time.

However, I believe that when we are pushed to do something faster than normal, quality will suffer.  We will pay less attention to the small details, less time polishing that new feature, less time testing the edge cases, less time thinking about side effects.

There will be times when we are pushed to do things more quickly than we would like.  When that happens, we should have a serious discussion with the business to understand what the minimal feature set needs to be.  It is our responsibility, as professionals, to ensure that the business understands the cost of doing things more quickly, and try to negotiate some time after the release to go back and ensure that the corners that were cut are repaired before moving forward.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s