In the software world, yes. The question we should be asking is "Does this product need a touchscreen / app / web interface?" There is no "minimal" way to invoke the efforts of half of the world's FOSS (and other) software developers so that you can have a "beautifully" animated button to dispense coffee.
As a software engineer who personally wrestles with this conundrum on a daily basis, I'd love to set up a "you don't need software" design agency.
Sign me up!
If it helps, I have an large collection of antique and vintage knobs, switches, pots, buttons, and sliders. ;)
Of course it is written for other people, at least if your future self counts as another person. Or is it write-once-never-look-at-it-again code? Then yes, but that's rare.
True to some extent I guess. But in my experience “hipster perfectionism” is also a fantasy.
It’s easy to think that if we make the user experience exactly the users (or in most cases actually some product manager) wants it then we’ll have massive traction. In reality that’s rarely what happens. In many cases I would say nothing at all happens.
As an example I ran the analytics group at a moderately successful startup a few years back. The engineering team put in massive effort in a new release that would be so much more polished and easier to use. But when we looked at the numbers a few months later it was impossible to discern any meaningful change around the deploy date. I didn’t say anything about this to the higher ups of course, and neither did anybody else.
External constraints can be the driving force here - I have a project which involves firmware running on a soft CPU in an FPGA. I'm targetting several different devices, but the project will no longer fit the smallest device if my firmware (code, working RAM and stack combined) goes over 12 kilobytes. In the middle of working on this project I took delivery of a new workgroup printer at work, the remote monitoring software for which was a 1.5 gigabyte download. And apparently we live in a world that sees nothing wrong with that!
1. Graphics and videos. Nice, high res, smooth animations showing how to operate the printer.
2. Frameworks. Because Qt libraries don't come with Windows.
3. Various dependencies
In turn, each of those explodes due to human needs and convenience. Eg, you have an animation that says "Press here" in text. You sell the printer internationally. You'll probably have 20 different versions of it in every supported language.
A large amount of complexity works down to human convenience -- Unicode requires large fonts and complex software
Some is because the platform is what it is. Windows doesn't have a package manager, so it can't pull in libqt5 for you when you try to install an app -- so it has to come with the app.
We've also agreed that every app shall bundle its own dependencies, because DLL hell was really hell, and trying to have one system-wide copy wasn't working.
For example, Calibre is around 350 MiB. It embeds Qt, Chromium, Python and ICU, is fully localised, and has rather a lot of functionality.
Video content can be fairly large, but a high-quality 1080p encode is around 500 KiB/s. Can you really pack an hour of instructional videos into some printer software?
I can think of a couple ways that you could cross the 1 GiB mark, but none that would involve sane engineering choices or "trying and rejecting" other options.
Having to ship instructional assets in multiple (human) languages is a fair point, and one I hadn't considered - though in this particular case there are no movies or animations that I've seen.
Most of Dale's points are correct, though - but that doesn't make it a sane state of affairs, and it saddens me that we just accept it with a sense of dejected resignation instead of trying to do better. I had (obviously naively!) expected the the microchip shortage to prompt a massive drive to extract every bit of value from the ones already in service.
Suppose you want to make a new graphics app. Do you want users to easily create beautifully typeset documents? Then you'll have to do a ton of schleppy hard work to give the user the option to bend/morph/scale graphics to their taste. A "minimalist" graphics program isn't any good because then the designer won't be able to create what they have in their mind.
Code isn't written for other people. Code is written so the end user ends up with a great product that solves their problems. If you're lucky the code is minimalistic and beautiful, but usually you'll have to struggle through one schleppy problem after another to give users the features and performance they desire.