How to use bad metaphors to explain software development
Why explain when you can just compare and get to say "sort of"
Software development is hard to do, hard to understand, and hard to explain. Every company has one layer of a management sandwich that drives its technical decisions.1
The top piece of bread is someone who does not understand technology but doesn’t want to show it. They know what the company needs.2
The middle, the meat, is the truth of how technology works, what the company needs, and the truth of how they can be combined.
The bottom piece of bread is someone who understands technology and must explain it to the top layer. They do not know what the company needs.3
They both feel like they have a grasp of the truth; they are both touching it. How well these two people communicate drives the technical effectiveness of the entire company. The conversations they have determine whether programmers say big scary things like “management doesn’t understand how any of this works” or “they spend the money on the wrong things” or just everyday things like “why won’t they give me a new keyboard” or “somebody should clean this microwave, good lord”.
If you are this technical middle manager, you have to explain missed deadlines, why the team needs training, why training a new developer takes so long, why you need to rewrite something because it is “hacky”, or why some programmers get twice as much done as others and that this is not A Big Deal. These conversations are difficult, you need tools and techniques to help.
One technique is to use metaphors, bad bad metaphors, that will explain now and maybe confuse later.
Here are some good ones:
Software is like construction / physical infrastructure engineering
Why this metaphor is great:
Most people live in places that were constructed
It is normal for everything to be over budget and also late
Everyone likes talking about bridges, they feel very safe
Sometimes you tear down a wall and there is months of unplanned work on the other side of it
Why this metaphor is bad:
Once built, buildings normally don’t need to be rebuilt two years later with a new type of concrete
Construction crews leave when the work is done
Software is like writing
Why this metaphor is good:
Deadlines get missed all the time
The people who do it are weirdos
Some of it happens in coffeeshops by hipsters
The people making it have an obsession with tools rather than the work itself
When a developer can’t figure out a problem for days and wonders if they should change careers (to woodworking), this is sort of like writer’s block
Why this metaphor is bad:
Writing doesn’t normally make any money
Your programmers do not seem creative
Software is like surgery
Why this metaphor is good:
It is very complex and done by experts who are sometimes jerks
The experts wear weird clothes, listen to music, and don’t like to be interrupted
The room where the work happens smells
There are always people stressfully waiting for it to end
You don’t really want to know the details, only the result
Why this metaphor is bad:
You don’t want to encourage programmers to be jerks
You don’t want to pay programmers like they are surgeons
You do not want to spend a lot on fancy equipment
Software is like art
Why this metaphor is good:
Nobody knows what quality is apart from the audience
The people who make it consider themselves quite important
The room it is done in is really messy
Nobody knows what “Done” means
Most people hate art, like most hate software
Why this metaphor is bad:
Software is rarely beautiful
Software normally has a set price
Software sometimes is also a way to launder money, but this is not typical
Software is like research
Why this metaphor is good:
The budgets are huge
It is a huge waste of time quite often; this is expected
The people who do it seem to enjoy talking about it as much as doing it
You have to buy the really good coffee
You have to pay some people twice as much as other people doing what seems like the same job
Why this metaphor is bad:
Research is normally a waste of money
Most executives don’t care about learning and will not read anything that you hand them
And, of course, the best one, to be used sparingly:
Software is not like anything else
Why this metaphor is good:
The industry is new4; the career paths are unclear, we are still figuring it out - kinda
Everything changes every few years anyway, so to many, it feels new
People like to feel special
Why this metaphor is bad:
It just doesn’t work in explaining why your project is two months late even though it just started
Companies run by programmers, like Shopify, don’t have this problem. They have other problems.
In the worst cases, this person does not care about technology and is not interested in it at all; they see it as a necessary evil.
In the worst cases, this person does not care what the company actually does, and sees the business as something that allows them to practice technology. They think that working on software would be more fun without customers.
New like other things that were started in the 1800s.