Teams changing from waterfall development to a more agile approach are often struggling with the iterative and incremental development. Agile software development can be compared with building a pyramid. If you build your pyramid with the waterfall model (the classic way), the chance exists that the pharaoh dies before the pyramid is completed. If you build your pyramid on an incremental and iterative way, no matter when the pharaoh dies, he will always have a pyramid. The pyramid will not be completed like planned, but at least he has one.
The mindset/rule here is: make sure that if the project ends earlier then planned, you have at least something to give to your customer.
How would you do this in practice? Let’s say you have to develop a chain of screens with an interface to the backend (database, mainframe). For example a web store.
If you would apply the rule described above in this situation, at any moment in time, you need a partial delivered application which your customer can use. With a chain of screens is more difficult to stick to this promise. You cannot start with building your first screen and, when finished, the continue with your next.
When we look at the teachings of project management, we can learn that the critical path describes the longest path of planned activities to the end of the project, and the earliest and latest that each activity can start and finish without making the project longer. If we apply this principle to our chain of screens that need to be developed, we can select the screens on the critical path of the application: which screens (and according mainframe interactions) need to be finished first? When priority is given to the development of these screens, we know that in case of project mayhem the customer will have a solution he can work with or further develop.
What about work preparation, prestudy, analysis and design?
The principles of iterative and incremental work can also be applied to assignments other then actual software development. If you would need a prestudy, you can also execute it on a iterative and incremental way. The same applies for your analysis.
In this case, if the pharaoh would die earlier then expected, you would only have the blue prints of the pyramid. You cannot bury him, but let’s be honest: you have to start somewhere.