A typical lazy evening. Aided by a glass of red, I sat at the desk tweaking my fantasy football team. What could be better? My wife sat on the bed, looking at property on the laptop. Click, that's nice, click, like what they've done there, click, look at those curtains, click, what kind of human being would paint a room that colour?
"So," she said, looking up from the bed. "How do computers work?" Find a man emersed in all things football and knock him off his perch. Not an easy question either. Mo, a software developer, was momentarily at a loss. What he needed was a cloak of anonymity.
My wife's lack of computing understanding has always amused me. Note, she's far smarter than me, far better at doing life, far more aware, far more eloquent. But she simply uses computers, to her the computer is one of life's great imponderables. As long as they work she is happy. I, on the other hand, am a computer geek. After working in my current job for close to six years, and five years of marriage, my wife confesses to know very little about what I do. (As an MI5 operative that suits me fine). He works in IT, she'll tell her friends, something to do with finance.
Roused from fantasy football bliss, I struggled impotently to answer the question, deciding to keep things simple. "Think of it in terms of layers," I said, "a bit like an onion. Putting it very simply, at the core is the hardware. The memory, which stores data and instructions, the processor, which executes the instructions and all the input and output devices. The operating system sits on top of all this, so you don't need to worry about ones, zeros, data and instructions. You just use it."
Suspecting that her interest was waning I cut to the chase, leading on to my own career. It seemed like the perfect opportunity to fill her in. "In the olden days coding was a cryptic kettle of fish, you had to understand nonsense like machine code that looks like someone was just having a laugh. These days writing code is very different."
I pulled my soap box out of my pocket, blew off the dust and climbed onto it. "Modern languages have evolved to be extremely clean and legible, shielding us from boring stuff like memory and whatnot. Integrated development environments make it a lot more fun. Clean code written to high standards and following best practices is actually very understandable. You could look at some of my code and know exactly what it is doing."
"Right," she said, "come and look at this house."