Before working on a project, it is necessary for the team to decide on a methodology to use. Choosing a compatible method is indispensable to a successful project, as they give your project a structure, a framework, which you and your team can work and communicate by.
The two most popular methodologies are the traditional waterfall approach and the agile approach. But which methodology should you choose for your own project? In order to help you make an informed decision, we compiled the most striking benefits of each model – and their respective challenges.
Want to bring your project management to the next level? Then check out our article on the best tools for project managers here.
What is the waterfall approach?
In contrast to the flexible and cyclic agile process, the waterfall approach exhibits a much more linear progression – hence the name. Like a waterfall, the product flows through all phases of a project, until it reaches deployment.
This approach is heavily front-loaded, as it relies on careful planning, a detailed documentation, and consecutive execution. A striking characteristic is that each phase of the project is finalized before the team continues work on the next phase.
Main phases of the waterfall process
The linear model consists of several phases that we want to briefly present. Note that, while there are several variations to the waterfall method consisting of phases that differ from each other, we will go with a 6-step model consisting of Requirements – Design – Implementation – Testing – Deployment – Maintenance.
Each step also includes its own validation: the Design is validated against the requirements, the Coding validated against the Design, and so on.
As we said before, waterfall relies on heavy and detailed planning and documentation. These two things are wrestled with in this first phase.
The project manager collects as much information on the client’s requirements as possible. That means drafting a detailed document that thoroughly describes each phase of the project. The description includes aspects such as costs, timelines, assumptions, dependencies, risks, success metrics etc.
It is crucial that clear communication between the client and the project manager has been established so that all requirements are recorded and no misunderstandings occur.
After the requirements have been thoroughly established and documented, you can continue with the actual design phase. Here, the design team will work on creating a technical solution to the problems as laid out by the requirements document – this includes preparing scenarios, layouts, data models, as well as deciding on the programming language.
This phase results in the development of the product’s software architecture, that is, the blueprint for the system and developing project.
After the solutions have been designed and the architecture laid out, it is time to code the application based on the project requirements and specifications.
The process of writing the entire source code can also be subdivided into smaller units, with each unit being developed and tested for its functionality. At the end of this phase, you end up with a prototype of the application, which will be thoroughly tested in the next step.
This phase is needed to erase any and all possible errors the app may have, and ensure a good user experience with the final product. Therefore, the testing team will utilize the design documents, personas, and the user case scenarios supplied by the product manager in order to create their test cases.
It’s always good practice to set up a bug tracking system to document all found bugs and errors.
If you want to test the usability of your product, feel free to follow our six-step guide to usability testing in this article for best results.
After the testing has been done, and the errors corrected, the product can be released into the market.
Of course, the deployment phase is not the final step – it is always followed by maintenance. You must thoroughly track the software’s performance, document any errors, defects, and change requests from users. That way, you can properly start the process of updating the software and adding new features in the future.
Benefits of waterfall methodology
The waterfall methodology is a tried and tested approach and has been around for decades. Thus, it comes to no surprise that this model comes with several benefits.
Predictability and structure
Because the majority of research is done in the very first phase, the estimates of the time needed for each requirement are usually much more accurate, and therefore provide a more predictable release date.
The structured approach also allows for a better process measurement, as the milestones are clearly defined: Step B will only be proceeded with, once Step A has been finished completely.
Due to its straightforward nature, where the requirements are all laid out from the beginning, each contributor of the team knows what must be done, and is able to plan their time for the duration of the project.
A thoroughly crafted requirements document
Having a detailed document with all requirements at hand allows for developers, who join the project in progress, to get up-to-date more quickly.
A simple, flowing development
One of the waterfall’s most prominent strengths is its simplicity and flowing nature (hence the name!). If the project allows for a waterfall approach, your team can easily work through the steps. Ideally, the customer has added all his desired requirements at the start of the project, so that your team can finish and implement the work items without interference.
Challenges of waterfall methodology
Despite its proven track record, the traditional methodology comes with a number of shortcomings that grow larger in significance, as projects become more and more evolutionary – i.e. they require more room for changes during development. Room, which the waterfall model oftentimes cannot provide.
A time-consuming approach
Its simplicity comes at a price: as each step needs to be completely finished before the next can be tackled, the project takes much more time to be delivered.
An intimidating and big first step
The whole project foots on the very first step. The necessity of the requirements document to be so detailed and elaborate in order to guarantee a seamless development of the product may intimidate some clients. On top of that, the clients may not be able to fully visualize the application just from a requirements document, leading to possible requests later in the development.
Inflexible by design
Like a waterfall, the development flows down through the individual steps. Now, if issues are found deeper in the process, to go back and fix those, proves to be immensely difficult, time-consuming, and following this, costly.
The same goes for the very real possibility that a client may request for changes and new features halfway through the project. It simply is not always possible for anyone to know exactly what they want during the requirements step – having to accommodate these new requests and features poses a challenge for the team.
If one step of the process is delayed (e.g. by last-minute requests from the client, or because of issues found deep into the development process), all following steps will be delayed as well. Nobody can start working on the design, if not all requirements have been agreed on.
Necessary changes later in the process will set back the whole project and pose a threat to the deadline.
Now, that you have some deeper understanding of the traditional methodology, let us take a closer look at the newer approach.
What is the agile approach?
Agile is a set of frameworks and practices based on the values and principles that originated in the Manifesto for Agile Software Development and the 12 principles behind it. (…)
So, what makes project management „agile“? An iterative methodology. Incremental steps. A cyclic and collaborative process. Self-management. And, more importantly, to be agile means to be flexible. So, how does the agile approach work?
There are many different variations to the agile framework. But what they all have in common is that the structure always follows a cyclic process: the project is divided into several time-boxed sprints, which aim to complete one feature at a time. The individual steps are similar to the traditional waterfall model (Requirements – Design – Coding – Testing – Deployment – Maintenance).
The difference here is that once you’ve completed the steps of Requirements up to Testing, you and your team will review the work item and decide whether it can be implemented or needs some changes. By implementing these regular feedback intervals, your project grows to be more adaptable to spontaneous changes.
Benefits of agile project management
In today’s fast-moving world, it is increasingly necessary to be able to adapt to last-minute changes. Not everyone is willing to gather all requirements and commit to them early in the project.
More clients want to be more deeply involved in the development process and be able to make requests for changes throughout the development. The agile methodology allows for that to happen.
Its strong suit: flexibility
And that really is its most striking characteristic: the agile approach is incredibly flexible by design. In-between each sprint, the team, project manager, and the client can together review the work items and discuss possible changes during a retrospective – these can then be implemented in the following sprint and introduced to the client within a short time frame.
It’s in the name – agile
Agile software development is simply more agile. And as such, it’s faster than the traditional waterfall approach. The time-boxed sprints take 2-4 weeks max and allow for features of the application to be delivered quickly and frequently.
That way, the client can give feedback more frequently, and the team may be able to release or beta-test the product earlier than initially planned.
Due to the high involvement the client has in the project, the development of the product is much more transparent, and easier for them to understand.
Predictability of costs
The client can be provided with an accurate estimate before each sprint, since the sprints always have a fixed duration with a limited amount of work the team can accomplish. That way, the client can understand early on, how much each required feature approximately costs, and can prioritize accordingly (Which features are vital? Which additional features fit in my budget? Are additional iterations necessary?).
Challenges of agile project management
Albeit being a fleshed out concept that has been steadily growing in popularity of the last years, the agile approach has its fair share of challenges, as well. Down below we have listed the most striking ones.
Surprisingly, customer involvement
The high degree of client involvement really is a double-edged sword. If the customer simply has no time or interest in participating regularly in the project, or is not able to properly communicate is requirements and ideas, it can turn the whole project into a painfully tedious endeavor.
Communication holds it all together
For the agile approach to work, it is even more so crucial to maintain a strong communication between the team, project manager, and client to ensure that everyone is always on the same page and to prevent any miscommunication. This can prove to be difficult with a large team with different departments, or if some members can only every work from remote.
Self-management and team-initiative
The benefit that comes with the high level of self-management can also turn into a problem. Having multiple Sprints means to comply with multiple, smaller deadlines, and thus requires constant focus and dedication. If a team member cannot provide this dedication, or is otherwise distracted, they will most likely endanger the compliance with the deadlines.
So, which approach should I go ahead with?
Today, most design agencies prefer to work with the agile approach, simply because it allows for more flexibility. Being able to implement last-minute changes at any stage in the process is undeniably a valuable option to have, and one that the waterfall approach cannot provide.
Yet, there are still a few scenarios, in which it would be wiser to stick with the classic formula. If a project is simple in nature, without particularly complex features, it may actually be easier to approach this with the waterfall formula. The same goes for the situation, in which the client does not wish to work closely with the team.
If you still have questions about these models, or are not sure, which approach to use for your project, feel free to contact us. We are happy to answer any questions regarding your venture.