The following is a guest post by Uwe Dreissigacker. Uwe is the Founder of online invoicing software InvoiceBerry. InvoiceBerry helps small business owners and freelancers to create professional looking invoices, get paid online and keep track of unpaid invoices. In his free time, Uwe travels a lot, explores new cultures and loves trying new spicy dishes.
As a business, if you want your operation to run smoothly, managing productivity and your workflows is one of the best ways you can stay on track.
Before you even get started on a project, you should first take a step back and plan out your approach.
What methodology will you use? How will you manage productivity and stay on track? SCRUM? SWOT?
The choices can be overwhelming. Not to mention, over the course of the actual project, you’ll have to make hundreds of other choices.
If you’re not sure where to begin, it’s best to think about your project as a whole and then select the right methodology you’ll follow – Waterfall or Agile?
The choice you make will impact you and how your team operates – so, choose wisely.
Both are tried and tested methods of project management that have been used over and over in the past.
But which one is right for you?
Well, it depends entirely on your project and requirements (something we’ll discuss later), but first, what’s the difference between the two?
To put it simply, Waterfall, aka the “traditional” approach, is all about taking things slow and steady. Under the Waterfall methodology, you’re aiming for one big outcome at the end that came as a result of careful planning of each task step-by-step.
Agile, meanwhile, is all about hitting those quick checkmarks throughout a project. This approach encourages iteration and experimentation, with a focus on a rapid delivery of your product. Under the Agile methodology, you’ll be learning a lot from trial and error, relying on customer involvement.
Which one is right for you? Well… Let’s discuss each of them more in-depth first.
The Waterfall Methodology
The Waterfall methodology was the first modern approach to systems analysis and large software developments. The method was first developed by Winston W. Royce in 1970 as a way to transform a risky development process into a linear process that would eventually provide the desired product.
The Waterfall methodology generally consists of 6 steps (or stages) and the process goes something like this:
If the methodology sounds too strict and linear, that’s because of its history. Waterfall projects were originally used for software development, where the project goal followed a linear flow.
If done well, it should be very simple to understand and resemble a linear sequential flow – like a waterfall.
Each step of the Waterfall methodology represents a stage of the project development you go through. And each step has to be finished before you move on to the next one.
The first stage, planning, is all about defining project requirements and any type of information you’ll need for the project. You can do that through careful research, clearly defining your target market and customers (interviews, questionnaires, etc.) and having a set of specific guidelines.
The second stage, analysis (or the design) step draws upon the above requirements and when here, you document the design you’re going to follow. For example, what coding language will your team use? Is everyone on the same page? Are there any requirements that will impact your work? Basically, you create a set of consistent documentation your team will follow.
After reviewing and approving the requirements, you then move on to the design step. Here is when you prepare for work. Your team needs to start thinking about what the product and what the final solution will look like.
Did you notice, how so far, there is no actual work being done yet? This is to once again stress the slow and steady approach of the Waterfall methodology.
Finally, the next step, implementation, is where the work begins. You take information from the previous stages and start working towards creating a functional product. The work you do doesn’t have to be perfect, but functional. You’ll come back to it later, anyway, but you should still have a clear view of your target and how you’re going to get there.
On the verification phase, testers try to find any problems or issues with the product. If you do find some serious defects, you can go back a couple of steps back to find its origins and how to fix it. Otherwise, you note down areas where improvements can be made and move on to the final step.
Finally, if you’ve made it to the maintenance (or operations) phase, that means things so far are going smooth and everything is on track. Ideally, your product should be complete and ready to launch. You check again for errors, optimize capabilities and go live.
Once your customers start using the product, they might come across new issues you hadn’t accounted for. So, after you launch, it’s important to do monitor testing on your product.
Be sure to involve your customers to better understand your product and target market once you go live. You may need to create patches and updates to the product. If you feel there are still improvements to be made – you can go back to phase one and go through the process again.
There are good things and bad things about the Waterfall project management style.
Waterfall methodology pros:
- By having clear goals and directions, planning and designing become more straightforward and simple. As such, the whole team is ideally on the same page on every step of the way.
- You can easily measure progress and you know when to move on to the next step. There are clear milestones and the phases indicate how well the overall project is going.
- This methodology saves time and money. Through clear documentation and planning, your whole team is more prepared and wastes no time in the future.
On the other hand, however…
Waterfall methodology cons:
- Gathering and documenting your requirements on each step of the way can be time-consuming, not to mention difficult. It’s hard to assume things about your product so early into the project. As a result, your assumptions might be flawed and different from what the customer expects.
- If the above is indeed the case and your customers are dissatisfied with your delivered product, adding changes to the product can be expensive, costly and most of all, difficult to implement.
- In general, risk is higher with the Waterfall approach because the scope for mistakes is high as well. If things go wrong, fixing them can be hard as you have to go through a couple steps back.
All in all, the Waterfall approach is all about careful planning and execution. Depending on your project requirements and goals though, it might be the approach for you. But it’s also worth exploring the other side of the coin.
The Agile Methodology
The Agile approach, meanwhile, is all about iteration and seeing what works and what doesn’t.
This approach is based on the following values from the Manifesto for Agile Software Development from 2001:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Compared to the Waterfall methodology, Agile is fairly simple. This approach prioritizes a high level of customer involvement throughout the project and iterates based on the received feedback.
While there are many different approaches to the Agile methodology, at its core, the approach boils down to the following steps:
Essentially, you plan for the customers’ vision and background when starting a new project. You do research, understand their struggles, needs, and so on. And just get an overall sense of what you’re building and for who.
You then build experiments, create a big list of features that would be useful for your customers, and then determine your priorities.
After that, you launch your product or service, and learn from it.
This step is vital to the Agile methodology. By measuring metrics, you’re learning what went right and what went wrong. You can then focus on delivering the highest value features for your clients and learn from your mistakes.
Finally, you repeat the cycle. You conduct additional sprints, and iterate until the product is finished.
With each cycle, you should be adding new features or making additional changes. If done right, feedback and correction should happen in small changes, and each cycle should go more smoothly than the last one.
Like the Waterfall method, this approach also has pros and cons.
Agile methodology pros:
- Because of the high customer involvement, you receive feedback quickly and make decisions on the fly. There’s more frequent communication, more feedback and a closer relationship with your customers.
- There is overall less risk since your work output is reviewed as you go. You also save money and time from unnecessary expenditures, because you’ll be prioritizing providing value for your users.
- You’ll be improving the quality of your output with each cycle. By breaking down your project into bite-sized pieces, you learn from each iteration. There is a lot of trial and error involved, but for the most part, you’re still focusing on high-quality development, testing and collaboration.
Of course, with that said, this methodology isn’t perfect.
Agile methodology cons:
- For the approach to work, all members of the team must be completely dedicated to the project. Everyone must be involved equally if you want the whole team to learn and do better on the next run. Because Agile focuses on quick delivery, hitting deadlines might be an issue.
- The approach may seem simple but be hard to execute. It requires commitment and for everyone to be on the same page, ideally, in the same physical space.
- Documentation can be ignored. Because the Agile methodology focuses on working software over comprehensive documentation, things might get lost through each stage and iteration. As a result, the final product can feel different from what was first planned.
Essentially, Agile is all about repetition and iteration. If you’re taking your time with the Waterfall approach and planning, with Agile, you’re interactive closely with your customers and rapidly going through the cycle and learning from your mistakes.
Which methodology is right for you?
To decide which one is right for you, you need to take a step back and look at your project requirements as a whole. Some factors you need to think about when deciding include:
- The size of your project and team.
- Any time-frame and deadlines you face.
- How complex the execution will be.
- Your clients, their availability, and your relationship with them.
What projects can Waterfall be suitable for?
You might want to consider using the Waterfall methodology if…
- You’re working on a project with remote workers and/or clients with whom you don’t communicate frequently with.
- Projects with a small time-frame, time, and budget.
- Projects where the client isn’t hands-on involved in.
These factors are usually more suited for bigger enterprises whose finished product is usually its final version (e.g. medical, construction, food and other similar industries).
What projects can Agile be suitable for?
You might want to consider using the Agile methodology if…
- Your team is responsible for the whole process during the project, i.e., you’re working closely with your colleagues and employees.
- Your client is involved during each step of the project and communicates feedback accordingly.
- Your project has a limited scope in terms of requirements and defined goals.
These factors are usually more suited for SMBs and startups who can adapt and pivot on the go (e.g. software development, marketing agencies, freelancers, and so on).
So, which one is better?
Well, there is no clear one-size-fits-all solution here.
However, for most digital projects and entrepreneurs – Agile is usually the way to go.
On the other hand, if you’re already scaling up and have stable project requirements and management – you might want to consider the Waterfall approach.
With that said, it’s important to note that neither methodology guarantees project success. A lot still depends on your personal and practical skills.
And regardless of the approach you take, it’s also important to be flexible and ready to adapt on the go. If you feel like one methodology isn’t working out for you – consider trying to the other one.
As important as planning out your project is, at the end of the day, what matters is delivering a solid and sustainable product that meets your customers’ expectations.
The methodology you use is just how you’ll get there.
The end product is the same, but the road you take isn’t.
The waterfall method can be quick, can include frequent conversation with customers at every stage, and can work for startups. I know because I was part of one that worked that way. To make it happen requires documentation to make sure things don’t get lost, good design so you can anticipate change and have that ability built into the design and structures of the software. It saves time because of the upfront research and design time means you don’t waste time w/trial and error, you spend the time to really understand customer needs. You can also design the test plan in parallel w/the coding to make sure the software works.
I worry about agile because it can encourage spagetti code which is hard for a new person to understand and also hard to fix. The fast turnaround also discourages anticipating new uses for the software and so it becomes hard to add new features because it requires a change to fundamental data structures. It can be prone to errors as one person’s changes can overwrite another’s fix. And w/o documentation, how is someone supposed to know what the software does and how to use it? Also, how can you make sure it will deliver what is promised to a customer? Lastly, I can see it being slower because of all the time spent coding things that will never be used (the throw-it-against-the-wall-and-see-what-sticks method).
What is the cost of the agile software?
Your posts are always so amazing. Keep up the good work.
Here’re a couple of more cases, showing when it could be helpful to consider the Waterfall approach to run a project: http://blog.softwareplanetgroup.co.uk/2019/07/12/what-is-wrong-with-the-waterfall-model/?utm_source=misc&utm_medium=article&utm_campaign=distribution&utm_content=what-is-wrong-with-the-waterfall-model