The programmer and the cookingApr 19
I received a little insight into the brain of a programmer, my own, today. My wife asked me to come help her cook, it would be a “bonding experience”, she said.
I have mentioned before, I’m a fundamentalist skeptic. I was very skeptical about this “cooking” and “bonding” experience, but OK, I said to my wife, I would help her cook.
Now, just to give you some additional background: I don’t really enjoy cooking. I make melted cheese sandwiches and I fry eggs. I do these things well and don’t feel a burning desire to prepare any other kind of sustenance. Ever.
One of the aspects about cooking that I especially dislike is how imprecise the whole experience is. Baking, I believe is a different story; with baking, you have a concrete set rules to follow, but for general cooking (at least the way my wife does it) you just add a bit here and add a bit there till it tastes OK. Then you judge by eye (or with your womanly eighth sense of cooking) how long it should be in the oven or the microwave and sometimes you put it in for a bit longer. It’s never exactly the same twice because you’re just adding random things till it all works out, or that is apparently the plan.
That, freaks me out.
So, we start our bonding experience and soon I begin to suspect that bonding was in no way part of the plan. I was there to do the dirty work.
“Peel the potatoes”, she said.
Ok, fair enough, I can peel potatoes, so that’s what I did, in a very precise and ordered way.
“Cut the cucumber”, she said.
I waited. Obviously, there were more instructions to come. None was forthcoming. I pulled all the plastic off the cucumber… huge, fricking, mistake!
“I don’t need that much cucumber”, she said, “and you’ll never get the damn plastic back on”, she went on, “idiot”, she mumbled.
Well, no, I wasn’t going to get the plastic back on. The look I got told me to proceed with haste, but bloody carefully, and without further instructions…
Alright, I start cutting, thin slices… which was apparently the very thing I should not have been doing. “Cut bigger chunks”, she said while I cowered by the sink. “Oh, never mind, I’ll do it”, she snarled at me.
“Get out a pot and fill it with oil”.
I start looking for a pot. My wife, using her womanly seventh sense, instinctively knew I was floundering and pointed out a silvery mesh basket thing.
“Get a pot that will fit that and fill it with oil”, she commanded.
Ah, yes, these were instructions I could understand, or so I thought. I located a pot that fit the silver mesh thing perfectly, had it on the stove and was just about to extract some oil from the cupboard when I was commanded to leave the kitchen, with immediate effect. Do not pass Go, do not collect a damn thing. Just leave.
Contemplating this turn of events, I realise now what the difference is between a creative mind and an analytical mind. My wife is a designer and a woman, I am a programmer and a man. There are very fundamental differences in the way we think. Marriage teaches one things.
A programmer’s life consists of solving problems. Usually, in minute detail. Breaking down big problems into smaller problems and then into even smaller problems untill you are working through an issue step by painful step, checking and then re-checking your logic for mistakes.
Good programmers think a like a computer (especially after a ten hour session of technical programming).
“Cut the cucumber” does, in fact, not compute. A real programmer (and I am one) needs more, much more. The following questions immediately spring to mind (but the frenzy of cooking does not lend it’s self to asking these questions or discussing the results and drawing up a technical specification):
- How much cucumber?
- What will it be used for?
- How large must the initial pieces be?
- What size must the resulting pieces be?
- Which method of cutting should be employed?
- What should it be cut on?
- Where should the cucumber pieces go after cutting?
- Should it be covered?
- How long will it be stored?
When instructing a programmer to perform a task one should be as explicit and as detailed as possible. We need it.
If you are going to give a command like “put oil in a pot on the stove” then you must accept that the first available pot will be filled with the first available oil and put on the stove.
If this is not what you want, then make the instructions a bit clearer and a bit more precise:
- The oil and pot will be used to deep fry potato’s for chips
- Get a 42cm, deep pot and put it on the stove
- Fill it to two-thirds with new sunflower oil from the second cupboard
- Put the stove on medium heat
- Place the wire mesh thingy in the pot
If given that set of instructions, merry and jovial cooking would be had by all.
I suspect, that merry and jovial cooking was not part of the master plan anyway.
* This post was proofed and approved by my loving wife, whom I love very much.
** The lamb burgers made during this cooking experience were of an excellent quality and was thoroughly enjoyed by the whole family.