Documentation and Asking Questions

(Rant warning. Well, if I never write anything contentious, you might all drop off to sleep without me noticing …)

Over the past few years I’ve had many conversations with different DBAs (at least four teams worth!), System Administrators, Managers and even her indoors (poor woman!). It’s a subject that’s very dear to my heart as several of the unfortunate recipients of my arguments would tell you 😉 Frankly, people are sick of me rabbiting on about documentation and processes, so this blog has been bubbling around in my little brain for a long time. (i.e. Can I just emphasise that this blog describes just about every new site I turn up at and not just the latest?! That statement is completely true and I’d be upset if this was taken as a description of how things are at Pythian. In fact, they’re far better than average when it comes to documentation and particularly processes but, like all places, they’re not perfect. Not least, because the place is stuffed full of DBAs 😉)

Other recent inspirations include Jeff Hunter’s blog on Cookbooks, which I agree with wholeheartedly, and one of the quotations on the front of Jonathan Lewis’ blog.

Sun Tzu: When trouble is solved before it forms, who calls that clever?

I don’t think good documentation was the motivation for that, but it does to get to the heart of my distrust of the ‘Hero’ DBA.

Let’s start with advice repeated many times on the Internet in guidelines for newsgroup postings, blogs, articles, flame-mail (even the funny ones, between friends). You should look for an answer for yourself first before firing off questions to large communities, looking for easy answers. Not to do so is lazy and leads to constant repetition of the same questions. You’re also less likely to learn new things in the search for answers to your specific questions. The gist of this argument is that people will normally be happier to answer your questions if you’ve tried to find out the answer for yourself first.

I have some sympathy with this point of view, particularly when there is plentiful vendor documentation freely available. In an office populated mainly by people who operate in today’s electronic domain, it isn’t surprising that there’s a certain kudos attached to those that can work things out for themselves without constantly asking questions.

Let me explain why I think this approach is utterly wrong for the workplace and that everything that’s been done before should be passed on to the next person as clearly as possible.

What a waste of time. When I’m working, I want specific, accurate answers as soon as possible. Whilst I might learn some interesting new facts whilst searching for the salient ones, I might also waste a lot of time chasing up blind alleys. If someone else knows the answer and it’ll take them 30 seconds to tell me it, I struggle to see the value in taking 10 minutes to work it out for myself, beyond some sort of boost to my tech ego. This is a job we’re doing, not an interesting little hobby (and I say that as someone who seems to enjoy it more than most). Multiply that 10 minutes for each new employee and maybe it’s better just to write it down and tell people where it is. It’s one of the reasons Pythian keep a record of everything the DBAs do – so that you can look at previous work.

Look, I know about Oracle, but I don’t know about each individual site’s processes, procedures, hostnames, passwords, which bloke to talk to get an ID card, which lady can create me a secure account on server y, what that specific error means and so on. Of course you know the information – you’ve worked in the place for 2 years! Maybe you had to work it out for yourself and it took you a month or two to get everything sorted out, in dribs and drabs. Don’t you think it might be a tad wasteful for each person to go through the same process? Maybe some people think – ‘well I had to learn it the hard way, why shouldn’t he?’ – but I just don’t get that point of view.

What a waste of skill. I don’t mean me but, let’s face it, most people who work as DBAs are pretty highly paid and I’d hope that we’re not getting paid to flail around, trying to work out what we’re doing. i.e. There are better ways of spending our time, including – shock, horror – documenting things so that only one person has to go through the cycle of learning and then share it with everyone else. We have enough on our plate keeping up with new features, new problems that no-one’s ever seen before and new applications coming through the door. Let’s maximise our time on what’s new and interesting, not re-work.

Documentation imposes self-discipline. If you can’t document it, there’s probably something wrong with the way you’re doing it. The minute someone starts saying to me, ‘Ah, well, that shouldn’t normally happen, so don’t worry about it, or go and speak to John when it does and he’ll help’, I start to worry about the process itself. Maybe by documenting it, it’ll flush out the flaws in the process. Is there really a process so complicated that only one person can do it? Better still, when someone else attempts a task that ‘only John’ can do, it’s the perfect test of the documentation. The chances are it will fail – it always does – but that’s when you get the chance to improve things.

Individual information and power. Speaking of ‘only John’, none of us should be indispensable, although it’s natural for most people to enjoy the feeling. When I see a situation where there’s only one person who can perform a task, I question the management. It’s not John’s fault that he’s the only guy who can perform the task. In fact, good on him for having the skills (although he might start getting sick of the workload and pressure, too!). However, it’s bad for business – what happens when he gets run over by a bus? (I suppose he’ll at least go with the knowledge that he was the only true expert on process Y, but I doubt that would give much comfort.)

Information and skills are incomplete. If everyone learns things through some initial basic knowledge and then on-the-job learning through trial and error then everyone ends up with different skills which are almost inevitably incomplete. The best example I can think of here is Unix shell programming (of all varieties). I bet experienced DBAs will recognise this straight away. My shell programming skills are limited. Why? Because I learnt them by looking at other people’s scripts, hacking around, having a go myself and learning through trial and error. Now that might have been rewarding for me, but is that really the best way to learn an important skill for my job and can I really be sure that I’m not one small misunderstanding away from screwing things up really badly? When I do, will it be an interesting exercise to fix it, or just plain amateurism? Wouldn’t it be better to learn the thing properly than to impress people with the myriad subjects I know a bit about and can ‘get by’ on?

Let’s say that I do manage to work almost everything out for myself? What happens when I find out that actually there’s a few snippets I missed here and there? Does everyone have to make the same mistakes based on the same little bits that they were missing? Doesn’t that make you as miserable as it makes me and, for what, so we can admire our ability to think on our feet?

Caring about our colleagues. I know that might sound a bit touchy-feely but, ultimately, the aspect of this that upsets me most is that it’s so damn selfish. I love making sure that other people know what they’re doing because I know what a horrible feeling it is to not know what you’re doing. I wouldn’t wish it on anyone. It’s selfish in the wider sense, too. Are we all to remain geeks, sitting in our corners, stuffed full of pride at the things we know that others don’t, or are we in it together and want to become better as a team? I realise writing good documentation and answering people’s apparently dumb questions is time-consuming and can be a bit frustrating sometimes, but don’t we all grow better together as a result?

Phew, I think I need a lie down!

13 comments

  1. Hi.

    I agree entirely. I think people struggle with documentation because they feel it has to be long-winded and stuffy. Most of the time, I just want the basic ideas and some idea of where I find more detail. I think this approach can work for basic company information also.

    I guess every company needs a well maintained FAQ or Wiki, to allow people to get involved in the documentation process…

    Cheers

    Tim…

    1. I guess every company needs a well maintained FAQ or Wiki, to allow people to get involved in the documentation process…

      Agreed. Now I just need to take my scruffily-written notes and get them on to the Pythian wiki, where there are personal sections too!

  2. I get my guys to write things down in a shared documentation system (Lotus Notes) replicated to their laptop PCs – every new incident or problem and what to do about it, even down to cut-n-paste commands that work.

    At the end of the day this is our jobs, we are paid to get things right quickly.

    (where was the rant Doug? 🙂 )

  3. doug,
    Documentation or the lack of it, I’m with you all the way but there was one exception over the last few years at least when you were there, maybe not now. In a company that should have known better, several years work creating and maintaining the documentation of all operational DBA standards and processes suddenly became unimportant and didn’t require ownership. So it must have been a coincidence that a handful of DBAs could support some 1500 global databases … right okay

    DBAs need management backup and management need to boot DBAs who refuse to document as some kind of self-preservation act. Management also need to understand the real benefits and cost savings of documenting repeatable processes – higher ratio of databases per DBA: any new DBA can walk in off the street and become productive immediately: geographically dispersed DBAs doing things more consistently rather than their own regional or personal way: more DBA time for productive work rather than duplicate work or rework or time wasted looking for the frigging listener.ora.

    As well as writing, some DBAs also don’t like reading documentation!!

    1. Full disclosure, folks – Bill was one of the primary authors of Sun’s global DBA standards. So he’s biased, but right of course 😉

  4. well, my friend, you at least know how to ask the right questions. and i hope that you don’t have to work with a “hero” DBA like i do. does his best to make me look the fool he does. not that it’s a hard job.😉

  5. That’s where I keep all my cookbooks, on a Wiki. I certainly can’t document everything as things change. But when there is more than one way to skin a cat and I want it done a certain way, I document it, point my guys to it, and expect it to be followed.

  6. As one who has just installed Apache, MySQL, PHP and Drupal on a spare server in order to provide a place where articles can be written that document procedures, setups, dependencies and the rest… I couldn’t agree more. Two reasonable DBAs spent the best part of three years carrying all that stuff around in their heads, and it seems not to have occurred to them to document it… weird.

  7. I thoroughly agree and try to document, and script, whenever I can. (Anything I have to do a second time is a candidate for scripting, then I document once the script is relatively stable. I probably don’t document the one-off things as much as I should.) However I struggle with the format of my documentation.

    A step-by-step cookbook is pretty straight forward, I don’t have problems with those. I use Visio to draw pictures to help people visualize flow for multi-step processes. But I’d love to see how others document scripts, etc. I.e. for scripts, inputs (both parameters and files), outputs, a break down of the steps the script executes, notes/assumptions, examples, etc.

    Just today I was in making minor modifications to a wiki page I created for a series of scripts. It has all of the information but isn’t easy to read. If I wrote it and think that I can imagine what others think!

    Does anyone have any examples they’d be willing to share? Document the documentation? 🙂

    Thanks for the timely post!

    1. Linda,

      Reading between the lines of your comment, I’d guess your documentation is pretty good already. It’s always the people who produce good stuff that worry about it 😉 The rest just don’t care too much.

      You already have one reply from Noons but one of the reasons it’s taken me a little while to reply to you is that I think it probably does merit further coverage in my blog and as my blogging’s going to be curtailed for a couple of weeks, it might take time to appear, but I think it’s worth doing. So, fingers crossed and watch this space 😉

      Cheers,

      Doug

  8. “What a waste of time”
    Bingo! Couldn’t agree more.

    And the main reason first thing I do at any place I work at is create a DBA Log document.

    For Linda:
    here are the headers of the one I use now:
    “Who Date(yy/mm/dd) Service Call# Node SID Event Outcome/links/notable instances”

    Nothing fancy, just a Word “table” with those columns and headers. Once an event happens, a new “record” line is created at the top of the table and info filled in. That means the last event is always at the top of the list – LastIn/FirstOut.

    I’ve found this to be a format that helps everyone. Variations are possible and needed, of course. But the general gist is the same, the 5 ws: who, when, where, what, why.

    Everything gets logged here. Even something as simple as an increase in size of a datafile, or a changed parameter in init.ora, or a crontab entry change.

    And yes, it needs commitment from the folks involved. Which are usually dbas, therefore presumably professionals who can assume and accept a responsibility.

    And it’s good for everyone as well. Many times I’ve seen OS folks peeking at my stuff to find out a pattern, a problem, a trace of an event, a coincidence. That sort of thing.

    Only wish other sections of IT did the same…

    1. And yes, it needs commitment from the folks involved. Which are usually dbas, therefore presumably professionals who can assume and accept a responsibility.

      I’d like to think so and probably still true of a majority, but sometimes I wonder 🙁

Leave a comment

Your email address will not be published. Required fields are marked *