Agile, Kanban or Waterfall?
Which methodology works best? The answer to that question depends entirely on what type of project you are building.
It would be naive to say Agile always works best. Building anything requires following a process. But building something before you have a completed designed, requires you follow a special kind of process. One that allows you to make a start on building the bits you know about, and allowing for the bits you do not know about.
Building a House
Let’s consider something easy to understand and relate to. Designing and building and house. If you have a fixed budget, then it will be absolutely critical the design is completed before the project begins. However, this is not always possible. So there is Risk! A completed design will enable the ‘quantity surveyor’ to estimate the cost of materials and labour with some degree of accuracy. To mitigate the risks, work cannot begin until the design and costings have been completed. Once the design is completed, a waterfall approach would be taken to work through the tasks to complete the project.
What if your budget and end date is fixed, but you have not completed your detailed design. You could start with what you do know. But, even a verse in the Bible has something to say about project budgets, The bible book of Luke chapter 14 and verse 28 says “who of you wanting to build a tower does not first sit down and calculate the expense to see if he has enough to complete it?”. In this case, you could work back from your budget and end date. But this introduces risk. Risk that, despite estimating your costs and effort, your design scope was not fully understood. In software, we call this our ‘high level design’.
We have a budget of £200k, and a fixed end date. We know the average cost of building a house is £1000 per square metre. So we might add a contingency of ten percent. Therefore we allow a budget of £1100 per square metre. So we could start designing and laying the foundations for a 180 square metre house. Then, using an Agile approach, we would design the next stages of the project while working on the parts we know about.
Building a Software Product