DEV Community

Cover image for What are your favorite programming metaphors for non-technical folks?
Peter Kim Frank
Peter Kim Frank Subscriber

Posted on

What are your favorite programming metaphors for non-technical folks?

A while back, I read this comment on HN that has stuck with me since. Here it is, courtesy of user brightball on HN:

I live in a house with a washer and dryer.

After we had our first child there was a stretch where my wife and I were both sick for about 2 weeks and the laundry ended up building up significantly. We had probably 10 loads worth to catch up on and it was going to take all of at least one day, maybe two.

Threw it all in the car, went to the laundromat and had it done in 2 hours.

Laundromat's are now how I explain "the cloud" to non-technical people.

I've used this metaphor a few times since.

@jess put together a great round-up that links out to a few posts on the subject. I also like @kbk0125's CodeAnalogies.com website (many of which have been cross-posted to DEV).

But I'm really interested in your very concise metaphors/analogies, more similar to the one I shared in this post.

Any favorites?

Top comments (15)

Collapse
 
aritdeveloper profile image
Arit Developer

Just today I explained what a variable is to my 7-year-old:

"Say you have 50 tennis balls and you need to show them to 3 groups of friends: at school, at before-after-care, and at church. It would be so hard to try carry all those balls in your arms, right? Well, if you had a big bucket, you could place your balls in there and just carry the bucket to each group. That bucket is your variable." :D

Collapse
 
kurisutofu profile image
kurisutofu

This one I used once with great reception and reuse it anytime I need to explain what an API is:

"It's like when you go to McDonald, you go to the counter and ask for a Big Mac. Later, you receive said Big Mac but you don't know how it is made in the back, in the kitchen.
All that matters is that you got what you asked for.
If they changed the way they make your Big Mac, you would not know and there is no impact on you or your experience.
Now, the API is the counter, the data you request is the Big Mac and you're the process connecting to the API. No matter how they want to get your data ready, it does not impact you, the only thing you need to do is ask for the data.
The list of data you can request is provided to you beforehand, like the menu at a Big Mac".

Collapse
 
chrisrhymes profile image
C.S. Rhymes

PICNIC - Problem In Chair, Not In Computer

Collapse
 
tobiassn profile image
Tobias SN • Edited

There’s also PEBKAC - Problem Exists Between Keyboard And Chair.

Collapse
 
andreasjakof profile image
Andreas Jakof

Also known as Layer 8 in the ISO/OSI Layers. That‘s how I call it.

But isn‘t this the other way round? Obfuscating non-technical terms behind technical ones?

Collapse
 
laurieontech profile image
Laurie

@editingemily has an awesome one about containers being like the memories used in the penseive in Harry Potter.

Collapse
 
editingemily profile image
Emily Freeman

I adore you! Thank you! ❤️

Collapse
 
johnludlow profile image
JohnLudlow

Imagine you hired someone to build a conservatory on the side of your house. They chat to you for a bit about what kind of conservatory you want and then proceed to build it. Then they come to you to let you know they've finished and to complete the paperwork.

Now imagine if you said "Well yes, but I expected a loft extension as well. Well no I guess it doesn't explicitly say that in the quote but I thought it was obvious, wasn't it? Now hurry up and finish the job, please"

Scope creep

Collapse
 
thewellspokendev profile image
The Well Spoken Dev

Think of a chandilier and flip it upside down. All of the lights are Microsoft's various .NET framework languages and the stem is the compiler.

Collapse
 
pkangu profile image
PKangu

That's how I explain my nieces and nephews what I do (FE dev).

I build secret passages: I need some items like two rooms and a wall, a library, some books and a rail (html), I then need to dispone them; so the two room adjacent, the wall between them with a hole, the library covering the hole, etc.. (CSS) and then I need to make the library slide to reveal the passage when you pull the right book (js).

Collapse
 
lepinekong profile image
lepinekong

This is how I explain MVC framework not to 5 years old but to statisticians :) M=Variables or States under Observation, V=Projection of M on several axes (views), Controller=holds the transformation rules (matrices)

Collapse
 
katiekodes profile image
Katie

I just re-introduced myself to Marijn Haverbeke's excellent metaphor about dictionaries being octopi with words tattooed on their arms and lists being octopi with sequential numbers tattooed on their arms. As found in Eloquent JavaScript.

Collapse
 
karataev profile image
Eugene Karataev

This is a nice illustration of over-engineering.
static blog