Category: Professional Development

Aug 21 2014

Silliness for an Important Cause

I don’t mind saying that amyotrophic lateral sclerosis (ALS), also known as Lou Gehrig’s disease, scares me. A degenerative disease that takes away the minds ability to control the body, leaving the mind intact… words fail me. Add to that the fact that there is no known cure, and that there are at least 30,000 people suffering from this, just in the US, something has to be done. You can give money over at the ALS Association. Please do.

Oh, and Aaron Bertrand of SQL Sentry asked me to come over to his house to take part in the ice bucket challenge. Here are the results.

Please donate for this important cause.

If you see Kevin Kline, Steve Jones or Thomas LaRock, help them mix their ice bucket.

Aug 20 2014

The Red Gate Way…

SitCAs companies go, Red Gate is a little different. That is readily apparent in our tools and the philosophy behind them, ingeniously simple. But, we do a lot of other things too. There’s the Simple-Talk web site where we publish serious articles on all aspects of development and database administration across platforms and programming languages. There’s SQL Server Central, the single largest SQL Server community on the planet. There’s Ask SQL Server where you can get direct answers to your direct questions about SQL Server. If all that’s not enough, there are all the books, which we give away for free, on, again, all aspects of programming and database administration. But, we like to do more, so we also bring you training, the Red Gate way, at the SQL in the City events.

We’ve got two more SQL in the City events coming up soon. First, we’re back in London again on Friday, October 24, 2014. This event is one of my favorites, every year. We’re bringing in MVPs like Steve Jones, Ike Ellis, Brian Randell and others, all to teach you about SQL Server, but we’re doing it the Red Gate way. So please, register for this event. I’ll see you there and we can share a frothy beverage (it’s Red Gate).

Next, I’m thrilled to say that we’re going to be in Seattle on Monday, November 3, 2014. That’s right, just before the PASS Summit. If you wanted a reason to get out to Seattle early, here it is. We’re bringing a lot of the same crew from the London event over to Seattle. You’ll be able to experience what the London people did and more. This is SQL Server training done right, that is the Red Gate Way. Let’s get together and talk and share a frothy beverage in the States. It’s a free event, but there’s limited room, so please register now.

These are unique and popular events. We pull out all the stops to make them fun, special, educational, useful, helpful, doggone it, good. Please, come out, talk to me, talk to the Red Gate team, help influence the tools that you use every day, and learn about SQL Server.

Aug 19 2014

Getting the Word Out

A discussion that I’ve frequently had with organizers of SQL Saturday events, our own people here at Red Gate, authors, MVPs, pretty much anyone interested enough to listen for a few minutes, is summed up by “How do we get the word out about the opportunities that the SQL Server community offers?” The question always comes down to, how do we reach people? We tweet. There’s a Facebook page. Discussions are hosted on LinkedIn. Emails are sent out to various distribution lists. Advertising is done on SQL Server Central (with over one million registrants, what else do you have to do?). And yet, at events, I’ll ask, who has heard of PASS and will only get a 50% positive response. Heck, I’ll never forget that at the Charlotte SQL in the City event last fall, when I asked the audience, about 200 people, who was not aware that a few blocks away there were 3,000 people gathered to learn about SQL Server, about 1/3 of the audience did NOT know about the event occurring in their flipping back yard. In short, the communication means we’ve been using, don’t work. What to do? How do we reach those people who just aren’t getting the word?

Here’s a suggestion. Talk to people. No, not online. In person. Here’s a survey from an event, DevOpDays MSP, that asked people, how did you get here. The overwhelming answer is word of mouth. So, how do we get the word out? We need to talk to people. I know you’ve mentioned the community to your co-worker or your friend, but it’s time to do it again. Talk to them. Let them know about the upcoming SQL Saturday or user group meeting. Tell them about Connections and how great your learning opportunities are there. And, here’s the new wrinkle, ask them to pass the word on to some people that they know as well. Look at that survey. Over 50% get the good news by word of mouth. So let’s start leveraging that.

Aug 01 2014

Speaker of the Month: August 2014

Speaker of the Month is now officially one year old.

I went back and reread my first post. The goals were for a relentlessly positive experience. Reading back through the twelve posts, I feel like I hit that mark pretty well. Yes, I’ve always pointed out places where improvements can be made, but I think I’ve done it in a constructive and positive manner. Plus, I’m picking your session (if you get picked), as the best session that I saw that month, which is pretty darned positive in and of itself. I also promised it would be random and arbitrary. Mission accomplished.

I’ve considered wrapping this up. I did it for a year, just to see what the response would be. I didn’t have much more of a goal in mind than trying to help out both attendees and speakers by pointing out what I thought were some awesome sessions. Maybe pointing out some places where people could improve would be helpful. Since I’ve been blessed with getting to present a lot, the implication is, I know what I’m doing and maybe I could share some of that knowledge with others. Done. Does it really need to continue? The feedback you get on most blogs and most blog posts is largely a null set. You toss the information out there, it sinks into the pond, the ripples quickly fade. You don’t have a clue if the blog and the posts are helping or not. I’ve received some feedback on this, but, it’s actually been mixed. I’ve had people tell me because I’m pointing out areas of improvement that I’m not being positive, that I’m in fact being mean. Which… I really don’t know where to go on that. If I just say, “It’s awesome” and walk away, is this useful? Is it helpful? Is it constructive? Will it make a positive difference to the person I’m praising? Heck, will it do anything for anyone except the person I’m praising? I’d say no.

I’m going to go with the thought that this matters, even if it is only to the people who get picked. But I think that hearing from someone, anyone, what works in a session and what doesn’t could be useful to those who are just getting started. So, assuming it makes a small, positive, difference, I’ll keep the Speaker of the Month award going for one more year.

Speaker of the Month for August 2014 is someone I just recently had the chance to meet. We had exchanged a number of emails on a topic that I knew nothing about, so I was utterly unhelpful to them. But, by explaining the problem to me, they figured out their own solution, and then turned that into a presentation. Wow! That alone is amazing. Then I saw the presentation and was blown away. My Speaker of the Month is Derek Stanley and his presentation Remove the Linked Server 2 Hop Limitation by Implementing Kerberos from SQL Saturday #302, Albany.

This is absolutely not a topic I’m familiar with or good at. I know I’ve run into the situation a couple of times. Explanations for exactly what was happening kind of pinged off my head. After sitting through Derek’s session, I have a better understanding of the problem and, I have a bunch of great solutions (that I couldn’t implement if you threatened me with torture, I just don’t know systems that well). Derek presented everything in a very clear fashion. He walked us through the problem space so we could understand what it was he was fixing, then he walked us through a bunch of different solutions. His explanations were good, but his demos really made the presentation shine. They were great. Demos can frequently be summed up as “look, I can make this work” but they don’t always teach. Derek’s were so clear and pointed that even I could understand how his solutions were working (still couldn’t replicate them). He put the presentation together really well, told a clear, concise, useful story in a way that made it easy to understand. The presentation was absolutely a win.

Areas I’d like to see improved are fairly slim. I think, my opinion, the slides were too wordy.  I get the “slides are documentation” school of thought. I just don’t agree with it. That one may be a throwaway. The one area that sometimes got a little confusing was caused by naming the servers VM1, VM2, etc. I think some clearer names that somehow help illustrate the points might help the demos along some. One more word: Zoomit.

In short, it was a good presentation with great demos. If you get the chance to see this one, I strongly recommend it. Derek, submit this to more events. If you’re organizing an event, accept this session. It’s good, you’ll be happy.

Derek, get a blog. Here are some articles he wrote for SQL Server Central. Here’s his LinkedIn profile.

Jul 21 2014

Victims of Success

I took part in the PASS Summit 2014 selection committee this year because I was really curious about seeing how the sausage gets made. I’ve seen how actual sausage gets made and I still eat sausage.  Despite a few hiccups and communication issues, internal and external, I think the selection process for the Summit went really well this year. But, there was still some controversy. Being a naturally pushy person, I got involved in the controversy, for good or ill, and subsequently have had conversations with many people about the selection process (which, reiterating, I think went extremely well overall). But, the one thing that kept coming up over and over was a simple question:

How come I/PersonX didn’t get picked?

The easy answer is because you/PersonX had a horrible abstract. But you know what, in probably most cases, that’s not true. Good abstracts by good people didn’t get selected, so what the heck? I think the more complex answer does not go back to the selection committee or the selection criteria or the selection process. Do I think some improvements are possible there? Yes, and I’m putting my foot where my mouth is (or something) and joining the committees to try to make some tweaks to the system to make it better (and really, we need tweaks, I want to repeat, risking ad naseum, the process went well and worked great and I’m happy I took part and I think the outcome is pretty darned good). No, the real problem lies elsewhere, SQL Saturdays.

I’m not saying SQL Saturdays are themselves a problem. What I’m saying is that PASS took on the whole SQL Saturday concept for several reasons, one of which was for it to act as a farm team for speakers. This will be my 10th Summit. Looking back to 10 years ago, while I really loved the event, oh good god have the speakers improved. I remember sitting in sessions with people who were mumbling through their presentations so much that, even with a microphone, you couldn’t hear half of what they said. Slide decks that consisted of 8-12 pages of text (yes, worse than Paul Randal’s slides, kidding, don’t hit me Paul). Speakers who really, clearly, didn’t have a clue what they were talking about. It was kind of rocky back then. I learned my second year that you had to talk to people to find out, not just which sessions sounded good, but which speakers were going to present those sessions well enough that it would be worthwhile. Why were there so many weak presenters? Well, because there was almost nothing between speaking at local user groups and speaking at Summit (I made the leap that way). There were a few code camps around, a couple of other major events, various schools and technical courses, and Summit. I don’t know how the old abstract/speaker review process worked (and I apologize to whoever read my first abstract because I know now just how horrific it was and I’m so sorry I wasted your time), but I’m pretty sure they were desperate to get enough submissions that sounded coherent with a speaker attached that probably could get the job done. Not any more.

Now, people are getting lots of opportunities to present at SQL Saturday events all over the world. And it’s working. We’re growing speakers. We’re growing good speakers. Don’t believe me? Then you go to two or three events in a month, sit through 8-12 sessions, mostly by newer people, not Brent Ozar, not Denny Cherry, not Kim Tripp, and you review them, each, individually, then go back and try to pick the best one. Oh yeah, there’s going to be a few dogs in the bunch, but overall, you’re going to find a great bunch of presentations by a great bunch of speakers. Our farm system is working and working well. But there’s a catch.

Because we have upped the bar pretty radically on all the introductory level speakers (and if you’re thinking about presenting, don’t let that slow you down, everyone starts at zero and goes up), that means the competition at the top (and yes, I do consider the Summit the top in many ways, not all, see SQLBits) is becoming and more and more fierce. That means, my abstracts probably need quite a bit more polish than they’re getting (and so do yours) because there are a whole slew of speakers coming up that are writing killer abstracts. That means I need to really be concerned about the evaluations (despite the fact that I get dinged because the stage is low, the room is hot/cold, lunch didn’t have good vegetarian choices, England left the Cup early, all outside my control) because there are new speakers that are knocking it out of the park. In short, you/I/PersonX didn’t get picked because the competition has heated up in a major way.

In short, a sub-section of the community, defined by those who wish to speak, are victims of the success of the farm team system as represented by SQL Saturday. On the one hand, that sucks because I now need to work harder than ever on my abstracts, on the other, we’re going to see very few instances of really bad presentations at Summit. We’ve improved the brand and the community. It’s a good thing.

Jul 11 2014

Speaker of the Month, July 2014

Another month another bunch of great presentations. I almost don’t want to do this any more. It’s hard. I sit through a presentation and I think, “Well, here’s the winner this month.” Then I go to another presentation and I think, “Well, fudge, now one of these people loses.” Then I go to a third and I’m simply blown away. And now I have to pick. Well, it’s hard. So let me do this, I’m going to declare two winners this month, but only review one of them. Hey, my blog, my rules.

First, I want to award speaker of the month for July 2014 to Wayne Sheffield(b|t) and his presentation Table Variables and Temp Tables that I saw at SQL Saturday 294.

What’s my measure? That I learned stuff and was entertained. Well, I pretty much guarantee, unless you too are an MCM, and none of you can ever become one, ever again, you’ll probably learn something from Wayne too. This was a great presentation. I liked the way he started off with a “What do you think” set of slides to kind of get the audience primed for the material that was coming. It was a good approach, much better in a lot of ways than simply giving an agenda. And the information, scads of it, just flowed out of the presentation. I picked up a number of things that I didn’t know about some of the innards of cardinality estimates on table variables (during recompiles). The demos were absolute perfection. They did an excellent job of making the points in an extremely clear manner. And Wayne told a joke that I immediately stole (sorry Wayne, it was that good), the very next week while presenting (I did give you attribution, afterwards). In short, informative, structured, educational, entertaining, a great presentation.

There were a few issues that Wayne and I talked about. He has too much information to give out in one hour. Because of this, Wayne tends to not stop or pause to ensure the audience got his point and just moves on. It’s frankly a mixed bag on this. I think he ought to pause to ensure people are understanding his concepts (because they’re great), but he has a lot to present, so he can’t waste a lot of time (because his stuff is great). Tough conundrum, but I’d suggest going with trimming some material and ensuring full understanding, but that’s one that people can honestly disagree on. While when he tells a joke, it’s funny, the overall presentation style was just a little dry and slightly monotone. I think that’s just a question of a little practice more than anything. Maybe chatting up the crowd before you start to loosen yourself up will help.

That’s it. It was a great presentation with tons and tons of wonderful information. I’m quite happy I attended it. You should track it down too.

Second, and not second place, just my other awardee of the month, Louis Davidson(b|t)  simply blew my socks off with his presentation on Database Design Fundamentals at SQL Saturday 286. Louis is an MVP, author and frequent presenter, and oh my god, now I know why. It’s like a switch flips and Louis, who is a pretty quiet and unassuming guy, turns into SUPER-PRESENTER! And a tsunami wall of information comes hurtling at you along with quips and experience and stories. It was one of the single great presentations I’ve seen in, well, forever. So if I didn’t bring up that fact here on the blog, I’d be doing him an utter disservice. But… my blog, my rules, he’s so good, I didn’t want to just hand him the title and be done. It wouldn’t be fair to all the other amazing presentations I saw that they were upstaged by a consummate professional like Louis.

Please people, help me out, do really horrible presentations, at least some of the time, so I don’t have to actually think about this stuff. I’m lazy and you’re making me work.

Jul 08 2014

Worst Day of a DBAs Life

5worst_1_300x250_NEWRed Gate Software is running a campaign around coping with the worst day of a DBAs life. We’ve been posting some really fun stories with, I hope, a kernel of useful information inside each. Chances are, if your DBA career has been like mine, your worst days don’t involve explosions and car chases. But now they’re asking for people to write up stories, what was the worst day in your life as a DBA. I know, I know, first world problems, right? Regardless, I have yet to put a company out of business or kill anyone with any errors I’ve made, although I’ve worked at places where either was possible. But the one day that just stands out, well it started about three weeks ahead of the bad day.

I was working for an internet startup. I was very much still learning the ropes as a DBA, although, I had helped design a system on SQL Server 7.0 that was collecting about 1gb of data a day. Back in those days, that was big data. But, frankly, I wasn’t doing the monitoring correctly. I was doing a lot of manual checks and manual maintenance, stuff I should have taken the time to automate. Live & learn, right? Anyway, because I was taking a lot of time out of each day to do maintenance and run checks on the systems, I wasn’t spending lots of time supporting the development teams. One day, one of the managers came in and said, “No more maintenance. Things should be fine. Spend time on development.” And he was serious. I argued and lost. So I started spending a lot of time doing development and let the maintenance slide. Fast forward three weeks, things had largely been stable, but, I didn’t have monitoring in place, so I wasn’t noticing that we were running a little hot on transactions. The transaction log was bigger than it had been. And then disaster struck. The backup drive filled. I didn’t notice. Transaction log backups started failing. I didn’t have alerts. The log drive filled, all the way, and our 24/7, zero downtime web site went kablooey.

It was at 2 in the afternoon or something, so I, and my fellow DBAs were right there. We immediately tried to backup the log, but it wouldn’t backup. We tried adding a log file. Didn’t work. Then we started getting creative. We tried every possible thing we could think of. Some of them failed quick, so we tried something else. Some of them took hours to fail, making us think we had fixed the problem. It took us 48 hours of failed attempts before we finally admitted defeat, went to the last good backup and restored the database, losing about 12 hours worth of transactions. It was a nightmare.

The good news was, our directive to stop doing maintenance was cleared. We immediately went about setting up alerts and other things so that we wouldn’t get surprised like that ever again. It wasn’t fun, but it was a great learning experience. Plus, all the troubleshooting for 48 hours straight provided excellent camaraderie within the team. That said, I’d rather have avoided the whole thing, and could have with proper monitoring and alerting.

Jul 03 2014

Reflections on the 2014 PASS Summit Selection Process

Oh we are a bunch of high school kids at heart. Maybe high school never ends (and there’s a nightmare, god I hated high school). But, there’s been drama about the 2014 PASS Summit sessions and the Selection Committee’s work. I was on the committee. I worked as a part of the team responsible for rating sessions for the Azure track (said track is gone, more on that later). As self-serving a statement as this is, I think we did a good job. Further, I think the process worked. You can read the official explanation of the process here. Amy did great work and deserves your thanks. All the volunteers who reviewed over 900 submissions from more than 300 people, ON THEIR OWN TIME, FOR FREE, also deserve your thanks. The vitriol directed at the PASS organization over the outcome of this selection process is not directed only at the Board. It’s also directed at the volunteers. And, as a volunteer, that sucks.

The team I worked on rated, I forget, 50 sessions I think. We had to read through them and give them a score based on several criteria. We also had to write comments on each and every session. I was dinged by HQ for not writing a comment on a session that I gave 5′s to on the ratings (so I commented something like “Can’t wait to see this at Summit”). We were only given 10 slots to fill, so that means 40 sessions got kicked to the curb. That’s a lot of people who didn’t get selected. And not getting selected sucks (yes, I do know, I’ve been rejected by a number of events this year, big ones, even ones I’ve spoken at previously, not whining, just pointing out that I don’t have a secret method for getting accepted). Our track actually got eliminated and the sessions that we selected were distributed to other tracks. Also, a couple of sessions we rated highly didn’t do so well when the speaker scores were applied, so there was some shift there (one thing PASS could improve, give us some indication of the secret sauce there, we know there is one, but a little understanding of how it’s applied would help). But over all, the sessions we rated highly, got selected. Congratulations and well done to those speakers. Just look at the people presenting, many for the first time. That’s going to be an absolutely awesome event. And once more, thank the volunteers for doing all that work.

So, some of you are now thinking that, “Oh, Grant’s on the side of PASS” (well, actually, yes, I am, so should you be) “Grant has been told to be nice and play good and not be critical” (even though I’ve already made a criticism about the magic numbers and I was tweeting almost literally threatening messages this week) “Grant got selected so he’s being a <insert bad name here> about the whole thing” (I may or may not be a <insert bad name here> but I don’t agree that I’m being one about this) or, maybe you’re on the other side “OMG! He’s criticizing PASS in any regard, The HUMANITY! Have you at long last sir no decency” (no, not really).

Remember those comments, that I had to write for every abstract, including the great ones? I put a small critical review of the abstract in every one (OK, not the one that I gave 5s to). I said what was wrong with the abstract in my subjective opinion. And let’s be perfectly clear about that (channeling President Obama), they’re my opinions. If I thought you didn’t define the problem space your presentation was meant to address, I said that. You disagree? OK. If I thought your very clever and witty title seriously detracted from the clarity of what the session was about, and it wasn’t that witty, I said that too. You’re the wittiest person you know and everyone says so? OK. My opinion may not jive with yours. But, it’s the one thing I’ve seen everyone who has ever been rejected by the committee ask for, “Tell me what I can do to improve.” OK. I did. At least in my opinion. On every single abstract (except that one).

PASS didn’t release them.

And then, PASS did.

The volunteers (unpaid, remember) did the work, and now it gets to see the light of day.

This brings up a number of points. First, when I got rejected by those other events, did I get a reason for my rejection? Nope. Other events just reject you, thanks for playing. I think PASS, which is all about community, should be different. We should tell people why, not just that there were higher rated sessions, but what they can do to improve. I’ve talked to people in the know, not all the comments provide that kind of information. I think we’ll get better next time. Second, peoples feelings are going to be hurt by these comments. Yes. Yes they are. Suck it up buttercup. You want to know what you can do to improve so you can get selected, but your abstract is absolute perfection (in your opinion), so how dare someone else suggest that it’s not worthy of inclusion, blah, blah, blah, We’re going to see lots of blog posts where people disagree with these comments and that could reflect back in some negative way on the organization. I suppose so, but if we’re going to be about community and we’re going to try to raise up new speakers, we’re going to have to be able to deal with some degree of friction. That may even come from experienced people irked that they didn’t get picked. Everyone has a bad day. Again, I think we can weather this. Finally, the different teams and individuals on the teams probably gave substantially different levels of comments with varying degrees of quality. Some of the comments are just going to be useless. Further, My opinion probably doesn’t jive with my teammates in every regard. Maybe a team didn’t put critical comments in at all (although they had to put in comments). Yes, these things are going to be uneven, maybe even contradictory. OK. Again, cope.

This blog post once started off as a rebuke of the selection process around those comments. It’s not now. I want to repeat, one more time, I think the committee did great work and selected an awesome set of presentations that will make for a wonderful Summit. Thank you for all your hard work. And thank you, Amy, for doing a great job organizing what is a daunting task. And thanks for releasing the comments.

Jun 30 2014

The Curse of Working With A DBA

noI no more than finished my rant from last week than I started thinking about all the reasons why a healthy chunk of the reasons that developers want to bypass relational database is not the horror of the relational database itself, although, that’s there. No, a very large reason why is the DBA.

We’re on a blog called The Scary DBA. I earned that title, well sometimes. Sometimes I got it and I wasn’t sure why. However, it’s perfectly in keeping with how many people view their database administrators; grumpy, obstructionist, slow, difficult, control freak, etc.. There are even jokes about it, “What’s the DBAs favorite word? No!” And for those answering “It depends” that’s two words.

I understand why. In large part it’s that phone in your pocket (used to be a pager on your belt, I’m old). That darned thing can go off any time night or day. It tends to make you very gun-shy. You start doing anything you can to keep that thing from going off. And developers, holy moly, they want to change things. They want to introduce new tables and new queries and they want to do it all really fast, faster than you can possibly review all that code, and all, ALL, AAAAALLLLLL, that code needs to be reviewed before we can let it unsettle our production servers. No.

And developers get crazy ideas in their heads sometimes. Maybe it would be easier to put the queries in the code rather than in stored procedures? What? How the heck can I review all the code too? No.

Developers also start thinking to themselves, you know, most of this T-SQL code could be generated using other code. Wait, that means even more T-SQL generated even faster, and generated by a program, and I can’t review that program, or it’s code and you want to put it into my production server? Are you smoking something over there? No.

CLR? Ha! No.

ORM tools? Have you seen that T-SQL? Hell no!

How about other tool sets? Maybe an object database would work here. We may be better off using unstructured storage for data collection in this situation. ID/Value pairs might work well for this application. No, no, no and no again. Just in case you think of something else, no.

Gee, I’m sure if I were a developer I’d be perfectly happy with this approach. I’ve no doubt as developers introduce even harder subjects like agile development, devops, and other things in the future the responses will be just as nuanced. In short, I’d be doing anything I could to bypass the DBAs too.

So, what do we do about it as DBAs? Change. Use the word “Yes.”

We need to recognize that the business is changing, fast. That means that the applications are going to change, faster. We, DBAs, must become enablers. We must create processes and methods that smooth and speed the deployment process in order to provide lots of opportunities for automated testing because you’re not going to review this code and you can’t just stand in the way. We need to adopt to and adapt the development and deployment paradigms used by the developers. We have to start treating databases, as much as possible, like code. We need to have our code in source control along side the application code. We need to be at the stand ups. In short, we need to change what we do and the way we do it. We can’t just say no. We need to say yes. The goal is to get in with the developers and influence through assistance, not just stand in the way.

Is it more work? Yes. Is it going to be hard? Yes. Will we have to go quite a long ways to convince them that we’re not just going to say “No” again? Yes. Are there damned good reasons for us to make these efforts so that someone who loves and protects the data and will be able to provide special skills not developed by most programmers? Yes again.

See, it’s easy. Try it.

Jun 18 2014

The Curse of Relational Databases

Let’s face it, none of Information Technology is easy. Oh yeah, there are those few geniuses that have an absolute grasp over some small aspect of the stack, or those other geniuses that have a very shallow knowledge level, but understand the entire stack. But the stack itself, it’s vast, deep, wide, utterly unfathomable. So what do you do? You cheat. You take shortcuts. You ignore things you don’t like/understand/appreciate. And then there’s all the things you just don’t know. Or, you cheat another way, you get experts that have drilled down on a particular technology so that they’ll provide you with the knowledge you need. Ah, but then you have to listen to them and what happens when your local genius (deep or wide) doesn’t agree with your hired gun? Do you override your local person for the hired gun (I’ve seen this happen a ton where consultants were favored over in-house), or do you go with your local person (I’ve also seen this where the local person who has solved all the problems before may be over their heads now, but they’ve always been right and are therefore trusted)?

I just read (and I mean I finished about 90 seconds ago) this really interesting article on The Curse of the Excluded Middle. I won’t even pretend to you that I understood all of it. But, I did get a pretty fundamental concept out of it, this programming stuff is very hard, we’re going to take shortcuts to get through it, and those shortcuts come with a cost. The argument being put forward isn’t to somehow find a magic solution. It’s simply to acknowledge that there really is a cost, maybe even a cost you don’t completely understand. Further, that cost, and especially your lack of understanding of it, will come up and bite you on the behind.

Which brings me around finally to developers and databases. Relational databases are a pain the bottom. They really are. Speaking just of SQL Server (where I spend most of my time) you have to work with a ridiculous, archaic, language, T-SQL, in order to manipulate the data. And the rules of normalization, yeah, we can all learn them, but applying them makes every single aspect of coding harder. Plus the language lets us do things that it then interprets in horrendous fashion. Oh, and don’t forget all the obscure and weird maintenance and configurations that you have to go through to keep the silly servers online and functioning correctly. Then there’s the whole object/relational impedance mismatch thing to chew on our behinds even further. In short, I completely understand why developers would like to burn the entire edifice to the ground (come see one of my presentations when I talk about the “data persistence layer” that a particular dev team wanted to build). And all that is just the technical side of this mess. I’m not even going to address the personnel issues that come with the different focuses of responsibility between a developer and a DBA.

So when the developers bring in an Object Relational Mapping (ORM) tool or they explicitly attempt to slap out at DBAs by going after a NosQL database (and no, despite the new twist, it means NO F’ING ESSQUEELL, instead of Not Only SQL as many are saying now), I understand why they would do this. It short circuits all the issues. We get around the problem. We speed development by eliminating that thing that we didn’t completely understand and certainly didn’t like and…. Hang on… Isn’t there a darn good chance we’re digging a hole here?

Yes.

Don’t get me wrong. I see the need for unstructured data stores, ID/Value pairs, speed over consistency, speed over durability, the need to move fast because your competition is sure as heck trying to move fast. So NoSQL databases serve an absolutely valuable purpose and used correctly fix unique and difficult problems. A well structured ORM properly applied absolutely saves development time. But there’s this nasty little surprise hidden behind the need, the sometimes seemingly desperate need, to completely get rid of relational storage. That surprise? Relational storage actually works and works well when applied to the appropriate problems in the appropriate ways. It provides a means of collecting information fairly quickly (although not as fast as many NoSQL databases), storing it efficiently (although, maybe not as efficient as some object databases), and returning it to the users on demand (and here relational does stick out again). And does it all in on place, not one for collection, another for reporting, or some of the other strange perambulations I’ve seen people going through with some NoSQL implementations (again, not all, some are awesome, but many are horrific).

About twice a year I get to read a “death of the DBA” article that points to a technology or process or tool that’s going to eliminate the need for those nasty, ugly, difficult, relational databases and those freaks who try to keep them online and available. And about twice a year I see lists of the most needed workers in IT and guess what’s almost always there, yep DBAs. The fact is, relational storage does work. And instead of trying to eliminate it, or the DBA, or the code necessary to interface with it, embrace the stuff and learn to use it, or hire someone who actually knows how to use it and then listen to them. I’ve just seen too many places where the need to eliminate relational storage and DBAs is driven by one of two things, I have a shiny new hammer and everything is a nail, or, databases and DBAs are a pain because they make us do stuff we don’t want to, so let’s bypass them. Those are almost precisely the wrong reasons to go about moving to a NoSQL implementation, because you’re going to be ignoring stuff, as the Curse of the Excluded Middle talks about (and I know, it didn’t talk about databases, I’m extrapolating, hang with me here), and the things you ignore, or worse yet, don’t know about, are going to hurt and may hurt badly.