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)
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
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".
PICNIC - Problem In Chair, Not In Computer
There’s also PEBKAC - Problem Exists Between Keyboard And Chair.
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?
@editingemily has an awesome one about containers being like the memories used in the penseive in Harry Potter.
I adore you! Thank you! ❤️
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
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.
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).
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)
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.
This is a nice illustration of over-engineering.