What does "performant" mean?
I keep hearing it but nobody stops to explain why programmers keep using this odd word.
If you are in the field of software development, you’ll likely have heard someone utter the word “performant” in a meeting before. Chances are, you’d hear it at least a few times a week.
I’ve had 3 months away from work and when I came back, like fish out of water and now back, I started noticing this word being used by coworkers. I scribbled a note:
what do programmers mean when they say “performant”?
Here’s what I’ve learned from googling:
Up until at least 2011, the word wasn’t in the dictionary nor Google definitions
“Performant” does have a meaningful difference to words like fast, efficient, or powerful
Its rise in usage in English coincides nicely with the rise of the computer revolution in the 1960s
And now, some pictures from the web that illustrate the emotions around the adoption of this word…
And here is one of 70 comments left on a blog post called Performant isn’t a word by Jon Galloway where he laments the fact that the editors of his book told him that the word doesn’t exist and presumably expected him to remove it from his book…
Right, so that was an interesting ride through history via the internet. The key question remains, though: what do programmers mean when they say something is performant?
In my words, after googling for an hour and piecing it together in my mind:
A performant system is one that does well at what it is designed to do. It is fit-for-purpose. It is fast enough and reliable enough to satisfy the needs of its user base.
So what this should mean is that for a Weather API, it would be considered performant if:
it returns data on every request within a reasonable amount of time,
is always providing data as expected by users, and
reliably continues to return data as expected even when it’s a Sunday morning and the sky as seen through the window takes an inexplicable turn to grey and everyone is checking their Weather apps.
The considered outcome of optimising within constraints
Since performant is an adjective that describes systems, not just networked systems like the internet (which is mostly my domain), it’s useful to realise that it can also be used to talk about, say, computing-intensive simulations that help with planning spatial layout of objects in a construction site that have nothing to do with the browser:
In that paper, what’s interesting is that it brings to fore one of the chief conundrums that programmers face practically everyday: how good is good enough? From the paper’s abstract we get an idea for the need for a performant algorithm in this context:
Since there is theoretically an infinite number of possibilities for arranging objects on a production area, the planning task is to be seen as an optimization problem, whose solution requires an enormous amount of computing effort.
[…]
If a large-scale project is to be evaluated over the entire project period as part of a simulation study, this optimization problem often has to be solved multiple thousand, in some cases million times.
[…]
This indicates that the use of a lean algorithm for spatial scheduling is essential to ensure the usability and acceptance of simulation tools for large-scale projects in practice. However, this must not have a significant negative impact on the planning accuracy.
Despite the words “optimization problem” being used twice in that abstract, in the end, the goal is not to resolve the optimisation problem in the sense of making it as efficient, fast, and reliable as possible. The goal is to make the algorithm usable and acceptable to practitioners that will end up using it — that’s when the problem will be considered resolved.
I suspect that the great utility of this word to programmers is in its ability to force us to remember to consider our constraints and the users’ needs, then build the fit-for-purpose, not-overkill but not unreliable or too slow software solution.
David Schwartz from the English Language & Usage StackExchange forum, who I think lurks in that community but is also a programmer, says it well:
And so the "made-up" or "invalid" word performant was born. It allows developers to state with certainty that given resource constraints and expectations, including how much time the developer was given to solve the problem, the proposed solution is performant. It usually implies that performance goals were taken into account, but doesn't exaggerate by saying that it is the fastest solution possible.
So to put it a simple sentence, when programmers say something is performant, they are saying that it is acceptable or perhaps even well functioning. They do not mean it’s the best-performing. Neither are they mistaking the word for “performance.”