There’s a common mistake in the thinking of people outside the immediate world of software, and that’s in thinking that it’s a predictable and repeatable process that should be easy to plan.
The comparison that is made is usually towards building houses or something similar. We’ve spoken before about the creative endeavour of software, and about how house building might not be as easy as it seems from the outside. Today I’ll look a little bit more at that.
Across the road from me is a brand new theatre. It’s probably about 60-70% complete, and I’ve been able to watch it take shape over the last year or so. In it, I can see a lot of familiar activity from software development, writ large on the physical world.
It’s particularly relevant as it’s a unique construction. It’s following a plan, but it’s clear that there’s learning and refinement going on all the time. I’ve watched walls go up to be covered in insulation, that’s been inspected, taken down and redone. I’ve seen windows being put in whilst other trades are forced to stop their work to let the glazers past.
There have been days when the main activity is inspecting what’s been put-up, which has again led to rework and changes.
It’s not a simple linear progression of steps, it’s a cycle of work, review, pass / fail and rework or move on.
It’s clear that this distance from the linear progression is even more pronounced due to the unique nature of the building. It’s big and complex, and it’s not the same as anything that’s gone before.
That’s exactly what we get in a software product. Big and complex, a unique creation and something that needs to show learning as you go.
So if you are struggling with someone who thinks it should be an easy task of following a plan step by step, show them someone putting up a complex landmark building to open their eyes to reality.