Good Enough (Perfectly Applied)

Good Enough (Perfectly Applied)

This is a series of blogs posts tagged quality hack. Quality Hack is a phrase I’ve coined to emphasise the importance of focusing on delivering “good enough” software, and embracing the cult of imperfection. If you wish to contribute a post, contact me either on twitter, by comment below, or email

Recovering Perfectionist

I’m a recovering perfectionist. For instance, it took me an hour to think and rewrite that first sentence. Why recovering? I’m a perfectionist and I’m aware that this isn’t always healthy. For me, perfectionism is less about ‘being perfect’ and more about ‘being in control’. Its my attempt to make everything work out the way I want.

And while perfection can help us achieve a great deal and complete work we are proud of, it can come at a great cost.

Aiming for perfection is not great for anyone’s mental health. I’m my own worst critic and an expert at identifying how I screwed up on this or that.  Focusing on what is not, rather than what could be.

Perfectionism can be poison in relationships too. With high and unreasonable expectations comes inevitable fall out creating distance between those you love.

Work wise it can be a problem too. A perfectionist doesn’t stop at good enough leading to stress, high anxiety and burnout.

There’s benefits to being a perfectionist. It helps me achieve my goals, giving me clarity. It encourages me to continue, even when the outlook is grim.

As a recovering perfectionist I know I needed to seek out alternative viewpoints. Where else but twitter?

Your views – its good & bad

I got some great replies! On a positive note, Angie Jones embraces  perfectionism, seeing it as a driver to great work. I feel this too.

Many perceived perfectionism as negative.

It’s hard to collaborate when you’re a perfectionist. You’re unreasonable expectations means its rare you and those around you to succeed. Perfectionists tend to isolate themselves from others in order to control the outcome. Not great when software development is a collaborative endeavour.

Our achievements are tied so closely to our own worth, we tend to take feedback poorly. We see feedback as a sign of our own personal failure as opposed to an opportunity to learn something new. This makes it hard for us to recover and bounce back over a perceived ‘failure’.

Perfectionists tend to be slightly myopic with a fixed view of how things should be. As a result we tend to avoid seeking other people’s point of view, especially if they are different to our own.

On the face of it, Software Testing is a great profession for perfectionists. People want great software, and we help identify flawed. Who better to find flaws than perfectionists?

Software Testing  & Perfectionists

However we make great software testers!! Who better than to find flawed software than a perfectionist!  Who better to advocate for quality than someone with the highest expectations? But dig deeper, and you find that even here, perfectionism can hinder quality more than they improve it. For instance:

  • We become fixated on doing things in a certain way and are reluctant to open up to new ideas, especially if they come from outside of testing
  • We sometimes are reluctant to let go and release ‘good enough’ software
  • We are reluctant to learn new skills for fear of being seen as ‘not good enough’

Bill Matthews had some good insights:

Worse is Better

In 1989, Richard P. Gabriel  wrote an essay, worse is better . In contrast to the MIT approach which is to get all things right, Richard suggested an alternative worse-is-better philosophy:

  • Simplicity—the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface.
  • Simplicity is the most important consideration in a design.
  • Correctness—the design must be correct in all observable aspects. It is slightly better to be simple than correct.
  • Consistency—the design must not be overly inconsistent. Consistency can be sacrificed for simplicity in some cases, but it is better to drop those parts of the design that deal with less common circumstances than to introduce either implementational complexity or inconsistency.
  • Completeness—the design must cover as many important situations as is practical. All reasonably expected cases should be covered. Completeness can be sacrificed in favor of any other quality. In fact, completeness must sacrificed whenever implementation simplicity is jeopardised. Consistency can be sacrificed to achieve completeness if simplicity is retained; especially worthless is consistency of interface.

Recovering Perfectionist Tips

If you, like me are a recovering perfectionist, you, like me, will have found some tricks and techniques to help you along this journey.

For instance you may;

  • Actively seek out alternative view points to help you balance your ‘one brilliant solution’.
  • Limit your WIP that forces you to take healthy breaks away from work
  • Take a fresh look at friends and family outside of tech and make an effort to reconnect
  • Meditate – breath when that feeling of lack of control falls on you and you panic when you think its not going to be done on time
  • Mediate and focus on gratitude and the good things around you
  • Ask for feedback often to help build your resilience muscle

Being a perfectionist can be extremely rewarding in that you get so much stuff done. And that can feel great. Like Angie says, it can drive you to achieve truly wonderful things. I bet the pyramids were thought up by a perfectionist. But it can have its drawback and it’s wise to keep those perfectionist tendencies in check.

And that should be ‘good enough’

More on on perfectionism and work

If you like this read another post on perfectionism

Perfect Software Testing for Perfect Software
Part of the purpose of Software Testing is to try and achieve perfect software. But perfect software does not (perhaps cannot) exist.