If ever I think I know everything I spend a little time talking to my eight year old daughter.
She's very good at asking questions I can't answer, or at least have to think hard about. The thinking hard bit is important because she cuts through bullshit quickly. When she was five and her mother had been sending her to Sunday School, out of the blue one day she asked me:
"If God made us, and God loves us, why would God let us get sick?"
What would you have said? My first impulse was "ask your mother" but that has limited effectiveness. My eventual answer was some lame variation of "what doesn't kill us makes us stronger" but I squeaked by.
When she asks me about my work I give her real answers and frame them in a way that makes sense to her. It's good practice for explaining IT concepts to management types. She's smarter than most of the managers I have to deal with but I figure if I can explain something clearly to her I only have to dumb it down a little bit more for managers.
Recently she wanted to know if everyone who worked with computers was a programmer.
"No," I responded. "I'm not, I'm a Business Analyst."
"Do you know how to program computers?"
"Not really, no."
"And it's the programmers who make the computer work?"
"So why do programmers need you?"
"That's what they keep saying to me."
"I'm serious Daddy, what do you do?"
"I write the business requirements. I work with the programmers to make sure the computer ends up doing the right thing."
"Does that mean you're in charge?"
"I wish. First, I talk to the people in charge about what they want. I work out what their requirements are, that's why we call it business requirements."
"Don't they know what they want?"
"That's silly, everyone knows what they want."
"Not always. And people aren't always good at explaining to someone else what they want. How about if I told you I wanted you to buy me a car, what car would you get me?"
"Ummm, a Smart car, they're cute."
"That's too small for me."
"Then I'll get you a 4WD."
That's too big and slow. I want something faster."
"I'll get you a Porsche."
"I don't have enough money for that."
"Well, what sort of car will I get you?"
"See, now you're asking me about my requirements. I want a Volkswagen Passat."
"OK, I'll get you that."
"What colour did you get me?"
"I don't want red, I want black."
"Why didn't you say so?"
"You didn't ask."
"Is this what you have to do all day?"
"Pretty much, yeah."
"No wonder you're angry all the time."
"I AM NOT ANGRY ALL THE TIME!"
This conversation was slipping beyond my control quickly. I decided to try a different approach. This past school holidays we'd seen Shrek 3 which had led to watching Shrek 1 & 2 on DVD again. I decided to explain requirement gathering in relation to Shrek.
"See, this is what I have to do - ask the right questions. The programmer is like the car dealer, they can get you whatever car you want. All you have to do is be clear about what you need you car to be able to do. Usually you have to start by asking big questions and work your way through layers of detail.
"It's like in Shrek, when Shrek said ogres are like onions because they have layers. Requirements have layers and I have to pull them off one layer at a time to get to the middle. Then I know what to tell the programmers."
"So the people you work with are like onions?"
"Do they stink?" Gotta love 8 year old humour.
"That's a bit harsh."
"Do they make you cry?"
"Sometimes I come close. Usually they make me want to scream."
"So they really are like an ogre? They're scary!"
Sometimes they are very scary. And I know I don't want to find one of them under my bed.