Here are the lessons in simplicity I think I wanted to see tech learn.
Today, “simple” is one of those words you put out there like “agile”, and it feels it lost meaning when it became a marketing term and less of a real concept. Overuse of a word can sometimes consume the concept.
If there was anything I helped people adopt, it was unfortunately YAMLOps and not minimalism. YAML for Ansible wasn’t a bad move, YAML is itself great, but the other adaptations of it feel like they missed the point of it needing to be shallow and readable for humans, like a grocery list. So, my list…
Simple products should…
have the least number of moving parts.
be very quick and easy and enjoyable to learn
be easy to explain to others
not require that you learn 3-4 other products first
not try to make the authors or users feel smart
not exaggerate their importance
not attempt to extend their usage into areas where they are not an ideal solution
be mostly concerned about the user surface area - the CLI, the GUI, the API, more so than the internals
be easy to remember and should not require glancing at the documentation very often
be fun to use and never frustrating
be designed to help users first and make money second
say no more than yes, but give reasons
not try to be all things to everyone
have their simplicity be evident by their nature and how they describe themselves, not their marketing that they are simple.
not require you to buy other products to make them complete
be very concerned with quality
be very internally consistent
Maybe simplicity can’t be understood through looking at tech alone. I believe I’ve said this, but I would think it would be good if tech crafted a sense of aesthetics more.
For instance, do you like midcentury modern furniture, or bauhaus architecture? How about industrial design? What about Mondrian’s paintings? Those are traditionally simple things.
What are simple machines? Not the latest cloud orchestrator. The lever, the pulley, the inclined plane.
What is a simple musical composition? Is it shredding progressive metal, or a singer/songwriter with a piano? (You can like both).
What’s a simple meal? A well cooked steak maybe (sorry vegetarians), but not a $400 prix fixe 12-course meal in Vegas (you can still like both).
What’s a simple algorithm to solve a maze? Not a neural net - it’s the right-hand rule.
We don’t have to like all of the things above, but to understand simple, we should have an appreciation of what simple means in other problem domains.
When things become marketing labels (everything “installs in minutes!” these days) we might become jaded and stop trying.
In many ways, I think I prefer to subtract and not add. I’m not sure that’s a common viewpoint. Business wants to add even when it defeats the goals of design. Things always grow until something else comes along and has to be smaller, and than that smaller alternative seems to almost always be better.
It’s another one of those things - growing complexity - that changes on such a slow time scale that you see it more the more hindsight you have access to. Some things few even notice and have never been re-simplified. That our cloud systems are not better, and if not for massive advances in processor design and parallelism, they would barely be able to stay afloat. Indeed, our massive cloud bills should tell us something when the same workloads could run on just a handful of servers ages ago. Our processors should be god-like compared to what we had decades ago, but do we really feel that way when we just running a chat app on our desktop eats up all our RAM?
We should design with more of a sense of what simplicity really means, and in this tech landscape where nothing is simple, we may need to find our touchstones somewhere else if we can’t remember the way things used to be.
Simplicity is about the aesthetics of uncomplicated design. Design seems to be something people just associate with user interfaces today (which seldom are simple anyhow), and thus the term seems meaningless when we can’t find any examples.
When I look at a tool that was supposed to be simple and now it’s an entire ecosystem, I am disappointed in that the claims that these things are “simple” are teaching people the wrong lessons and getting people to be jaded about the concept.
Software engineering is super young, maybe this is a lesson it will learn in another hundred years. I don’t know. Everything just feels bloated and organically evolved, very few things feel amazing and new - just other things stacked on top of other things to fill in some holes.
Too much profit seeking and time pressure, not enough appreciation on design? I don’t know.