UIE has an excellent article from Kim Goodwin called, "Ten Ways to Kill Good Design". I don't have much to add, other than, "Yeah, what she said!" In particular, she nails one of my pet peeves - developers making business decisions. She says:
When we say the inmates are running the asylum, it means the programmers are making business decisions that should be made by executives. In most cases it's not intentional, and the majority of people are unaware of the extent to which it happens. However, every time a programmer says "That's not technically feasible," he's just made a business decision that's invisible to most people, since "not technically feasible" really means "not in the tiny amount of time or with the constraints I know you're going to give me."I have an enormous amount of empathy for developers. They often have unreasonably huge amounts of work to do and unreasonably tiny amounts of time to do it in. But when a requirement is in plan and then the developer guts half the requirement by saying "no" to designing it well, that's a business decision that needs to be made somewhere else.