Agile Methodologies

Agile is a philosophy built around flexibility, as change is assumed to be inevitable.

Agile emerged as a reaction to the rigidity of Plan-Driven methods like Waterfall. Where Plan-Driven assumes requirements can be fully understood up front, Agile assumes that change is inevitable and that software should evolve alongside user needs.

Characteristics of Agile Approaches

Agile has many specific frameworks (Scrum, Kanban, XP, etc.), which all share a common set of characteristics:

Iterative and Incremental: Work is divided into small cycles (often called iterations or sprints), with each cycle producing working software.

Customer Collaboration: Stakeholders and end-users are involved throughout the process to ensure the product meets evolving needs.

Working Software over Documentation: While documentation isn't ignored, Agile prioritizes delivering usable software as the main measure of progress.

Flexibility and Adaptability: Teams are expected to respond quickly to new information, changing requirements, or shifting priorities.

Cross-functional Teams: Agile teams typically include developers, testers, and sometimes even stakeholders, all working closely together. An Agile team should have all of the skillsets required to achieve its goal.

Advantages

Agile's biggest strength is adaptability. If requirements change, teams can adjust direction quickly without waiting for an entire development cycle to complete. Because Agile delivers working software incrementally, users and stakeholders can see progress early and often, and provide feedback. This leads to products that more closely fit actual user needs. Often, Agile will reduce risk since problems are discovered earlier, and course corrections are built into the process.

Disadvantages

Agile can also introduce challenges. There is less predictability, as without a fixed plan, it can be harder to forecast exact timelines or costs. It also introduces a dependence on communication. Since A requires constant collaboration, weak communication or disengaged stakeholders can cause failure. Additionally, since Agile welcomes change, projects can drift without strong prioritization and discipline which can cause Scope Creep.

Common Agile Methodology Models

Scrum

Scrum is one of the most widely used Agile frameworks. Work is divided into fixed-length sprints (usually 2–4 weeks). At the start of each sprint, the team commits to a set of work items from a prioritized product backlog. At the end of the sprint, the team delivers potentially shippable software and reflects on how to improve in the next cycle.

Scrum is an opinionated framework, and the Scrum Guide outlines this by saying:

The Scrum framework, as outlined herein, is immutable. While implementing only parts of Scrum is possible, the result is not Scrum. Scrum exists only in its entirety and functions well as a container for other techniques, methodologies, and practices.

Kanban

Kanban focuses on visualizing work in progress, often using a board divided into columns (e.g., "To Do," "In Progress," "Done"). Work items move across the board, which helps teams limit how much is in progress at once and identify bottlenecks.

Other Approaches

Other approaches like Extreme Programming (XP) and Lean Software Development emphasize engineering practices (e.g., test-driven development, pair programming) or process efficiency.

What all of these share is the Agile philosophy: adapt, collaborate, and deliver value continuously.

Check Your Understanding

  1. What assumptions about requirements make Agile different from plan-driven methodologies?
  2. In what kinds of projects might Agile approaches be the most effective?
  3. What are potential risks of using Agile if stakeholders are not engaged or available?