The Weary Travelers

A blog for computer scientists


Date: 2023-05-27
Author: Chris
Chris.png

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:

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 Effectiveness4Incorrectness 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 Elegance10That 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 Elegance11E.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.

To view the Giscus comment thread, enable Giscus and GitHub’s JavaScript or navigate to the specific discussion on Github.

Footnotes:

1

Har har.

2

Don’t answer that…

3

It makes an important distinction, but I don’t endorse its conclusions.

4

Incorrectness requires workarounds, which is ineffective.

5

One might say that New Jersey is the financial capital of tech debt.

6

The essay also has a wrong premise – that Elegance equates to Efficiency, which is not true in general.

7

As opposed to persuasive writing, etc…

8

Dead trees not withstanding the axe…

9

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.

10

That doesn’t make it a bad thing.

11

E.g. code golf is false Elegance.

12

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.