Things apart, lets get to business. I was looking for something and laid my eyes on this article. Let this serve as a starter for this year. Starbucks Does Not Use Two-Phase Commit by Gregor Hohpe - http://www.eaipatterns.com/ramblings/18_starbucks.html
This gives us a hint to avoid over engineering certain things if we could control it in other ways (maybe even by business process). Sometimes, these over engineering comes with the cost of stability or performance. I've been taught one thing from my childhood. If the problem is to make your hand touch the nose, there is a straight forward way instead of taking your hand around your head and making it touch the nose. So, when we sit down with the users for a requirement, let us first understand clearly what she wants instead of start thinking of ways to implement it. The How should be followed by the What always.
Let the rambling end for the time being.