Creating a Performant System

Custom Graphs

“Hmmm, how can I make a system more Performant….?” .  I was tasked recently with making a fairly large system “More Performant” and I thought – what is a Performant system?  I’ve come across the term a fair bit recently and everyone has a slightly different view of what Performant is.   If everyone has a different perspective and I can’t measure then how can I quantify a system being performant  ….. It bothered me.

Here are some definitions I found:  “Meeting system needs adequately”,  “Scales well and is efficient”,   “Performs well under load” …  most seemed loose, subjective and open to interpretation, particularly when different stakeholders have different objectives.  The underbelly of most definitions seems to be “Make it quicker, we are concerned it’s going to hack off our customers”.

Defining a Performant Score:

How can I decide that a system is more Performant than another and objectively compare to another system that may be completely different?  How do we factor in the reliability of a system?  In short, how can I define and measure if a system is Performant? Here’s a first stab…

For me it’s more than the conventional definition of speed, A Performant system boils down to this:

Performant Value = function: (Responsiveness x Reliability x Usability)

A perfectly Performant system will score 1, which is impossible as there is always an element that can be improved.

Responsiveness = function: (User Speed x User Speed under Load x … other load related activities)  (Max Score 1)

Reliability = function: (Functional Defects x Uptime x resilience x failover ability x …..  ) (Max Score 1)

Usability = function: (Ability of User to complete a desired task in the shortest amount of time x Any other relevant factors)  (Max Score 1)

Note: Attribute’s are scored on a scale of 0 -> 1. A value of 1 means an attribute is impossible to improve.

Each of the main attributes will consist of different weightings and variables for different type of systems e.g. Weight & battery life may be added as attributes for Usability for hardware devices such as tablets.

The only software system that I can think of that may approach a Performant Score of 1 are Aircraft Control systems.

Here is my take on the three main attributes:

A system that scores highly only in Responsiveness will result in high user engagement.

A system that scores highly in both Responsiveness & Reliability will endear loyalty.

A system that scores highly hgh information in Responsiveness & Reliability & Usability with result in Commitment & Respect aka LOVE (yes I said that).

Here’s a thought: When MS Vista was released, it was considered ‘Performant’ by some –  Imagine if they used the above formula to measure?  I’m sure there is a high chance it would have been less performant than XP.   This to me perfectly captures why a more rigid definition is important. It creates a common language and communicates in a clear and measurable way.

The above definition of Performant looks pretty powerful, it can now be an objective measure of how we would emotionally impact an end user.  e.g. Are Apple devices more performant than MS devices?

Does this definition make sense? Lets look at this in reverse “My system is not performant” generally means the system is beginning to hack people off.  So I think I’m in the right area.   We can also use the Performant score to measure the competitions weaknesses and concentrate on making a product better in those areas.

So back to reality, when a client asks me to make a system more performant – I don’t just think about increasing speed, scalability and capacity pinch points.  I also look at reliability.  This is often overlooked – and I can have difficulty making a customer view reliability as a cost worth paying to make a system more performant. (Link here about  Reliability and Performant).  The problem with reliability is sometimes it just isn’t visible enough until its becomes a peformaant issue.

Usability is something I rarely get directly involved in (But would like to) – this is one of the most overlooked aspects of systems, I’ve witnessed many great technologies fail/lose to inferior ones because of usability aspects.  A problem solved is not effective if it isn’t easily accessible to a the target user.

Making A System More Performant

So that’s my first stab at a most robust definition of a “Performant System”.   With the above definition a Performant system can now:

  1. Objectively be measured
  2. Compared to rivals in a less subjective way
  3. Be used as a generic measure to compare different systems
  4. Can be a measure of user stickiness or commitment
  5. Produce comparisons against competitors and provide weaknesses 

…and with a stronger definition of Performant I can now meaningfully answer the question “How can I make a system more Perfomant?”

Jason

You may also like:

Performant Anti-Patterns 

Monitoring Cache Performance 

Performance Testing is Hitting the Wall 

Performance By Design – an Agile Approach 

Leave a Reply

Your email address will not be published. Required fields are marked *