DOS was mostly reliable, although DOS 4.01 used too much memory, and the shell was useless. That's 'reliable provided you only want to run one program without TSRs', obviously. The problem was that most people did want to add networking and other devices, and then there was insufficient memory left over to run your app.. I don't miss those days, although installing DOS on a modern system is far less painful due to the availability of packet drivers and CD/mouse/peripheral drivers that use minimal amounts of memory.
Otherwise, NT 3.51 was really solid. I'm trying to remember which version of NT had a disk corruption bug on release that was fixed *very* quickly with a service pack, and think it was 4.0 - but I might be wrong.
2000 was pretty decent too, solid, added USB, and modern DirectX was useful (if not for servers).
To be fair to Microsoft, they've mostly fixed Windows over time. NT4 was great after SP3. XP was great after SP2. Vista wasn't perfect, but SP2 fixed a lot. W7 was fine after SP1. Can't remember about 8. 10 has been a bit annoying at work but mostly alright, hibernation issues were fixed in Fall Creators Update. At home the sodding thing claims my graphics cards are broken - they work fine under 8, provided I don't update NVidia drivers beyond a certain release.
The problem here is that 10 isn't given the chance to bed down. For operating systems with a huge amount of backwards compatibility such as this, I'm not in favour of regular updates.