I frequently find myself in the situations where I have to explain the complexity of software development in particular and of technology projects in general to the people that are in way, shape or form related to the IT field. The dialogue below is, in my humble opinion, the best and the most entertaining explanation I have encountered so far:
The marketing guy: (snidely) So, what is so complex about IT projects?
The programmer: Well, imagine that you are writing a script for the movie "Jurassic Park 8" ...
P: You have to describe the following scene: "A very angry T-rex is running across a field on a rainy day ..." So, you start your script with the words "It is raining" ...
MG: (even more snidely) And what is so challenging about that?
P: Suddenly you get a message from your computer telling you that your T-rex is dead!
MG: Why would he die?
P: Well, you start investigating and discover the following: A scientist who was studying pterodactyls close by, lost his balance on a slippery rock (it was raining, remember?), his rifle fell on the ground and discharged a shot. It turns out that the bullet ricocheted off the nearby tree and hit the T-rex right in the head.
M: Oh! And what are we supposed to do?
P: We can load the scientist's rifle with blanks, but that could endanger his life ... We could get him a new pair of shoes, but that would be too costly ...
M: So, what did you decide to do?
P: We decided to remove the tree to eliminate the ricochet factor
P: Unfortunately we got the message that T-rex's main enemy, the Indominus Rex died in the next scene!
M: But why would he die?
P: Apparently he tried to lean on the non-existing tree!
And what tricks do you use to explain the unseen complexity of IT projects?