Excellent goal but way harder than people think. I would say it is not possible in the fullest.
Excellent goal but way harder than people think. I would say it is not possible in the fullest.
An example of this would be if a music composition
program has an easily-reached maximum song size because
the code monkey who wrote it used a 16-bit variable
instead of a 32-bit one. *While there are sometimes
limitations that cannot be overcome*, the actual code
written and the architecture used when it was written
should have as little effect as possible on what the user
sees and works with when using your software.
(emphasis mine)I think it might be better rephrased as:
1) Don't add unnecessary constraints (or: Don't prioritise efficiency/etc. over the interface).
and
2) A good interface abstracts away technical problems, rather than presenting them in a different form.
There's also the aspects of form follows function, and mechanical sympathy. The use of a tool should strongly guide its shape and design, and similarly, a user should be able to develop an intuition about what the tool is good for and what it's not good for, so they can use it to maximum effectiveness, and not be frustrated when it can't cope with a problem it's not designed for.
Spolsky talked about it 16 years ago:
https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-a...
KDE/Gnome are much more than implementation details: writing a program for either is using a certain design languages and sets of UX rules, and those are user-visible.
Classic example from when iOS/macOS had manual reference counting: fixing an over-retain bug in the framework causes the app with an over-release bug to crash.
Even more extreme example: https://twitter.com/gparker/status/1050903609142009856?s=20
The implementation will shine through sometimes, or will be (easily) detectable via "side-channel attacks", e.g. an interface feature can be slow due to an implementation.
OTOH this allows to upgrade and entirely change the implementation without affecting the user interface, or at least while keeping it largely backwards-compatible.