Database administrators, like doctors, have to break some ugly news. We have to tell developers that their code won’t scale, tell project managers that they didn’t buy enough hardware, and tell CFOs that we’ve actually got about three times as many servers as we’re licensed for.
There’s a few things you never want to hear your doctor or your database administrator say:
- “Wow, I’ve never seen a case that bad.”
- “You mind if I take a few pictures to show at the next convention?”
- “I’ll be right back. I have to put on gloves and a mask.”
- “Gerbils? How did those get in there?”
Here’s a few tips to help you break the news easier.
Start with “Yes.” Don’t start fights by disagreeing – instead, agree with them and guide them towards something else. Here’s a few ways to get started:
- “Yes, you’re not alone there – I’ve seen that conclusion a lot.”
- “Yes, that was a best practice for quite a while.”
- “Yes, that approach works in many scenarios.”
- “Yes, I too believe that I’m all-powerful and bulletproof.”
Identify with the people who made a mistake. I try not to blame someone for a mistake, even if it’s grievous, without including myself in that same group. Put yourself in the other person’s shoes, and think of a time when you did something similar. Even if you can’t imagine anybody being dumb enough to, say, drop the production database, odds are you did it once too. My favorite lines are:
- “I used to do this all the time too when I got started, and I learned the hard way.”
- “You wouldn’t believe how often I’ve seen this same problem at other companies.”
- “It’s not your fault – it’s the tool. It shouldn’t allow people to accidentally do this, and we all do it sooner or later.”
- “I’ve been through this before – have I ever shown you my scar?”
If you have to point, point at roles, not people. Maybe that developer just started last week, and he inherited a pile of nasty orphaned code from some nincompoop who got fired. Maybe an outside consultant set up that database. Maybe a third party vendor wrote code that – no, wait, we never write bad code. Anyway, don’t point your finger at a person specifically unless you’re holding proof that they did it. Even then, hold off, because they may have done it at the advice of someone else. Your goal is to fix the problem, not get somebody fired, so use phrases like:
- “I know this wouldn’t have been your choice if you designed this.”
- “I can totally understand why you’re so frustrated, and this would make any developer frustrated.”
- “Report writers take this approach to queries all the time – this isn’t unusual.”
- “This is a very typical injury for people in your field of work.”
Give everybody the benefit of the doubt. You weren’t born with the incredible experience, skills, and sharp clothes that you’ve got now. When you popped out of Mama’s babymaker, you started sticking your toes in your mouth. Go easy on the new kids and break them in gently.





Love this post.
More: Focus 99% of the discussion on the “and here’s how we’re gonna get it fixed”
Leave the forensics of whodunnit for after the fix and only if there are constructive steps to be taken to keep it from happening again.
Great read Brent! Someone should direct Celko here.
HA! Thanks guys.
Nice Work…. excellent post and so quick after the Summit… was this one in the can or are you really a super human robot?
Are you kidding me? It’s in the can. Anytime you see something that doesn’t reference current news, it’s scheduled long ahead of time. I have posts scheduled through the end of November.
I love your “schedule posts in advance” tip. I’ve passed it along to many people over the past several months.
Nice post, Brent…
Brent is the antithesis of “House”
Just a spoon full of sugar makes the medicine go down.
I like it.