This post over at The Daily WTF struck a chord with me. I can definitely feel the pain of trying to explain programming to non-programmer – or even just explaining what it is I do. Most times, I just get blank stares. To most people, “I work with computers” is the only thing they understand. The fine distinctions between someone who works with, say, designing CPUs for mobile devices and someone who writes web pages is totally lost on them. It’s all just “working with computers” – basically, anything beyond doing word-processing and web-browsing.
Let me give you two examples.
As I’ve said before, programming is something between a creative practice (like art) and a technical craft (like construction). You are both building something and being creative – at the same time. So naturally, you hit “blocks” sometimes and get stuck. And, likewise, you sometimes get a major breakthrough – like when an artist has a flash of inspiration and creates some amazing piece of art, so too does a programmer figure out something tricky (or elegant, or whatever).
Unfortunately, trying to share this enthusiasm with anyone who is not a programmer is basically an exercise in futility.
Me: “Yes! I just figured out how to implement this really tricky method and it works great!”
Anyone else in the world: “Huh?”
Without other programmers around to share in your joy of accomplishment… well, it’s best to just keep your enthusiasm to yourself, or so I’ve learned.
On the other side of the coin is the other edge of being the “computer guy” – namely, that everyone expects you to know everything about their particular computer problem, as well as be able to fix it in just a few minutes. (Coincidentally, this is why I have a t-shirt which says “No, I will not fix your computer.”)
I’ve had people show me the most awful computers – in the worst possible state of disrepair – and they expect me to be able to fix it up like new again in an hour or so. They usually show me these computers when I’m on vacation, or when I’m at their house for some other reason (i.e. not because they asked me to come fix their computer, but “since you’re here…”).
This is a bit like towing a dead car that’s been beaten on for years without an oil change and was just in a bad accident to your mechanic – but not to his garage. Instead, you brought it to his house (where he doesn’t have all his tools – they’re at the garage of course) and you drop it in his front yard (which is sure to kill the grass) and you expect him to just drop everything and make your car work by this afternoon so you can drive it to a party.
Or better yet, like you’ve tracked down your mechanic while he’s having dinner at a fancy restaurant (all dressed up & everything), and you barge in on his meal and ask him if he can fix your dead junk car that is coincidentally blocking his own car from leaving the parking lot.
If you don’t understand what’s wrong with this, I suggest you go try it with a real car and a real mechanic. See how far you get. I will not be liable for your death, though, if your mechanic breaks into a blind rage and kills you (with the rocker arm from your own dead car’s engine, for maximum cosmic justice).
With any luck, at least a few people will read this and have some measure of understanding as to what a programmer does – even if it’s only a little understanding, it’s better than what most people have currently.