Should I use waterfall, agile, or lean project management methods for my project?
A question frequently asked among team members and stakeholders is related to project management style. For years members learned about project management techniques specific to the waterfall model. Specialized versions of it came about in both the Rational Unified Process and the Capability Maturity Model. In the last 5-10 years, agile and lean practices have become more commonplace. I would say they are very industry accepted since places reluctant to adopt change, such as Government agencies are now seeking to adopt these techniques as the next silver bullet. But is it good for every project? How do you know which model to use?
Each model has its uses and you have to understand why each model is applicable to the situation. Here is how I explain their uses to my clients.
Waterfall, Iterative, RUP, etc.
When we talk about waterfall style, we are talking about making sure each phase of the SDLC is completed through a gate review process prior to the next phase.
We accompany this with a project schedule captured in a Gantt chart that shows the work breakdown structure and the specific time frames, dependencies, and milestones that are significant in the project.
We can clearly see the dependencies that exist. We can calculate what a delay in one area will affect the overall timeline.
Where the Gantt chart and the waterfall model truly effective is in communicating the project status to third parties and coordinating the efforts. We can see this in how a building is built. The general contractor has some workers who work directly for him and a large number of sub-contractors who do not. This means that the general contractor needs to coordinate and plan when each sub-contractor can come in and do work. The carpenters will come in after the foundation is pored, and before the electricians start their work.
Agile for changing priorities
Using a waterfall model for software development works well when all the parties know exactly what they are building and how they are to build it. However, all to often, the technology is new and the requirements are unclear. This leads to complicated, complex, and sometimes pure anarchy in projects.
The agile methods, specifically ones that use time-boxed iterations, are an effort to manage the chaos. By limiting the work to a 2 week period, and making sure the customer prioritizes the work, the team can plan a measurable amount of work to be accomplished, while at the same time allowing the customer to change their minds as to the priority.
The important aspect is that for 2 weeks, the team knows exactly what they are doing. The client does not have the ability to change that, but they can plan a completely new set of work for the next 2 week period.
Lean model is for the continuous flow
The other model discussed is for continuous flow. The Kanban model is all about limiting the amount of work in a particular stage so that the team keeps focused on a just few things from start to finish. This works really well when we get into an operations team that is getting ad-hoc requests come in and they are measuring how quickly they can move the request to done.
In this simple case, we see that that as items are removed from the In-Progress column, we can move the top item from the to-do. If too many items are in the in-progress column, we need to finish one of them before we move another over from to-do. This keeps the team working on finishing a task before starting a new one.
So, when do I use each of them?
Each of these can be used separately or together but you need to understand what they are good at. I use this simple rule of thumb:
Waterfall is designed to communicate and coordinate external teams.
Agile allows your team to adapt to change by controlling how often the change is allowed to occur.
Kanban is a self-reflective model that allows teams to drive their own efficiencies.