The three E’s: Elegant, Efficient and Effective
Years ago I heard an aphorism that went,
Any run-of-the-mill engineer can design something which is elegant. A good engineer designs systems to be efficient. A great engineer designs them to be effective.
That turns out to be Akin’s 36th law of spacecraft design, and indeed I did hear it while lurking on a rocketry forum. Since then I keep thinking about what that pithy expression really means, especially for computer scientists who have little interest (as such) in rocketry and spacecraft.
First things first – what does Elegant
even mean? Colloquially it means “simple”, “graceful”, and sometimes
“beautiful”. We have this word in software design too, and it usually means accomplishing a task with fewer lines of
code, fewer external interactions, fewer dependencies, etc. In short, it has something to do with brevity1Har
har.. So why is that not the same as Efficient
?
Efficient
means consuming fewer resources for the same amount of work being accomplished, and that’s the clue: there’s
a different notion of resources than just lines of code etc. What you minimize to make something Elegant
has to do with
your work, and that’s why any run-of-the-mill engineer can make Elegant
designs – people are born lazy and
self-absorbed, and anything else takes years of learning.
So the first difference is about shifting your perspective from optimizing your own process to optimizing the process of
the thing you’re building. But then why is that not the same as Effective
? Does that mean Efficient
systems don’t
work somehow?
Why do we build things in the first place, anyway? Just to measure them and compete with our peers?2Don’t answer
that… Of course not. We create things because we want them to be useful to someone, and clearly Effective
things are
better at that somehow.
The realization that led me to write this post is that the second difference is ultimately the same as the first:
Effective
means optimizing not your own work, and not the system’s work, but the end user’s work. This too requires
yet another shift of perspective, from yourself, to the design, to the person using it.
So there you have it:
- An
Elegant
system is one where you consume the least of your resources in building it. - An
Efficient
system is one where it consumes the least of its resources in operating. - An
Effective
system is one where the end user consumes the least of their resources in using it.
Progressing each rung of the ladder requires internalizing a shift in perspective, methods, and compromises. Sometimes, in order to save the end user work, you have to build something that’s a bit less efficient, and sometimes it’s a whole lot more work for you. Sometimes.
That’s it. That’s the idea.
Applications
Eric Raymond’s
Rules of Usability
are an excellent introduction to Effectiveness
in software. Here are a few other examples in the wild.
West Coast vs. New Jersey
If you haven’t read the
Worse is Better essay, then I recommend it
highly3It makes an important distinction, but I don’t endorse its conclusions..
The West Coast / MIT attitude prioritizes correctness and simplicity to the user – which I equate with Effectiveness
4Incorrectness requires workarounds, which is ineffective..
The New Jersey style prioritizes simplicity of implementation – which is Elegance
by definition5One might say that New Jersey is the financial capital of
tech debt.. Its proponents figure it’s more Effective
to ship something than to ship nothing at all, which is fair, but to
argue that that’s always the dominating concern is to say no truly Effective
things have ever shipped6The essay also has a wrong premise – that Elegance
equates to Efficiency
, which is not true in general..
Academic and technical writing
When writing with the intent of actually being understood7As opposed to persuasive writing, etc…, there’s
little notion of Efficiency
because there’s hardly any system to run8Dead trees not withstanding the axe…,
but there are identifiable notions of Elegance
and Effectiveness
. Counterintuitively, Elegance
doesn’t mean
writing less, it means editing less and thinking less9In researching this, I recalled a quote about writing a 7 page letter due to not having enough time to write a 3
page letter. It turns out that there are
many such quotes.. An Effectively
written document uses its space to say what needs to be said without saying anything that doesn’t, in
an order that facilitates understanding.
False virtues
Each of these three virtues is defined by minimizing something, which can have wrong accounting, which implies the existence of false virtues. I give some common examples here, which are neither exhaustive nor definitive.
False Elegance
If someone creates an Effective
tool, it will make their end users’ work magically appear to be more Elegant
. Using
an Effective
tool is false Elegance
10That doesn’t make it a bad thing., and in fact people often refer to such
tools as being “elegant” themselves.
Minimizing the apparent work that you do while actually thinking hard about how to make it seem that way is also false
Elegance
11E.g. code golf is false Elegance
..
Doing the work for something and then going back over it to make it Elegant
after the fact is not false Elegance
,
but just pointless Elegance
.
False Efficiency
Building a system that reduces its workload by creating a
negative externality for someone else is false Efficiency
,
unless harming or disrupting them is the point.
There are a few ways of measuring Efficiency
– for instance, consuming fewer resources, vs. doing less of
whatever it does. In almost all cases these two coincide, but if there is a difference, then doing less at the expense
of consuming more is also false Efficiency
.
False Effectiveness
Sometimes we spot an opportunity to reduce the end users’ workload, but at the cost of making them do some setup work12I call this the Glorious 15 minutes problem – if you’re not careful you can end up in a situation where, in order
to accomplish a day’s work in 15 minutes, you spend a day and a half doing prep work. But it will be a glorious 15
minutes.. Imposing a setup cost that ends up not amortizing below the total work it saves is false Effectiveness
.
Failing to understand the users’ workflows, and optimizing something else is also false Effectiveness
.
Comments
Comments can be left on twitter, mastodon, as well as below, so have at it.
New post!
— The Weary Travelers blog (@wearyTravlrsBlg) May 27, 2023
Idea: What does Effective really mean?https://t.co/GXP8s8cE8g
Reply here if you have comments.
Footnotes:
Har har.
Don’t answer that…
It makes an important distinction, but I don’t endorse its conclusions.
Incorrectness requires workarounds, which is ineffective.
The essay also has a wrong premise – that Elegance
equates to Efficiency
, which is not true in general.
As opposed to persuasive writing, etc…
Dead trees not withstanding the axe…
In researching this, I recalled a quote about writing a 7 page letter due to not having enough time to write a 3 page letter. It turns out that there are many such quotes.
That doesn’t make it a bad thing.
I call this the Glorious 15 minutes problem – if you’re not careful you can end up in a situation where, in order to accomplish a day’s work in 15 minutes, you spend a day and a half doing prep work. But it will be a glorious 15 minutes.