I find myself thinking of ways to explain code to non-coders a lot. It's a little weird, actually.
A lot of times our clients don't really understand what goes into creating a website. I guess it stems from that.
How's this one?
Think of code as any other language. A programmer needs to "speak to" a computer to tell it what to do, so they need to speak its language.
At first, the programmer learns the equivalent of "hello" and "my name is," and then as they get more fluent, they can tell the computer to do more complex things.
A programmer is basically a translator, telling a computer to do what the client needs done.
You can hire programmers who know the language to varying degrees.
Some know little more than "hi" and "my name is," and some can speak, read and write the language as fluently as their own. Most, however, are somewhere in between. They may speak it well but have poor grammer or maybe they're mostly fluent and learning fast.
The good ones will save you time and make your life easy; the bad ones just confuse the translation and cause frustration.