What is Agile?
It is not possible in some projects to gather all the requirements upfront because of their extreme uncertainties. So we use an “adaptive” method instead of a “predictive” one, in which we only define and plan a short period in the future, create a working product, and use the product to understand the needs and use the feedback to plan further and add more functionalities to the product.
Adaptive methods are called Agile.
What is Scrum?
There are many Agile methodologies and frameworks. The most famous Agile framework is Scrum, which is a very simple, lightweight one.
These are the concepts defined in the core framework:
- Roles and Responsibilities:
- Events, activities, and related concepts:
- The Timeboxing concept: having a maximum duration for events
- Sprint: timeboxed development stages that create Increments (pieces of working software) and include the following events:
- Product Backlog Refinement: a continuous activity for applying changes and adding detail to the Product Backlog
- Scrum Artifacts and related concepts:
- Product Backlog: a dynamic, ordered list of all items we're going to develop in the project
- Sprint Backlog: our plan for the current Sprint
- Increment: the latest version of the software, and the potentially releasable output of the Sprints
- Definition of Done: everything we're going to do for each item in the Product Backlog
- Monitoring Sprint Progress: the Development Team's daily measurement of their progress throughout the Sprint
- Monitoring Project Progress: the Product Owner's measurement of progress for the whole project
- Velocity: the average rate of completing Product Backlog items per Sprint
When do We Need to Use Agile?
Agility is helpful when it’s hard to define the product upfront, because we can’t understand it entirely, or the customer keeps changing its mind. In those cases, if you try to use a predictive method with upfront plans, you will have many change requests, and it will decrease your productivity and increase time and cost.
When Can We Use Agile?
Agility is based on adaptation, which in turn is based on the capability of producing pieces of working product throughout the project and using that for receiving feedback from the end users or their representatives. The interim outputs should be working product, because otherwise we won’t be able to receive real feedback.
The working product is always “incremental”, which means we keep adding new features to it. The development should be “iterative”, which means we should repeat the development processes (e.g. design) for each Increment.
We can only use Agile when the product has the capability to be developed iteratively and incrementally. Unfortunately, not every product has it. The best case for Agility is software development. It’s also used in some research projects, and many programs (e.g. organizational change initiatives).
Professional Scrum Master™ (PSM™) Certification
There are inconsistencies on Scrum concepts in different resources. This wiki tries to stay compatible with the way Scrum is defined by scrum.org, and the PSM™ (Professional Scrum Master™) Exam.