What's the difference between SimpleStupid and Simple-Elegant?
With SimpleStupid solutions, you paint yourself into a corner. When the solution proves inadequate, you have no clear path from the Point A where you are to the necessary Point B. Sadness abounds.
With Simple-Elegant solutions, you can always respond to new situations. If there is anything beyond following the XpSimplicityRules that can help you get to this state, I don't know what it is.
If you can make this distinction, you can apply the "RidiculousSimplicityGivesRidiculousResources" with less fear.
This is only a problem if you are afraid to take something out that does not work or gets in the way. Face it, you are never going to make perfect decisions, so accept it and be prepared to change something if a better alternative comes around.
TestDrivenDesign works because, while you wear the "feature" hat, you perform the stoopidest change you can to get the tests to pass, including CodeHarvesting, writing an "if" statement, or returning a hard-coded value. Then any time you see "All tests passed" you can switch hats. Under the refactoring hat, you do the smartest thing you can to make the code elegant.
See CodeUnitTestFirst, DoSimpleThings, OnceAndOnlyOnce, RefactorMercilessly.