Legend has it that the way to kill a werewolf is to shoot it through the heart with a silver bullet.
Software is not a werewolf.
That might seem like an obvious statement, but how many times do developers approach a task with the mentality that there's only one "perfect" way of doing it?
A good illustration of this is to give ten programmers a single, small problem to solve. Chances are, they will all do something slightly different. Even simple algorithms can be done in a dozen different ways. And remember, this is just small stuff here. Once you get to developing full pieces of software, the choice of solutions explodes. Just look at how many RSS readers are out there. Each one solves the same basic problem in a different way.
Games are just as likely to fall prey to the "perfect" way of thinking. Perhaps even more likely, because of there's always the thought of "we can use this framework for every other game, so it has to be good". This type of thinking sounds smart in principle. After all, re-using code saves money and time. The only problem is that too much time gets wasted on tweaking engines instead of creating the actual product.
Start small, and concentrate on what needs doing. Don't get caught up in trying to develop an engine that can do everything, because it's a waste of time. Always remember that what you're creating can be done in a million different ways, and none of them are perfect.
There is no silver bullet.