Focusing on Data – Try #3
I have been thinking a lot about data a lot lately. In my 26 years of doing this thing we call Software Development, I have encountered, and dealt with Data in many ways, from the Datatrieve product I used over 20 years ago at Digital on OpenVMS systems to the numerous APIs and technologies from Microsoft through the years like RDO, Microsoft JET/DAO, OLE DB, ODBC, ADO, ADO.NET and countless others, as well as Oracle PL/SQL. Rico Mariani’s fascinating posts on Visual Studio history made me realize that I started at Part 1 in his series, when Microsoft C 5.0 came out and a big box in the 80’s. Enough of that.
I don’t want to write a long post on how old I am :) but instead coming to the realization that these APIs were all “leaky abstractions” and it was always core SQL as the “truth” underneath. The problem is that I spent 20+ years on all these ways to avoid SQL in many cases. There was always that DBA on the team that could “handle those messy SQL queries and stored procs” and I feel I really just got by with barely a surface level knowledge of SQL. I became a “COM Is Love Guy”, followed Don Box around and became very knowledgeable with the “sexy things” like COM/COM+/MTS, MFC, C++ and then in the first few years of .NET became the known for my COM Interop skills and CLR/Rotor things as well as Smart Clients. SQL was always for someone else, the data guy. Even for the happy 2 year super-Agile project at Algo, I personally, as an Architect, became dependent on Wilson O/RM as the latest way for me to avoid SQL and just keep partying on with those C# objects. And there was super Steve Eichert at my side to modify the Wilson code or dig into all that ugly SQL :)
As I begun to spin up with a lot of Microsoft’s new generation of technologies like LINQ, LINQ to SQL, Astoria, and the Entity Framework, it became apparent that this couldn’t stand anymore. I had coded .NET the last few years without really embracing LINQ and similar technologies. As I begun to dig into LINQ (especially LINQ to SQL) and then tried to digest Julie Lerman’s fabulous and definitive Programming Entity Framework, I started to really feel that I had to understand SQL. When Julie’s book sailed over my head, I realized there were two issues here: LINQ itself and SQL. I wasn’t even digesting LINQ queries. This led me to two things. The first is Pluralsight’s On Demand course for LINQ taught by K. Scott Allan, and then Murach’s ADO.NET 3.5: LINQ and the Entity Framework with C# 2008. That helped quite a bit with LINQ, LINQ to SQL and Entity Framework.
Putting my mind to finally learning SQL led me first to Murach’s SQL Server 2008 for Developers book. I love Murach’s books with their many examples and two-page panel view but there just was too much there. It took on too many things. Since 98% of what I do is Querying, I wanted to focus mostly on SELECTS and especially JOINs, and that stuff, except for very simple ones, was still sailing over my head. I finally came to the right resource for that. That is SQL Queries for Mere Mortals: Second Edition. This book doesn’t try to take on all of SQL Server, Oracle or MySQL. Instead it does only one thing and one thing well. It provides a step-by-step easy-to-read introduction to writing SQL queries by taking everyday English queries and literally translate them into SQL. I am finally getting it.
Resources
