This article covers basic principles of agile and lays out lifecycle stages of the three most popular agile methodologies – Scrum, Kanban and XP.
What is the Agile Methodology?
The agile methodology is a management paradigm used in software development environments. Agile has seen massive adoption over the past decade – 71% of organizations surveyed by the Project Management Institute reported they were using agile methodologies. Agile emphasizes work in short iterations and frequent releases of working software, with a fast feedback loop back to developers regarding the actual value of their work to customers.
10 Agile Principles
Continuously deliver valuable software
Deliver working software in a short timeframe
Measure progress by working software delivered to customers
Software requirements can and should change during the course of a project
Changes to requirements should be accepted at the start of a work iteration but suppressed during an iteration
Close cooperation between developers and product owners
Transfer information face-to-face vs. electronically or via documentation
Self-organized, empowered teams produce the best software and devise more efficient processes
Technical excellence and an emphasis on quality boosts agility
Simplicity boosts agility
5 Agile Benefits
Predictable delivery – in agile environments it is well understood what will be delivered to customers and at what level of quality
Predictable cost and schedule – release schedules and the scope of investment required for a release is known in advance, much more so than in previous methodologies
Flexible prioritization and support for change – development projects can be dynamic and are no longer reliant on rigid specifications defined at the start of the project
Focus on business value – development work is organized around one thing – how much value the team is providing to end-users
Project success rate – agile projects are 3X more likely to succeed compared to waterfall, according to a Standish Group study
Agile Methodology Types
Agile is a broad and mature methodology with numerous variations, each of which has a different focus, process and benefits:
Extreme Programming (XP)
Adaptive Software Development
In this article we’ll focus on Scrum, Lean and XP which are probably the most popular agile frameworks.
The Agile Process: Scrum
Scrum is a highly iterative agile framework that operates in sprints of 2-4 weeks. It defines features and objectives prior to each sprint, and is designed to reduce risk while providing value to customers as quickly as possible. In each sprint, a team commits to completing several user stories – brief descriptions of what a user needs to be able to achieve with the software.
The primary stages in the scrum process are:
Creating a product backlog – a prioritized list of development tasks, defined as user stories. The work required for each user story is estimated using hours or story points.
Sprint planning – creating a sprint backlog – a subset of the product backlog planned for a specific sprint, and estimated to fit into the fixed time scope of the sprint.
Sprint work – developing working software within the sprint. The team carries out a daily stand-up meeting to share progress and resolve problems experienced by the team.
Testing and product demonstration – towards the end of a sprint, the focus shifts to stabilizing and finalizing features, and conducting acceptance testing with product owners and customers.
Retrospective – at the end of the sprint, sharing lessons learned from the previous sprint and using it to plan or adjust the backlog for the next sprint.
The Agile Process: Kanban
Kanban is an agile-based methodology which originated from lean manufacturing, pioneered by Toyota. It is a large to-do list, which helps manage work according to priority. A central principle of Kanban is that the tasks and their status are visualized as cards on a board, visible to all project staff. In Kanban, when a developer, tester, or other team member is ready for more work, they pull a task on the board by moving it to “Doing” or a specific work status like “Testing”.
Organizations implementing Kanban follow these stages:
Visualize Work – define the process followed by the project team (for example, Not Started > Development > Dev Testing > Acceptance Testing > Done). Setup a board with a column for each process stage, and post the tasks on the board as sticky notes.
Limit Work in Progress (WiP) – a key principle of lean manufacturing, Kanban enforces a limit of the number of tasks the team works on concurrently – usually no more than 2-3.
Pull Don’t Push – each team member finishes their current task and then “pulls” an additional assignment from the board. This prevents bottlenecks when one part of the team has a higher throughput than another.
Monitor and Improve – visualizations like the cumulative flow chart below help understand how work is progressing and identify bottlenecks in the process.
Extreme Programming (XP) is a highly disciplined management method, which focuses on continually improving quality and speed of software delivery. The development team works closely with customers, continuously planning, testing and providing feedback to developers, to quickly deliver valuable software. Like Scrum, delivery is in iterations of 1-3 weeks.
The Extreme Programming method follows these lifecycle stages:
Planning – setting goals for the entire project and specific iterative cycles. Planning is done together with the customer, who formulates a vision of the product and defines user stories. Developers estimate the stories and turn them into more granular tasks.
Designing – developers are responsible for designing the main features in the next iteration. XP emphasizes simplicity, so design should be as simple as possible.
Coding – throughout an iteration, developers constantly refactor the code to bring it down to the simplest, most elegant form possible. Pair programming is commonly used in XP projects to boost innovation and code quality.
Testing – testing is done in tandem with writing the code, not afterwards as a separate development stage, typically using Test Driven Development (TDD).
Quality Intelligence in the Agile Process
Whatever agile methodology you practice, quality is key, because a low quality product does not provide sufficient value to end users. For agile teams to be effective, they must find a way to balance between the desire to push forward and deliver new functionality, while investing enough time in testing and validating that systems work as expected.
A new category of tools called Quality Intelligence Platforms can help with this part of the agile process, by providing data on which parts of the product are at risk of quality issues and are critical to test – and conversely, which parts are perfectly fine and do not require an investment in testing.
SeaLights is a Quality Intelligence Platform that helps agile development organizations focus testing efforts on what matters most – customer satisfaction. It analyzes test execution data, code changes and actual uses of features in production, and provides a clear visualization of “test gaps” – where teams need to invest in testing to achieve the highest business value.