When I try to describe what programming is like, I frequently think of blind men describing an elephant. One man is put at the head of the elephant. When he reaches out to touch the animal, he encounters the trunk and the tusks. As he feels his way down the trunk, he discovers the end where the animal picks up objects and breaths. He relates that an elephant is similar to a snake. Except it hangs down and doesn’t slither on the ground. Plus it has these spears that stick out – to keep him from bumping into things he summarizes.
Another man is placed before the front shoulder and leg of the elephant. He feels the enormity of the beasts legs – and how wrinkly the skin is. The texture is rough – his final analysis is this is a huge ‘stump’ of an animal and it’s very, very old – due to all the wrinkles, and his age will prevent him from caring anything. Also, he’s sure the shear size of the elephant legs will stop the animal from sitting down.
The final man is placed behind the animal. When he reaches out, he touches the tail. After examining this, he proclaims it to be smaller than a horse – based on the size of the tail and nothing to be feared, nor can this animal be useful – too small to carry much of a load.
Of course, circus performers, and foresters in India who’ve seen and work with elephants know all these attributes are incorporated into one animal that is both fearsome, graceful, and useful.
Programming is being a sighted individual building an elephant from the reports of my blind peers. I’m working from what I’ve been told and never seen. Over the years, I have become leery of the story I’m told. The story is horribly mangled once it reaches me, and often, the parts aren’t even in the right order.
Here’s a typical interaction between me, the dedicated programmer (DP), and the “half-the-story is enough”, sales rep (1/2 IE):
½ IE: Our program needs to give the client cake.
DP: What kind of cake?
½ IE: What do you mean, “What kind of cake? The kind you eat.”
DP: Why do they need a cake?
½ IE: Because they want a cake?
DP: Why do they want a cake?
½ IE: Okay, maybe you weren’t listening … They want a cake, because they want to “eat” the cake!”
DP: Why do they want to eat cake? And did they “say” they want to eat cake? Because last I heard, everyone is going on a diet, so why do they want cake?
½ IE: Fine! I’ll call them, and feel like an idiot, and ask them, “What kind of cake do you want?”
DP: *in an irritated voice* Do not ask them, “What kind of cake they want”, ask them, “What are you using the cake for?”.
½ IE: *rolling eyes* Okay, okay, I’ll ask them, “What do you use desserts for?”
DP: Are you listening me?! Don’t ask about desserts – ask about cake – that’s what we’re talking about.
Two days pass by … I’m now working on a program to create fine cheese. I’m on a tight deadline, and now the Sales Rep chooses to show up, and without waiting for me to look up, without me inviting him to sit down, he pulls up a chair and launches into this diatribe:
½ IE: Okay, the way you make a cake is you put flour in the oven, and when it’s done baking, you cover it in frosting.
DP: *Me ignoring the sales rep. as I concentrate on a tricky part of code I’ve been debugging for the last two hours.*
½ IE: Did you hear me? I’m telling you how to make a cake.
DP: *Me, abandoning my break though thought about fine cheese production* You can’t just put flour in the oven … there has to be something else.
½ IE: No, I’m telling you – they told me. Flour in the over, bake at 350 degrees, remove and frost.
DP: I’m not buying it. Remember the “scrambled eggs incident”? You SWORE, you put the whole egg in the pan – “just crack it in the pan you said” … wait about 3 minutes and remove it from the pan. Remember that?
½ IE: *Hanging head in shame, mumbles* Yeah, yeah, I forgot to tell you about the whole “eggs need to be scrambled BEFORE they go in the pan, part. It was just one little thing.
DP: No, it was more than one little thing.
A.) You didn’t tell me about the bowl the eggs needed to be mixed in,
B.) You didn’t mention the salt,
C.) Or the pepper – and
D.) MOST IMPORTANTLY, you NEVER MENTIONED THE BUTTER!
You know, the butter in the pan – the butter that prevents the egg from sticking to the pan?
½ IE: Am I going to have to go through the scrambled egg incident EVERY TIME I ask you to program something?
DP: No. When you can give me the information I need, when I ask for it, I’ll stop bringing up the scrambled eggs. Now, what are they using cake for?
½ IE: And the frosting can’t have any trans-fats in it. It’s a big no-no in the industry these days, so don’t make that kind of frosting.
DP: *Ignoring the topic of frosting altogether* What do they use the cake for?
½ IE: And they need to have the program make cakes by December 10th, in 20 days.
DP: Perhaps you haven’t heard me, “What do they use the cake for?
½ IE: And it’s got to have dried fruit in it!
DP: *Raising the dreaded eyebrow* Don’t tell me what needs to be in the cake – tell me why the hell they “NEED CAKE!”
½ IE: They give it to their customers, everyone gives fruitcake to their customers!
DP: *trying to contain my temper* And what do their customers do with the fruitcake?
½ IE: You know, that’s the funny thing. You’re going to die laughing when you hear this! Are you ready? Ha, ha, ha … this is just too funny. They throw it away! No one likes fruitcake, it’s just a tradition! Isn’t that funny?
DP: *rising out of my chair and bending over the sales rep* You want me, to spend my time programming our program for FRUITCAKES, fruitcakes no one eats any more and they throw away?
½ IE: Yeah, it’s tradition, we’ve got to do it.
DP: *shaking head in disbelief* Get out of here! Don’t bother me again about this. We are not creating FRUITCAKES so people can throw them away! How stupid is that? And what about all the money your client spends on unnecessary ingredients? Did you point that out to them? Are they making so much money they can afford to waste it? Why don’t they give out something USEFULL to their clients as a “Thank You” each year?
½ IE: How’d you know it was a “Thank You” gift? Who told you about that?
DP: I’ve been programming for 10 years! You don’t think I’ve heard about fruitcakes? Get out of my office – damn, now I can’t remember how I was going to fix this fine cheese. Ahhhggg! Stupid sales reps, with only ½ the story.
So for Christmas I’m giving the sales staff fruitcakes wrapped in paper that says “Why?, why?, why?” all over it. And inside there’ll be 3x5 cards with these questions written on them:
Why do they need [insert latest request]?
Why do they do “it” like that?
What does the result mean?
Who looks at the result?
What will the result determine?
And I’m not letting anyone in my office until they can answer those questions! Now I’m going home to watch my TiVo, and play World Warquest and pretend all those annoying minions that I’ll slay are sales reps! Yeah, yeah, sales reps, that’s what the are!