Consider this a corollary of Use Proven Products.
When you have a talented team, there are times when you’re tempted to re-invent a key component of your solution. For example, your brightest programmer may:
- Design a new custom file format more logical than XML, JSON, etc.
- Design a new secure protocol that doesn’t have the complexity of using SSL, SSH, etc.
- Design a new object-relational solution that’s more efficient than … you get the idea
And the chances are, your programmer has a great idea. However, you were not tasked with re-inventing base technologies (what I call, plumbing). Almost always, the better approach is don't do it, don't build your own. Live with an existing proven product that works well and move on.
Why? You have to manage the project's energy. You just can't afford to expend significant amounts of energy on function that already exists and works well. And of course, you can't afford the additional risk.
For me, I like to build my solutions on top of great existing technologies (great plumbing). That way they have the best chance to survive the long term since they inherit the improvements of their components. I've leveraged these improvements for some fantastic service releases over the years. This best practice is a major project success factor – use it.
Lesson Learned: To minimize risk and accelerate delivery, use standard plumbing for your solution (don't build your own). Focus the project's energy on end-user functionality.