The term “agile” has been widely used over the past 15 years, but very few understand what it actually means to their team, organization, or customers.
At a high level, Agile is a methodology for developing software that delivers potentially shippable working code in short iterations, while providing the flexibility to manage uncertainty and adapt to changing requirements. It works by breaking software projects down from large feature sets into smaller bits of user functionality called user stories, prioritizing them, and then continuously delivering them in short two-week iterations called sprints. Analysis, design, coding, and testing are continuous activities that continue for the duration of the project.
The primary measure of success at the end of each sprint is working software. And the rate at which teams can turn their customers’ wishes into working software is how Agile practitioners measure productivity.
From a historical perspective, the Agile methodology was designed as a solution to circumvent the pitfalls associated with Waterfall, i.e. the de facto software development process for the first 60 years of software engineering. The primary benefits of using Agile over Waterfall include greater ROI with incremental return, faster time to market with greater adaptability, greater visibility, and higher quality.
Being a more flexible management framework, Agile allows teams to bypass traditional sequential paradigms and get more work done in a shorter time period. The Agile manifesto – outlined below – guides all Agile methodologies:
Another important aspect of Agile is that it’s a framework rather than a defined process. Because of this, you can customize it to meet the specific needs of your organization, team, and clients or customers. Additionally, there are a number of specific methods – or flavors – within the Agile movement, which includes Scrum, Kanban, Lean Software Development (LSD), and Extreme Programming (XP).
Each method has a set of principles that guide teams on their flavor of approach, however, it allows for some flexibility in customizing the process to meet the needs of the team, organization, and customers. DSRUPTR is adept at utilizing all of the Agile methodologies, although we utilize the Agile Scrum methodology the most because of these advantages:
- More transparency and project visibility
- Issues are identified in advance
- Increased team accountability
- Easy to accommodate changes
- Increased cost savings
Most teams that transition to Agile choose to start with Scrum because it is simple and allows for a lot of flexibility. Scrum is unique because it introduced the idea of “empirical process control.” That is, Scrum uses the real-world progress of a project — not a best guess or uninformed forecast — to plan and schedule releases. These are the Agile Scrum Principles:
- Empirical Process Control – This core philosophy of Scrum is based on the three main ideas of transparency, inspection, and adaptation.
- Self-organization – Skilled and motivated team members who have decision-making power, take ownership, proactively communicate, and who work together toward a common goal.
- Collaboration – This principle focuses on the three core dimensions related to collaborative work: awareness, articulation, and appropriation. It also advocates project management as a shared value-creation process with teams working and interacting together to deliver the greatest value.
- Value Based Prioritization – The focus of Scrum to deliver maximum business value by prioritizing work based on three factors: Value (time and/or cost), Risk or uncertainty, and Dependencies.
- Time-boxing – This principle describes how time is considered a limiting constraint in Scrum, and used to help effectively manage project planning and execution. Time-boxed examples: Sprints, Daily Standup Meetings, Sprint Planning Meetings, and Sprint Review Meetings.
- Iterative Development – Developing products iteratively in order to meet the evolving customer needs, reduce financial risk, and break down the software development of a large application into smaller chunks. In iterative development, feature code is designed, developed, and tested in repeated cycles.
The emergence of Agile as a global movement extending beyond software is driven by the discovery that the only way for organizations to cope with today’s turbulent customer-driven marketplace is to become Agile. Agile enables organizations to master continuous change. It permits firms to flourish in a world that is increasingly volatile, uncertain, complex and ambiguous.
Instead of an organization being conceived as an efficient steady-state machine aimed at exploiting its existing business model, the Agile organization is a growing, learning, adapting living organism that is in constant flux to exploit new opportunities and add new value for customers.