Choosing the right methodology for project management
In the world of project management, the methodology for project management you use to develop the product is an extremely important decision. It will affect the entire process and can make or break the success of a project, which is why knowing the specifics about the these methods is necessary.
The waterfall methodology for project management is a more traditional route and is very common across the software industry. It consists of a linear sequence of stages during which one aspect of the project is completed before moving on to the next, which has both advantages and disadvantages. These stages are Requirements, Design, Implementation, Test, Installation and Maintenance.
Waterfall is useful when all of the requirements and deliverable for the project are known upfront. This methods linear nature makes it structured and inflexible. Structure is provided, making milestones easily understood. Quality is emphasized over costs and time. If you know for a fact that specifications are not going to change, or the technology being used is well understood, then using this methodology for project management may be a good choice. Example situations could be creating new versions of existing products or porting a product to a new platform. In addition, if your team is more familiar with Waterfall than Agile methodologies it is possible that training the team in something such as Scrum is not worth it.
On the other hand, uncertainties in the project are a sign that Agile is a better fit. Due to the fact that the project development is done in stages, going back to a previous stage once finished is impossible. This gives little opportunity for the client to preview the system and makes deliverable pretty much set in stone for each phase. Also practically speaking, since implementation is done all at once, integration of modules or components is also done as one big bang at the end.
In direct contrast with the Waterfall methodology, Agile is a much more dynamic project management style which takes into account the iterative nature of software. It emphasizes communication, collaboration, flexibility and a working product over documentation. This makes Agile a good fit for projects with co-located teams, less rigid constraints and a schedule that is not finalized.
Scrum is a very well-known and common Agile methodology for project management with a high focus on communication and accountability. It uses a technique called Sprints which are two to six week periods during which a specific set of high priority tasks are completed. Tools such as burn down charts and scrum boards are used to track progress, and meetings are an integral part of the process. These meetings and tools are meant to increase collaboration and ensure that necessary functionality is being implemented. Additionally, a retrospective meeting is also held after every Sprint so that issues in the process can be addressed and improved upon for the next sprint.
If quick iteration and responding to changes is important for your project, then Scrum is a good project development methodology to use. There should be a stable product at the end of each Sprint, with business needs always prioritized. In addition, Scrum team members often work on many tasks without specializing in one role. It is good to take your teams skill sets into consideration when deciding on a management methodology.
Scrum is not all sunshine and rainbows however. Customer interaction is a valuable part of Scrum, so a customer that is unclear about what is needed will make implementing this methodology difficult. Also, as mentioned earlier, documentation is difficult due to the ever changing state of the project. It quickly becomes obsolete, along with some of the work that has already been completed in previous sprints.
In conclusion, two common methodologies for project management are Waterfall and Agile. They each take very different approaches. Waterfall is a linear sequence that is structured and relatively easy to understand. It defines a strict set of requirements up front at the cost of flexibility. Agile is a more iterative approach that prioritizes communication and embraces the changing quality of most projects.