Learning to harness fire was a significant event in the development of humanity. It provided light, heat, and the ability to cook. As time went on, fire led to other technologies, from the smelting of ore to the internal combustion engine. It also provided an important lesson that continues to apply to the tools we use: that which does for you, can do to you.
Benefits generally come with a cost. Worse, sometimes unexpected side effects come along for the ride. Just as those early adopters of fire learned that their new tool could bite back, so do we find that our tools bring both positives and negatives.
This was brought to mind by a recent Tweet from Rob Conery:
Solved my EF problem – had to delete the database first. No really – *that* was the solution. Good GOD.
— Rob Conery (@robconery) November 16, 2012
Colin Asquith’s reply vividly illustrated his assessment of the risks of the technology:
@robconery my experiences with EF code first involved much db or table deleting, felt like i was using a loaded shotgun to scratch my face
— Colin Asquith (@colinasquith) November 16, 2012
Not the recommendation the EF team was hoping for. It makes you wonder why the technology was selected for those applications that Rob and Colin worked on.
Note that my intent is not to trash Entity Framework. It’s just the example here; many tools, technologies, and techniques would serve equally well. Evaluation is critical. If you don’t know the costs as well as the benefits, you can’t answer the most important question: “why?”