What Is Agile Project Management?
Agile project management – originally referred to as “Agile Software Development” – is a set of principles and values rather than a methodology. They have their roots in the 1950s and were consolidated and published as the “Agile Manifesto” by 17 software developers in 2001 in Snowbird/Utah. The following screenshot of the original website agilemanifesto.org shows the four values which are supplemented by 12 principles of agile software.
Among the common agile methods nowadays are extreme programming (XP), Kanban, disciplined agile delivery and large-scale derivatives like scaled agile framework (SAFe) or Scrum of Scrums (this list is not exhaustive).
One of the fundamental ideas of agile software development (and, in broader terms, agile project management) is to create an increment as a result of each and every project phase that is usable on its own and adds value to the customer or the organization. This is different from traditional approaches, where single parts do not necessarily have a value in its own before they are integrated into the overall result.
This results in shorter development cycles (iterations) which also enables agile teams to embrace changes during the project, to reduce the risk of creating features that are not needed anymore and to increase the overall customer satisfaction.
Example of an Agile Principle in Software Development
You might be wondering what this means in practice. Let us elaborate on this with an example of a software development project, for instance developing an app and the backend solution for a delivery service:
In a traditional project, the team would plan the project, collect and describe the requirements, create specifications, develop and test the applications and eventually deploy the entire solution at once. It may take 1 or 2 years from the project kick-off until the product is launched.
An agile project, on the other hand, would break down the work into parts that are developed in shorter time periods and can be used on its own:
A first increment could be the development of an app containing menus and phone numbers of restaurants. Although it is only a part of the entire target solution, it can already be used by customers, provides them at least a little value and is an opportunity for the developers to get a first customer feedback. A second stage could be the development of a basic backend that can process orders but might not yet be able to accept payments. Again, this piece of the solution adds small value for the customer – food can be ordered by click instead of calling the restaurant.
After a number of further iterations, the entire solution would be finalized and deployed.
While this is the point where traditional projects would ship it to customers and get their feedback for the very first time, agile projects had already engaged customers for earlier increments, received and processed their feedback and therefore probably developed a more customer-friendly solution.
Types and Definitions of Agile Methodologies
In theory, the way agile teams work is collaboratively determined by the team members themselves, based on the agile values and principles, rather than imposed by a methodology or organizational requirements.
However, the desire for clear processes and rules, organizational necessities and even regulatory and legal drivers created the need for further guidance that supplements the 4 values and 12 principles.
Several agile methodologies, frameworks, methods and practices have been developed over the years to cater for these requirements.
Among the common agile approaches are Scrum (the most popular agile framework), extreme programming (XP), Kanban, disciplined agile delivery and large-scale derivatives like scaled agile framework (SAFe) or Scrum of Scrums (this list is not exhaustive). There are also several hybrid methodologies and approaches that combine methods and practices from different generic frameworks, e.g. Scrumban which integrates Kanban practices into the Scrum framework.
We are introducing Scrum, the most popular agile framework, and XP, one of the most comprehensive methodologies, below.
Scrum is a lightweight framework that is based on 4 core values: openness, respect, courage, focus and commitment. It introduces 3 different roles:
- the product owner (maximizing the value of a product),
- the self-organizing development team with 3 – 9 members (developing the increment consisting of product requirements in a way determined by themselves)
- the Scrum master (a servant leader, facilitator and coach)
The product requirements and features are managed in a product backlog. The work is performed in sprints which are timeboxed phases of up to 1 month. During that time, the development team is building the increment, based on the sprint backlog – a selection of product backlog items selected for the sprint. The product backlog, sprint backlog and the increment are referred to as artefacts.
Find more details in our dedicated article on Scrum where we also discuss whether Scrum is a methodology.
Extreme Programming (XP)
Extreme programming is a methodology that combines and refines several best practices and methods of software development. It focuses on teamwork, communication, code quality and the programming which are reflected in their values, rules and principles. XP teams also embrace changes during the project rather than resisting them.
Similar to Scrum, XP relies on user stories for the specification of requirements. Extreme programming introduced short development cycles in order to be able to cater for any changes that become necessary during the project. Following XP, a project consists of quarterly cycles (releases) and weekly cycles (iterations).
The goal of the weekly iterations is having a selected set of user stories developed and tested.
The release plan contains a high-level set of user stories that are to be developed in weekly cycles. The goal of a release is to eventually deploy these user stories.
Practices of Extreme Programming
This comprehensive methodology also consists of a set of practices that incorporate the goals into the daily work (non-exhaustive list, you can find an overview at agilealliance):
Two developers produce code together, sharing one single computer. The combined experience and the enhanced communication facilitate faster coding in a higher quality.
- Continuous integration:
To avoid quality risks and prevent inconsistencies and code conflicts at late stages, continuous integration requires immediate integration and testing of newly developed code. Thus, potential problems are identified earlier and affect fewer components.
- 10-minute build:
Teams are encouraged to automate the process of building a system to perform tests. Shortening the time to build the system increases the likeliness that developers are testing more frequently.
Adding low-priority tasks to the planning that can be dropped without impact on the product. These serve as a buffer to make sure that impediments and delays do not pose a risk for the implementation of high-priority items.
- Incremental design:
In line with the core of agile project management, XP suggests an incremental approach to developing software. This includes, for instance, spikes that serve to explore potential realization scenarios for requirements. It also covers code refactoring which requires to simplify and enhance written code continuously.
As some of these practices proved to be effective and efficient in many situations, they have also been adopted by other methodologies.
“Agile” refers to 4 values and 12 principles and is not a methodology in itself. There are several agile frameworks and methodologies though that provide guidance and practices for agile projects, e.g. Scrum and XP.
Thanks to the simplicity of its concepts (which are however “hard to master”), Scrum became probably the most popular form of agile projects. You can learn more about the Scrum framework and Scrum-based methodologies in our dedicated article.