Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are there any good metaphors for explaining project complexity to a non-programmer? [closed]

The speaker almost certainly really meant "painting the Sistine Chapel [ceiling]". Are there any meaningful parallels?

Michelangelo had some problems with the scaffolding suggested by the original architect. He ended up constructing his own framework.

Michelangelo was a sculptor and he had to learn fresco painting in order to complete the commission.

Pope Julius II originally wanted 12 figures painted, of the apostles. Michelangelo negotiated a free hand in choice of subject matter, and delivered Old Testament scenes depicting over 300 figures. He did all the painting himself.

The project continually ran out of money(because the Pope kept waging war with the surrounding states).

So let's see. Heavy dependency on a technical prima donna, cashflow problems, not delivering to the client's specifications... You're right, it sounds like no software project I ever heard of.


I would recollect an old anecdote I once heard:

An auto mechanic asks a surgeon: "Why do you earn that much? What could you possibly be doing that complicated? My work with engines looks very complex and challenging to me, and I'm real good at it! I can fix anything that is wrong with an engine!"

The surgeon then goes over, turns the ignition and starts a car. Then he looks at the mechanic: "Well, now fix it."


It's not rocket surgery.


Some metaphors...

  • Complexity-wise, it's kind of like building a car, or boat, from scratch, by yourself. Software projects that require a team of engineers are like building the space shuttle. The only difference being that if you foul things up, people don't usually die. If peoples' lives are at stake, it's even more like the space shuttle. (Software is almost never as cool as rocketships, though.)

  • It's true that your software project isn't the Sistine Chapel (what is?), but it is kind of like building a freight management system, which is itself incredibly complex. You could draw some diagrams on a whiteboard or happen to carry around system design and dataflow diagrams. Help them see.

  • Ask, "have you ever built a computer?" Selecting and ordering all the components, building the computer, selecting and installing operating software, device drivers, configuring the final result will all take less time and be far less complicated than this freight management project.

The advice about relating it to something they do is good, but make sure you understand enough about what they do to make an adequate analogy. If they're a trained mechanic and you said it's comparable to rebuilding a carburetor (instead of, say, an automatic transmission), they might think "okay, so it's not very complicated."

Neil Ernst talks about software metaphors a bit, applicability of the home contracting metaphor, and also makes the points out that software engineering is inherently hard to explain because it is work in the abstract.

Neil links to an essay by Jim Waldo, Software Engineering and the Art of Design, in which he points out

In this way, what we call software engineering is really more like architecture (real architecture that produces buildings) than it is like other kinds of engineering. There is an element of science (a building has to obey the laws of physics) but there is also a large element of art. Depending on what kind of software you produce, the mix of the two may differ some, but there is always a mix.

So, perhaps grand architectural and building feats are an apt metaphor. (Not that what we do comes close to the Sistine Chapel, but we should approach what we do with that in mind.)

Unfortunately the person who dismisses your project as trivial is unlikely to understand this. They might not be able to think abstractly enough to get it. The best you can hope for is that they kind of grasp the car or boat or house analogy, or maybe help them to see it with diagrams.

Edit: You made a point about the relative complexity between your project and "drawing controls on a form." Perhaps you could respond to the Sistine Chapel remark by saying "that's true. However, if a three month web project is the small shed behind your house, this freight management system is Rogers Centre.


If it's not like building the Sistine Chapel, maybe it's more like building a house. Lots of different things go into building a house, with lots of different people involved with different specialties. Nothing is overly complicated, but there's a lot of work involved!

The problem is its really not like building a house; it's more like building a house that changes all the time. For the purposes of complexity, though, this might illustrate your point more effectively.