Waterfall and Agile approach

A student writes to me: “Today more companies are using Agile approach, why do we need to learn the Waterfall lifecycle as it does not work? Should schools teach Agile instead? Please comment.

Answer: I have written several articles about Agile and Waterfall approach in this blog, please review them. Basically Waterfall lifecycle is the basic concept of software development and if you understand it well, you can do anything whether you select Agile or other methods. I often teach Waterfall lifecycle for students in the first two years so they really understand the development concept then change to Agile in the third and fourth year.

In Waterfall lifecycle, students learn to validate requirements and get users' feedbacks in each phase (requirements, design, code, and test). During these reviews, users, developers and testers collaborate to make sure the final product meets users' needs. Since testers participate early, they often offer valuable inputs into requirements before design phase and coding phase. Having everybody works together during these phases will help prepare students to work in “Self-organized” team of Agile more effective.

In Waterfall lifecycle, the team is divided into roles and responsibilities where members participate accordingly and development works are divided into smaller tasks. This is where students learn different assignments: they may work as developers, testers, configuration managers, quality assurance etc. By learning all the roles, it is easier for them to function later in Agile as they have to perform all the roles as part of the “Self-organized” team. Once they understand the entire Waterfall lifecycle and all the roles, they can be effective “Scrum Master” or “Product Manager” too.

In Waterfall lifecycle, students learn how to obtain requirements from users and write it correctly so everybody on the team understands it well. It also prepares them to write better User stories in Agile too. During requirements validation, the software team, customers and users often have a lot of discussions to determine risks and it also prepares students to work on the “Product backlog” and “Sprint backlog” later when they work on Agile (Scrum method).

It is easy to say that with Agile method, you do not need to learn Waterfall lifecycle but it is NOT CORRECT. You must have clear understanding of how software is developed, each phase and each work in detail BEFORE learning Agile methods. DO NOT confuse BAD software development with Waterfall, and DO NOT think Agile approach is BETTER. Each approach has certain usefulness and you MUST LEARN BOTH. Today, technology changes fast which requires us to develop, integrate software quickly and that is why Agile is preferred. HOWEVER without a clear understanding of the Waterfall software development lifecycle, you will NOT be able to do Agile well. I have many years of working in both approaches, I also teach both and I believe that every student must know both and the school must teach both approaches.

There is NO “Perfect method” or “Perfect way” to develop software. Anyone who says Agile is better than waterfall or waterfall is better than Agile than that person knows nothing. It is better to say that we MUST select the best approach depending on certain circumstances, certain environment, and certain project to deliver quality software that meet customers' expectations, be it waterfall or agile or anything else.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University