I was reading this MSNBC article (surprisingly critical of Microsoft for a company owned by MS)...

I was reading this MSNBC article (surprisingly critical of Microsoft for a company owned by MS) which talks about why software is so bad and what is being done to fix it. One of the points it makes is: "continual refinement is the usual rule in technology. Engineers constantly notice shortcomings in their designs and fix them little by little... As a result, products incrementally improve."
This isn't true of software, most of the time. And why is that? Because coders have the wrong definition of "incremental improvement". When an engineer has a bad machine, she redesigns the machine and builds it again. By analogy, when a coder has a bad machine, he redesigns it, then carefully grafts the bits that have changed onto the original machine. The result is the software we see every day -- a mess of patches and enhancements tacked onto what might have originally been a good idea. What we need to realise is that code re-use is not the answer. All the little shortcuts we take, all the little design compromises you make in order to save time, add up to a huge compromise in quality. And that's why software sucks.
IMnotveryHO, of course...