What kills great design?
Managers and stakeholders see it in the form of rising issues and inability to do anything new. Meanwhile, more distance is created between what you are and what you want to be.
Complexity is the true enemy for companies, teams, and developers.
How can you fight it?
1. Don't hire complexifiers: On the surface, they seem smart because they point out every possible thing that could go wrong or that you might have to worry about someday; with it comes a load of conceptual weight; complexifiers are people that create over-abstracted designs and make everything too complicated. Like a tick, once they have dug-in, they are difficult to get rid of because they have produced a pile of code that is not understood or modified easily. One way to identify complexifiers is that they tend to write a lot of defensive and complex code with no test cases.
2. Use simple design and embrace change: Always strive for simply design and use automated test cases to embrace change. Do not overdesign. You can't predict the future so be ready to change when the future changes—seems inevitable. The idea is easy: to change a simple design should be simple and you will be able to have trust in the system because you have a suite of automated tests to validate change. Reduce conceptual weight.
Be agile not just in development but also operationally. Windows Azure provides the best operational agility that I have seen so far.
3. Be a champion for simplicity: Do not add stupid features and do not let others kill your product. Don’t listen to your lizard brain.
The best weapon against our common enemy, complexity, is simplicity. It is a powerful form of Kung Fu.
One last thing: complexity even kills people: http://www.amazon.com/Fatal-Defect-Chasing-Killer-Computer/