There are three fundamental problems. First, for most part, people who write software nowadays have no idea what it means to have quality software. I always give this example and it serves well: it's easy to learn how to put bricks together, but unless you know exactly what is needed to build a house, let alone a mansion, your "thing" is going to collapse. Most "programmers" get the "figure out how to stick bricks on top of another" and claim they can write code. Moreover, and it has to do with the "bricks" I mentioned, a lot of programs are written from "this is how the insides of the program work" perspective as opposed to "this is how people use this piece of software," i. e. the programmers expect the users to adjust what the users do as opposed to the other way around (most of FOSS suffers from this). Secondly, computer users have become exceptionally lazy and demand what I call "instant gratification" (most don't even know what a help file is!), and knowing that, most "programmers" don't bother or don't actually know how to write a half-decent manual. Thirdly, mainly due to the second point, users demand that software does not only X (what it was intended to) but also expanded to do Y and Z (in most cases despite them already having other software than can do Y and Z already), case in point: repeat demands to have AS output MKV files as well as MP4s---unwillingness to run a simple command to convert between the two is either pure ignorance or pure laziness (although could be both). What the users don't realise, for most part, is that the more features a program has, the more likely it is to go wrong, no matter how well the code is written! And this loops back to the first point (and the UNIX(tm) philosophy that the likes of Linux-flavours and GNU have long abandoned: do one thing and do it well!) a "proper" programmer will "perfect" their program in a way very different to a "lego bricks" programmer, as Antoine de Saint Exupéry said: "It seems that perfection is attained not when there is nothing more to add, but when there is nothing left to remove," of course he was talking about writing prose, not code, but same principles apply.
As for things going bye-bye in the ether, yup, I remember the days in early noughties when someone accidentally deleted a users file and some other stuff on a mail server and backup ops spent the whole weekend restoring stuff; but then again, proper protection wasn't set around those files---so not entirely one op's fault. Nowadays, as is the case with PowerShell, most destructive commands have a "pretend you run it but don't actually run it" switch, in PowerShell's case it's the `-WhatIf' parameter (some dumb software like GNU's (and probably others who mindlessly copied it)`mv' actually do really dumb things like quietly overwriting existing files because the authors never caught on why the original `mv' had the '-f' switch even though the manual says it ought to prompt). And talking about coming full circle: having gone from DOS to Windows to *BSDs and Linux-flavours with about solid 15 years of OS X, I'm back on Windows as a more trustworthy (in terms of stability and results) platform as the rest have become just as bloated as the latter, while the latter is actually being trimmed down...