Hello,
I am giving a workshop on Sunday.
The goal is to try to give complete beginners a less wrong idea of what programming is all about.
Not a small challenge given that for my students, programming looks like something aliens do.
Heck, even the majority of companies hiring developers don't really understand programming either! See how they make us solve algorithms on a whiteboard, put us in noisy open offices and make sure to kill our focus with unhelpful meetings and constant interruptions on Slack.
So my question:
What are your favorite non-technical analogies to explain programming?
I'm interested in good analogies AND in the popular but really helpful ones - like Hollywood describing us as doing magic on a screen or recruiters thinking we are Ninja Rock Stars.
Oldest comments (32)
One such analogy from me:
Contributing to open-source is like dancing Tango
Jean-Michel Fayard (fr/en/es/de) γ» Oct 11 γ» 6 min read
Iβve always thought of programming as language.
In theory we are doing the same job as an ambassador, speaking the language asking for things. Solving culture specific disputes etc.
Except we are talking to computers, not people, and culture in this case could be patterns, frameworks applications, systems etc.
Incidentally itβs also why programming have been getting more verbal I believe.
+100
I love learning (non-programming) languages.
I speak fluently french, spanish, german and english and tried out others as well.
And the analogy makes totally sense for me.
Funny, there is a (great) podcast called exactly like this from @jcutrell
spec.fm/podcasts/developer-tea
Of course everybody approaches it differently and they can all work just fine.
I like to think of myself as a developer as an artisan: like a blacksmith or a cabinet maker.
I'm not an artist, I'm not building sonething that exoresses an idea or feeling but something that works. Of course that doesn't mean it can't be pretty, elegant or richly decorated, but it has to be a working item.
We all may have your own personal style but we're all working with the same basic techniques and it's important that they're compatible and reproducible.
We know where our materials come from and how they behave.
And we love our tools, sometimes building our own.
The only ones I strongly disagree with are "Guru" and "Rock Star".
They send out all the wrong messages for me.
Yes, and that's because programming is a team sport, not a star system.
This is why the metaphor from Scrum makes much more sense :
A team of rugby players with different skills that shares a common goal, take hints from a coach, but otherwise self organise when it plays together on the field.
Programming is much like writing ... a manual.
You describe every step from start to end and if followed correctly, you reach the goal!
Now your job as a programmer is not just writing down the steps, but also coming up with the them.
Ah ... and you are writing for a (literate) baby, that follows each and every instruction to the letter, but shows no initiative and only understands itβs own language.
Well, when I teach programming to beginners I say it's like carpentry: It's easy to learn, but requires practice to master.
Programming is playing god in a world of sand. You can build anything you want but there are hard constraints.
Build with basic granules and it'll take forever to accomplish anything.
Build too vertical and it'll all come crashing down.
Build everything from premade molds and you'll get a lot done fast; but you'll never learn how to work without them.
It's all about granularity. Learn how shapes flow, fit, and bind together. Then apply that knowledge to work with and/or build your own molds to work faster.
Achieve that and you can build anything
@yansern Now folling you on Twitter :)
In my workshop on sunday, I want to show how to launch a website using GitHub, netlify and a static website generator.
Continuous integration is like having a team of mechanics working on rebuilding the whole engine of my car, pistons, rings, valves, etc... with the crankshaft not even stopping for a second, and me, still driving the car on the road.
We are Galton board builders. Had to google this name.
Information are the beads. We can limit where and how it comes from, but there's great uncertainty involved. We use syntax, patterns and frameworks which are the pegs. And for a predicted set of beads falling, the disposition of the pegs has to drive each bead to its right location.
To underlign just how much uncertainty is involved,
I plan to use this Brexit analogy :P
I have to confess I have no idea what Galton board builders are :)
Aka bean machine or quincunx. Something a Victorian era statistician would built to demonstrate an obscure theorem hard to explain. I find it fitting π
youtu.be/S5WAswaJRjw
As far as regular people are concerned we're gods.
I would say: aliens.
you're both right.