Agile Vs. Waterfall: At A Glance

agile_waterfall.png

Waterfall and Agile are two methodologies of project development processes. The main idea of Waterfall is to complete each phase before moving into the next. On the other hand, Agile encourages the team to work simultaneously on different phases in a collaborative manner. It also requires constant improvement and iteration at every stage. In short, waterfall is more linear and sequential, while agile is more iterative and cyclic.

Complex Vs. Complicated

The two methodologies have the same goal: to solve problems. And there is a subtle difference between a complex problem versus a complicated problem. I’d like to refer to a Quora answer that says:

Complex is the opposite of Simple, while Complicated is the opposite of Easy.

Being complex means that there are many components in the system, while being complicated means difficulty which requires lots of hard work.

Generally speaking, Waterfall is a good choice in a non-complex but complicated world. A task is difficult to complete, but the result is highly predictable since it is non-complex - there aren’t many factors that would affect the outcome. Through careful planning and strict execution, waterfall can minimize the execution cost and find the optimized path.

However, in a complex world, everything becomes more unpredictable since there are too many factors interweaved. Therefore, we need the more experimental method Agile, where decisions are made as late as possible after we gain more knowledge and understanding as we go.

Both agile and waterfall have their own advantages as well as disadvantages, we should choose the right method based on a specific project context.

Agile for Life Management

Not before long that I realized that the concept of Agile and Waterfall can be applied to software development, but also to the life management of our own.

As the saying goes: “The only constant in life is change.” There is no doubt that we live in a highly complex world, there are uncountable many factors that could have large effects on our behaviors: health, work, relationships, emotions, even the weather, to name a few. There are consistent “chaos” permeated in our world. In the long course of time, we can’t possibly predict what would happen in the future.

When I was about to finish my undergraduate program, I was anxious and terrified because I hadn’t have a solid “life plan” ready yet. So I decided to take a 6-month gap before entering graduate school, hoping that I could “figure things out”. At the end of that 6 months, with the endless covid-19 pandemic experience, it turns out that the only thing I could figure out is “I am and will never be fully ready for anything.” I cannot possibly have all the knowledge and wisdom to figure out an optimized path of my life. Instead of trying to have a solid plan and carefully calculate the pros and cons, I decided to just go for it, try things first, make mistakes, learn lessons, and make adjustments. This is a part of the spirit of Agile.

But Agile does not mean not planing at all, it is just that “we should plan just enough and plan as late as possible to respond to changes.” I still have my daily, weekly and monthly plans, it is just that my life plan is still widely open for numerous changes, mistakes and improvements.