I give a lot of thought of what makes a DBA awesome as remote DBA, or a consultant. Many DBAs are very proficient technically and are very successful as in-house DBAs, but I can’t imagine them working with customers. I spent some time thinking what would make someone awesome as a consultant, based on my experience as a in-house DBA working with consultants we hired, on my experience as remote DBA for Pythian and on my observation of the amazing guys working for Pythian Consulting.
Here’s the secret: You need to give the customer a warm fuzzy feeling.
Usually this means actually solving the problem the customer has, perhaps even efficiently and professionally. But there is more to it – the customer really need to be able to trust you and feel comfortable working with you. As a consultant, the default for the customer is not to trust you. You are an outsider, you have slightly different goals than the organization that hired you and very different risk profile. You need to prove yourself over and over.
Here’s what I consider key parts of being effective at giving customers warm fuzzy feelings. Obviously all this applies in addition to being a very proficient technical problem solver:
- Be nice, friendly and polite. It sounds trivial, but often in-house DBAs are seriously snarky and evil to their users, because they see them as nags and not customers. The customer will love working with someone who says “yes sure” with a smile when you ask to fix a trigger instead of someone who starts complaining about how busy and unappreciated they are. In a previous position we had an SA consultant. Everyone was always commenting on how friendly and helpful he is compared to the confrontational in-house admins. He is now my role model for customer relations.
- Be very easy to reach. Replying to pages, phone calls and emails within minutes definitely gives the customer a good reason to trust you – they know you are always there to help them in an emergency in a timely manner. Even hearing “I can’t work on this right now, but I’ll check this in 3 hours” is more reassuring than wondering if someone got your page and is working on the problem. This is probably my weakest point – I feel that if I can’t make a technical contribution, I should just say nothing until I can. It always turns out to be a huge mistake.
- Be calm. Nothing erodes trust like hearing your consultant panic. I have a slight tendency to panic, especially under time pressure. That’s one of the reasons I’m glad I work as a remote DBA – my customers can’t see me hyper ventilating. Even if it means putting my phone on mute for a moment, I always make sure I sound calm, collected and professional when talking to the customer. Its amazing how panicking even once can cause you to be perceived as less capable forever.
- Be confident. Be very confident about things you know for certain, be confident about things that you are almost certain about but are still a good idea to do and can’t cause much harm in the situation. I used to say things like “You may consider trying X.”, but I noticed that customers feel much better when I say “Do X”. Confidence inspires trust and trust is the basis for warm fuzzy feelings.
- Be very careful about admitting lack of knowledge. On one hand, sounding confident about something you know nothing about and getting caught erodes trust. On the other hand, if you are fairly certain you can acquire all necessary knowledge in few minutes from Google, Metalink or asking a colleague, I’d say something like “I’m somewhat familiar with this issue, let me check it out and see if I can help”. The customer will get his problem solved, you’ll gain expertise you may otherwise miss. Again, its a very fine line, so use with extreme caution.
- If you are out of your depth, find someone who can help the customer. Pythian makes it very easy to escalate issue to colleagues, but this applies to any consultant. The best consultants I’ve worked with referred me to their colleagues when they thought they are not the best person to handle this.
- Communicate very clearly. This means:
- Match the detail level and technical language level to the person you are talk to.
- Don’t make assumptions. If something was even close to being unclear, review your understanding with the customer. If you are missing information, ask for it (We are against any guess, remember?). And don’t assume that the customer will know what you are talking about without a lot of background information from you.
- Be clear. Let the customer know in unambiguous language information like: How bad is the situation, what you are planning to do, what you did to fix the issue and what do you need from them.
- Don’t blame the customer for any problems. It took your 12 hours to upgrade to the latest EMC software and the customer is wondering why it took you so long? Don’t even think about blaming the customer’s sysadmins for being incompetent. Even if its true. Especially if its true. Management will (nearly) always trust the in-house employees more and this is guaranteed to strain relations.
- Don’t make mistakes. Yes, I know this sounds silly, but nothing causes more mistrust than a consultant dropping the wrong schema, shutting down the wrong database or deleting very critical archive logs. This is easier said than done, but you can build systems to help you reduce your mistake rates, such as read-only connections in Toad and different background color for terminal connections to production. My latest trick – having a personal page in the Pythian wiki called “lessons learned the hard way” with all the mistakes I’ve made and my ideas for avoiding them. I try to review the page once a week to make sure I don’t forget, because making the same mistake twice is not acceptable to me.
Any other tips for DBAs-for-rent? I’m always looking for ways to improve.