A design pattern I like (yes, I know that it has huge drawbacks, and ericlaw gets into some of them in his post on Batteries vs Bloat, like “Users cannot use a feature if they haven’t discovered it”), is this:
Have a simple interface with the most common settings and doodads, and
then also provide your about:config
, your Regedit, your .emacs
,
your User Script, your .zshrc
style more advanced level conf
settings.
I know that Donald Norman famously argued against this pattern in The Design of Everyday Things using the example of some stereo (or whatever it was) that looked simple on the outside but hid away some arguably pretty everyday stuff mixed into a complicated array of thingamajigs under a panel.
His main schtick is that every function should have one widget, a one-to-one mapping. And that’s great for everyday things, but not for systems. And arguably Emacs or a browser or even a VCR is a system. (I think some stereos are systems too.) The VCR I had in my first apt had a wonderful UX with easy&common button and weird power-user buttons on the back. The same pattern that was such a catastrophe on Norman’s stereo ended up being implemented better and worked better on the VCR. (My take is that that stereo had culled too much, i.e. been too trigger happy with what it moved behind the panel, while the VCR did a better job at making the front panel reasonably complete for basic stuff.)
Make easy things super easy and make unusual things possible albeit a bit “under the hood”. Yes, this risks falling into the “but they all use different 10%” trap but there’s hopefully a Pareto principle here where most people only need to go into the Cumbersome Jungle for a handful of things, or for nothing. Maybe among all those different 10%, there’s a core of stuff that most people do (editing in an editor, browsing in a browser, listening to music in a music player) and making that core more immediately accessible and uncluttered can be pretty good.
The English language is actually set up similarly. It has a couple of closed word classes, like articles and prepositions, (there’s not gonna be a new “the” any time soon) and a limitless amount of verbs, nouns and adjectives.
I’ve always liked the Alternate Hard and Soft Layers pattern and this reminds me of that in spirit if not technically. There is this curated interface but you also ship a loosey-goosey layer of “🤷🏻♀️ we trust you, go ham” flexibility that you can access if you just scrape the surface a little bit.