It’s ironic really – we intuitively know that to solve complex problems we need to take an iterative and incremental approach. From writing an article to painting a picture to writing a song – you iterate and increment. Sometimes it’s quick and easy – sometimes you just want to give up.

But software? That’s easy! Just pull up a Gantt chart and we have it in the bag. Connect our Tayloristic siloes together and bingo – we have the delivery date! What could go wrong? That’s why it’s called a software factory, right?

It’s never going to work for at least 2 reasons. Probably more, but 2 stick out:

  1. The written word is a piss-poor means of communicating requirements. There isn’t a software project out there, that hasn’t proved that a sentence can be interpreted in more than one way.
  2. People. They change their minds. Particularly when they see how their written words have been interpreted. Or how outdated their requirements have become – since they wrote them 6 months ago and waited another 6 to get them implemented.

So, every decent software project is complex. Which means it requires an iterative an incremental approach. Which means Waterfall can’t work (not that Royce ever recommended it). But, hey, who can expect a CFO to understand that?