Over several decades, projects have been initiated or undertaken due to market demands, business needs, at the behest of customer request, technological advancements and to comply with regulatory requirements. As enterprises approach some degree of maturity on managing projects, it becomes necessary for streamlining and standardizing the way these projects are executed, be it product development or providing services.
Multiple project management methodologies were followed and in fact, newer methodologies have evolved lately and have been adopted by organizations depending on the degree of cultural challenges and resistance exhibited by the people. We will look at some of the key project management methodologies followed in today’s world.
The first formal description of the Waterfall model is often cited as early as 1970 in an article by Winston W. Royce, although he did not use the term Waterfall in that article. It was the first process model to be introduced and is simple and easy to understand. Waterfall method has seen an abundant usage in projects where the needs or requirements are well understood and do not change much over time. It follows a linear development by phases with clearly defined stage gates and review processes. Each of the phases is cascaded down and will start when the defined goals are met by the previous phase and signed off.
The phases are-
The main advantage of this model is, it allows for segmenting the work like departments and manage them easily. This model also faced some major criticisms which even led Royce to change his view towards Waterfall. It is less costly to change requirements during the design stage and it is more expensive to adapt to changes when construction has already started. This method does not also provide a working version software to client till production and there is no provision to improvise design of the system midway as there is no feedback mechanism.
The Waterfall methods can be adopted on a fixed scope and fixed pricing contracts where the clients don’t expect the requirements to change frequently over time. It would also be beneficial if the project team is also experienced in this type of plan-driven heavy-weight approach to deliver quality products. The performance of the project is measured based on the delivery date and the budget utilized.
In 2001, a lot of practitioners using Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal and Feature-Driven Development convened in Utah ski resort and were sympathetic to the need for an alternative to documentation-driven, heavyweight software development processes. As a result, “Agile Manifesto” was signed paving way for Agile Software Development. It is an umbrella term for several iterative and incremental development and some of the popular include Scrum, XP, Crystal, DSDM, FDD, and Lean.
"Walking on water and developing software from a specification are easy if both are frozen."
- Edward V. Berard
The fundamental difference between Waterfall and Agile is that Waterfall delivers product increment at the end of the project but Agile emphasis on delivering smaller increments more frequently through multiple iterations. Agile harnesses customer’s competitive advantage and proposes process that accounts changes even late in the game. This is achieved through adaptive planning and evolutionary design. The client is also involved throughout the development process unlike Waterfall method and feedback is received in every iteration through a feedback loop and the product is improvised based on the feedback. But can all projects be executed in Agile? The answer is no, as each project is unique and if the scope of the projects is clear like still water and does not change over time, executing those projects in Agile would be an overkill.
The most common Agile methodologies that are widely used and gained popularity are Scrum and Extreme Programming. Scrum focuses on shorter iterations called Sprints ranging (generally) 2 weeks to 1 month and emphasis on delivering shippable product increments every sprint. In Scrum, design is emergent and evolves over a period of time. The Scrum framework consists of Product Owner, Scrum Master and Development Team.Product Owner: - Responsible for the product vision and building the product right. A good product owner should prioritize requirements and is empowered to make decisions about the product.
Scrum Master: - Serves as servant leader, helping team members work together cohesively, removing impediments to progress, facilitating meetings and discussions.
Team: - Cross-functional and responsible for who will work on which tasks, which engineering practices to be followed necessarily to achieve project goals.
Extreme Programming created by Kent Beck also advocates frequent releases in shorter development lifecycles. The most common elements of XP are pair programming, code review, test-first development, continuous, collective code ownership, metaphor, coding standards, refactoring, simple design, and frequent customer collaboration. The idea is based on the benefits of traditional software engineering practices when taken to extreme levels. Sometimes Scrum will also employ some of the engineering practices from XP like refactoring, simple design, TDD etc.
Agile harnesses customer’s competitive advantage by welcoming requirement even late in the development. The Agile methodologies will be most suitable for time and materials contract where the time and cost are fixed but the scope changes frequently based on customer needs. The performance of the Agile projects is measured based on the value delivered to the customer.
The Kanban methodology (originated from Toyota Production System) as formulated by David J. Anderson is also incremental and evolutionary like the Agile methodology and recommends system changes for organizations to function optimally. Kanban mainly focuses on delivering continuous flow of value to the clients and it accomplishes it by placing constraints on the system.
It is based on below core principles,
Kanban is more useful when the priorities changes frequently and it also balances demand against the throughput (cycle time and lead time) which guarantees the most valued features are being delivered to the client. Similar to any of the Agile methods, this method is highly responsive to changes. It also maximizes the amount of work not being done by eliminating waste and activities that don’t add value. Scrum doesn’t allow changes mid-way during the sprint, but Kanban can help in adding or removing backlog items any time during the project and helps in continuous delivery.
Kanban is used widely when there is a continuous stream of work and tackling a small number of tasks fluidly and concurrently. It is also suitable for time and materials contract similar to Scrum Framework.
There are many more project management methodologies followed in the industry and each project may demand specific methods to be successful. Now hybrid models are getting evolved like a mixture of Waterfall and Agile that gives the flexibility to pivot and use the best methods for a specific aspect of the project. Regardless of what method has been employed to successfully complete the project, there is also going to be a need of tools as well along with process models that are flexible enough to allow to collaborate across the enterprise and deliver projects.