In search of perfection
I knew Flynn was in trouble the moment he created a program Clu 2 as his doppleganger. You see, the purpose of Clu 2 was to create the perfect system.
Flynn, a programmer failed to understand the struggle between perfection and quality. I'm guessing he didn't spend a lot of time in the test team!
Of course, none of this makes any sense unless you have watched TRON the Legacy.
Warning! I'm giving a bit of the plot away below...
In Tron Legacy, Flynn a programmer realises that he can't spend all of his time in(yes in) his computer, so he creates Clu 2, a program that will create the perfect system for him. Unfortunately, the perfect system starts to wipe out everything that it sees as imperfect and pretty soon our world as we know it is being threatened. I know, its a pretty silly storyline, still the effects were great and it got the thumbs up from the 7 & 9 yr old critics.
What is perfection? Perfection, as I understand it, is to be without fault or defect. A pretty tall ask for software. And Quality? Well, that is value to some person.¹
Both Quality and Perfection are subjective if you think about it. For example, art critics describe the Mona Lisa smile as the perfect smile. But in my mind, that small measly semi grin is far from perfect.
So, what is the difference between Quality and Perfection? Perhaps quality is more realistic, more humane? They appear to be related in some way. When some-one says something is perfect, are they perhaps saying that the quality is perfect?
Maybe perfection is a state in the quality model? A Utopian ideal that perhaps is something to aspire to as opposed to achieve?
At the end of the movie, Fynn realises that perfection(his son) was in front of him all the time (I told you the storyline was dodgy). I guess at that moment in time, blinded by emotion, his son was perfection to him. I suspect though, like any parent with inattentional blindness that moment quickly passes.
So perfection and quality are dependent on time too. I think Markus Gärtner tweeted about that once.
How do we deal with these concepts in software testing? Here's how I think about it:
Perfection is a great goal to aspire to, but my expectation is quality.²
I think this is a healthy way to look at it. For one thing, it stops me from asking for unrealistic demands from myself and others.
I do this by expecting good enough testing³.
I guess we all fall into this trap of perfection sometimes. its easy to demand perfection in other or systems yet excuse the imperfect in ourselves. In software testing, we expect perfection from developers yet don't accept or recognise our own failures.
"What do you mean its not a bug? Of course it is!".
Expecting perfection in yourself is another trap and can set you up for some major life disappointments. A more realistic approach I think is to aspire for perfection but try to expect something a bit more realistic?Well, I try anyhow!
We need to combine this reality with a good dose of humility about our own failures and failures in others.
Then we will begin treating people with respect, a little more understanding, and perhaps then, our software will be more about the people, less about ourselves.
¹ Weinberg: "Quality is value to some person(s)"
² Read Secrets of a Buccaneer Scholar" for more on this.
³“Good Enough testing is the process of developing a sufficient assessment of quality, at a reasonable cost, to enable wise and timely decisions to be made concerning the product..