* The software can collect data about the user.
* The software can prevent repairability by the user.
* The software can enforce obsolenscence (see the absurdity of smart TVs: an expensive display that can last for 20 years bundled with a super cheap computer that is obsolete in 2).
* The software can limit the user's options, in the manufacturer's favor.
Simplicity is a means to an end. There's no point in a "simpler" solution if it's more expensive and harder to maintain.
> Or is it that writing some code to glue together off-the-shelf parts is cheaper and easier than designing and manufacturing a giant machine?
Exactly.
Good engineering is about meeting the client's needs, not about showing off your own virtuosity. Too many on HN seem to forget that.
Even if it comes out as equally difficult to maintain.
That along with lack of preview or spellcheck, scroll-away-from-post mechanics, and tiny edit boxes, are my kryptonite.
Occasionally an amusing typo emerges, though not sufficient to compensate for the pain.
Personal case in point. I've been hacking together some automated plant watering systems around my house. My initial thought was to have moisture detectors, Raspberry Pi, etc. I ended up just empirically figuring out how many seconds per day I needed to turn on the pump and that was good enough and a lot simpler/more reliable.
See how much crap do you have to install before using some modern js framework
For some others, you need to use an Arduino to make a led blink
Or maybe the true engineers are solving other problems.
This is mainly due to the cost of maintaining something during its lifetime.