Introduction
Agile is at the root of many product development and management approaches today. This framework focuses on the people that do the work needed for a product and how they can best work together through collaboration. It is the opposite of the “Waterfall” framework and is based on twelve principles:
The 12 Principles of Agile
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity — the art of maximizing the amount of work not done — is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile Practices
There are a number of practices that support Agile product development and management that range from requirements analysis through actual development and iteration. Here’s a list of some of the practices most commonly used:
User Stories
User stories are descriptions of features or defects within a particular product. They are typically written from the perspective of an end user. In Agile, user stories’ purpose is to detail what needs to be built, why, and at times how it should be built. It is also common for user stories to include “acceptance criteria,” which serve both as a checklist for developers to work through as well as an aid to QA efforts and their test cases.
Backlogs
Backlogs are a prioritized list of user stories that a product should address. It is effectively a product’s “to-do list.” Generally, backlogs will contain items such as:
- Features
- Enhancement
- Bugs
- Technical Work/Debt
- Knowledge Research (“spikes”)
Sprint Planning
This is a meeting by which product and development collaborate to align on the next sprint’s (development cycle) goals and what should be delivered by its end.
Daily Scrum
This is a meeting by which development briefly discusses progress made towards the sprint’s goals and to call out potential obstacles and blockers to current or upcoming efforts. Generally, detailed discussion is not expected here and is instead handled in breakout sessions with relevant teammates.
Sprint Review
This meeting is where product and development share work completed with stakeholders to collect feedback and collaborate on expectations and upcoming plans. At times, a team may have 2 or more sprint reviews during a sprint avoid overwhelming stakeholders with too much information at once.
Sprint Retrospective
This meeting is where product and development discuss what went well and not so well in the most recently completed sprint. Future areas of improvement are called out and action items agreed upon.
Iterative/Incremental Development
The basic idea behind this is that a product or its features are developed through iterative and incremental bits. This enables teams to better course correct or pivot efforts as things like requirements changes or unforeseen complexities and risks arise.
Roles in Agile
Generally, you’ll have a product manager and/or owner, a scrum master, and the development team. While product managers are different from owners (the former is strategic while the latter tactical), it is fairly common for them to be filled by the same individual, particularly in smaller companies. In general:
- Product managers/owner act as a gatekeeper between development and the customer.
- Scrum masters focus on ensure the team has what they need to succeed on time
- The development team consists of developers, engineers, architects, QA, etc.
Conclusion
And there you have it, a high-level overview of what Agile is. Where things get a bit more tangible, however, is stepping into Scrum, Kanban, and Lean — all unique variations of Agile that can serve various purposes and needs. Ultimately, however, Agile empowers teams, fosters innovation, and aims to deliver high-value products that the custom not only needs, but can consume.
Remember that Agile is not a strict set of rules. It is first and foremost a mindset and set of principles to help guide how you and your team can work and collaborate. The key is to first understand than and then adapt these points with respect to your team’s unique context and needs.