00. Waterfall development vs Agile development

It will take about 3 minutes to finish reading this article.

1. Waterfall development

In the waterfall development model, there are several distinguishing features:

(1) Emphasis on documentation, with a particular focus on detailed documentation, especially the project requirements document, both for the development team and the test team is particularly important, high-quality documentation for the latter processes are critical.

(2) Longer Cycles and Larger Manpower Sizes: Development cycles are fixed and lengthy, often measured in months, and team members must follow project schedules and various specifications.

(3) Fixed requirements: requirement changes, and rework issues tend to be more costly.

2. Agile development

It is a human-centered, iterative, step-by-step development pattern. In Agile development, it aims to deliver core functionality quickly and continuously improve it by slicing up the project into smaller parts and delivering and testing them incrementally. Instead of emphasizing perfect design and coding, it seeks to quickly release usable versions and then continuously iterate and improve.

Agile development mainly includes SCRUM, XP (Extreme Programming), Crystal Methods, FDD (Feature Driven Development) and so on. And we mainly use Scrum model in actual development.

Agile development has different forms for different teams and different companies. For example, some teams like “War Room” very much ( Gather all interested parties or key members of the project team into a small room or conference room so they can work closely together, communicate, and solve problems) Their ultimate goal is to be able to develop products quickly.

The Scrum workflow model also needs to be built on top of well-established specifications, development tools and facilities (Git/Jenkins/Cocoapods/Coding specifications, etc.). It has the following main elements:

(1) Product Owner’s clarity on requirements, including prioritization, resource dependencies, etc.

(2) Developer’s task splitting, including clear prioritization, deadline, manpower allocation, etc.

(3) Daily meeting for all parties to update the status of each task (ToDo, Doing, Done) and discuss issues, etc.

(4) Tasks completed by developers can be prioritized for delivery to product owners for experience and testers for testing; with the help of the company’s CI/CD tools.

(5) Review meetings are held to summarize the problems that occurred in the middle and how to avoid them.

3. Waterfall development vs Agile development

In a team, not one model dominates, which model to take depends on the situation.

For some of the more core features that require high quality (e.g., payment business), cross-team, third-party, and other collaboration scenarios where communication is not very efficient, waterfall development can still be adopted.

Agile development can be adopted when the product’s scenarios are time-sensitive and need to be validated and market captured quickly, with all the people available for quick face-to-face communication.