Since I can't post a reply to the software reliability article yet...
I think that people are comparing apples and oranges when comparing things like microwave and VCR with PCs. These are very simple, single/few-purposed devices that have predetermined components that are likewise as simple. The PC is not that.
The PC, to me, will always be a multipurpose, mass- distributed experiemental device that happens to serve end- user purposes. This is why hackers love working with PCs - PCs can be easily programmed and reconfigured and upgraded to do a myriad of things. The environment will remain dynamic and upgrade-envy and commercial marketing efforts and (a small part) the need to constant and continuing effort to improve upon the past.
What I am saying about software reliability on PC or similar multipurpose, multifunction platforms is that it's damn near impossible to get the kind of reliability that VCRs and appliances can achieve, of course, because PCs and such are always a work in progress. They are not an end product.
I do believe, however, that some more end products will be coming soon. Using the PC to emulate an end product will be ok, but more specifically, people may be be more readily accepting of network computers if the network computers can do much of what they need and if the computing facility is offered to them as a service (yes, I'm aware it's like Microsoft's proposed subscription model for software, part of that .NET thingamajig). I believe at some point, there will be very little you can add software like word processing programs or spreadsheet programs that will be more than a slight incremental improvement. In other words, the product "matures" and once that happens, it is ripe for being implemented as an "end product"
This whole idea hinges on computing power as a service (like a utility like electricity or telephone, etc). Much like the Lou Gerstner's quote in this xmlhack article.
Bottom line: PC software reliability is not purely a programmer problem as it is a complexity issue in a world where the platform being used is a rapidly and constantly moving target. If we want software reliability, we need to nail down snapshots of hardware and software and produce end products as such.
Of couse, simplicity in any kind of software will always go a long way towards reliability. I'm sure the software on airplanes and space shuttles work reliably, and on much older hardware - they are end products.