Quality Killer #1 - The Feature List
I touched on the lack of Quality that plagues most software today. How does this happen?
One of the product management deliverables in the larger companies I'm familiar with is the "feature list". This impersonal list is usually a gigantic spreadsheet with each desired function specified. It's created by soliciting customers and asking them what they want this new product to do. Add to that the list of what the engineers think the product should do and shake thoroughly.
During development, each feature is doled out to a person or small team that design and implement each feature. In some companies, there is good communication between these teams and in some companies there is not. Some teams have a member skilled in design but others do not. In some companies, a project leader keeps track of each team's work and ensures designs converge and in some companies each team works as if in a vacuum. Sometimes the teams attempt to conform their design to a system prototype or high-level design, but often the pace of development outstrips any unifying force.
The result of this is usually a nicely conceived core that is covered in warts. Designs (both internal and external) that don't quite fit are grafted on regardless of the outcome because the product must ship! The customers that were consulted at the product's inception are shoved aside for lack of time. After release, customers give mixed reviews. They are impressed by the functionality of the product, but dislike how certain things work or they feel its missing something that they can't quite explain.

