What is Agile and How You Can Become an Epic Storyteller
In today‘s fast-paced world of software development, "agile" has become a ubiquitous buzzword. But what exactly does it mean to be agile, and how can you harness the power of agile to become an epic storyteller? In this post, we‘ll dive into the world of agile software development, explore some key concepts, and learn how you can use agile techniques to write great user stories.
The Agile Revolution
Agile officially burst onto the scene with the publication of the Agile Manifesto in 2001. Authored by 17 prominent software developers, the manifesto articulated the core values and principles behind what they termed "agile" software development methods.
The manifesto emphasizes:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
These values represented a radical shift from the prevailing approaches to software development at the time, which tended to be heavily plan-driven and sequential in nature. The traditional "waterfall" approach, for example, required that each phase of a project (analysis, design, implementation, testing) be completed before moving on to the next.
In contrast, agile methods are characterized by short, iterative development cycles, close collaboration with stakeholders, and a willingness to flexibly respond to change. The agile pioneers recognized that in a complex, fast-changing world, detailed long-term plans quickly become obsolete. Instead, agile teams rapidly deliver small increments of working software and adapt their plans continuously based on feedback and learning.
The Benefits of Going Agile
Over the past two decades, agile methodologies like Scrum and Kanban have been widely adopted across the software industry and beyond. A 2020 survey found that 95% of organizations practice agile development methods.
The benefits organizations see from adopting agile are substantial:
Benefit | Percent Reporting |
---|---|
Ability to manage changing priorities | 70% |
Project visibility | 65% |
Business/IT alignment | 65% |
Delivery speed/time to market | 62% |
Team morale | 61% |
Source: Version One 14th Annual State of Agile Report
As a full-stack developer, I‘ve seen firsthand how agile practices help teams deliver better software faster. By working in short sprints, agile teams can rapidly develop and test small pieces of functionality, get quick feedback from users, and correct course when needed. The emphasis on face-to-face communication and daily collaboration keeps everyone engaged and on the same page. And the focus on working software as the primary measure of progress cuts through the noise and keeps teams laser-focused on delivering value.
Scrum 101
While agile is a general mindset, frameworks like Scrum and Kanban provide specific roles, events, and artifacts for putting agile principles into practice. Let‘s take a closer look at Scrum, the most popular agile framework.
Image Credit: Atlassian
In Scrum, a cross-functional team works in short iterations called sprints (usually 2-4 weeks long) to deliver a potentially shippable product increment. The team is guided by the Product Owner, who is responsible for defining and prioritizing the product backlog (the list of features or user stories to be built).
Each sprint begins with a Sprint Planning meeting, where the team collaborates with the Product Owner to select a set of high-priority stories to work on. The team then identifies the detailed tasks needed to complete each story and commits to what they believe they can deliver by the end of the sprint.
During the sprint, the team meets daily for a short Daily Scrum or standup meeting to sync on progress and identify any blockers. At the end of the sprint, the team demonstrates the working software they built in a Sprint Review and then reflects on their process in a Sprint Retrospective to identify improvements for the next sprint.
Throughout, the team is supported by a Scrum Master who coaches them on the Scrum process, removes impediments, and helps them continuously improve their practices.
Epic Storytelling with User Stories
A key agile practice is expressing requirements in the form of user stories. User stories are short, simple descriptions of functionality told from the perspective of a user or customer. They typically follow a simple template:
As a [type of user], I want [some goal] so that [some reason].
For example:
- As a shopper, I want to filter products by category so that I can easily find items I‘m interested in.
- As a site admin, I want to view a dashboard of key metrics so that I can track the health of the business.
- As a mobile user, I want to get push notifications so that I‘m alerted to important events on the go.
User stories are deliberately kept short and high-level, as the details are expected to be worked out through conversations with the product owner and the development of acceptance criteria. Acceptance criteria specify the detailed requirements that must be met for a story to be considered complete, often in the form of examples or scenarios.
Stories are typically estimated in relative units called story points rather than in time. Story points represent the amount of effort required to complete a story relative to other stories. Common scales used are the Fibonacci sequence (1, 2, 3, 5, 8…) or "t-shirt sizes" (XS, S, M, L, XL).
During sprint planning, the team will collaboratively estimate the stories in the backlog, often using techniques like planning poker. In planning poker, each team member "plays" a card with their estimate and the team discusses until they reach a consensus. Over time, the team‘s velocity (the average number of story points completed per sprint) becomes a useful metric for long-term planning and measuring productivity.
Larger units of functionality that span multiple stories are captured as epics. Epics provide a high-level view of the major themes or features in the backlog, but are still delivered iteratively story by story. A sample epic for an e-commerce site might be "Product Recommendations", with stories like:
- As a shopper, I want to see recommended products based on what‘s in my cart so that I can find other relevant items to purchase.
- As a shopper, I want to see products frequently purchased together so that I can discover useful product pairings.
- As a merchandiser, I want to define custom product recommendation rules so that I can tailor recommendations to business goals.
Becoming an Epic Storyteller
So how can you hone your user story writing skills to become an epic agile storyteller? Here are some pro tips I‘ve learned over years of being a full-stack developer and Scrum Master:
Focus on Outcomes, Not Implementation
Remember that stories should focus on the user‘s goal and the benefits they‘ll receive, not the specifics of the implementation. Leave the technical details for the acceptance criteria and let the team figure out the best solution.
Keep Stories Independently Valuable
Each story should provide some value to the user on its own. Avoid stories that are too granular (like individual tasks) or that have complex dependencies on other stories. If a story is too big, look for ways to split it into smaller but still independently valuable pieces.
Refine Acceptance Criteria Collaboratively
While the product owner writes the high-level stories, the detailed acceptance criteria should be developed collaboratively with the team. Involve QA engineers to specify examples and edge cases. Use techniques like Example Mapping or Specification By Example to ensure a shared understanding.
Don‘t Go Overboard with Story Points
While story points are a useful tool, don‘t spend too much time trying to get estimates perfect. Focus on relative sizing and move on once the team has reached a general consensus. And avoid the temptation to equate story points directly to time, which undermines the benefits of relative estimation.
Continuously Refine the Backlog
The product backlog is ever-evolving as priorities change and new information comes to light. Make backlog refinement a regular event where the team collaboratively reviews, clarifies, and re-estimates stories. The goal is to ensure the top of the backlog is always well-understood and ready for the next sprint.
Beyond Software Development
While agile methodologies originated in software development, the principles are applicable to any kind of complex, creative work. At its core, agile is about breaking large undertakings down into small, manageable pieces, collaborating closely with stakeholders, and continuously adapting based on feedback and learning.
These concepts are just as relevant for a marketing campaign, a research project, or a new business venture as they are for developing software. By adopting an agile mindset and mastering the art of the user story, you‘ll be well-equipped to tackle even the most epic of endeavors.
Cultivating an Agile Culture
Becoming truly agile isn‘t just about adopting a set of practices or ceremonies, but about fundamentally shifting your team or organization‘s culture and ways of working. It requires a move away from big upfront planning and rigid processes towards a more empirical, adaptive approach.
Some key cultural shifts required for agile success include:
-
Empowering teams: Agile teams are expected to be self-organizing and cross-functional, with a high degree of autonomy in how they deliver their work. This requires managers to move away from command-and-control towards servant leadership.
-
Embracing transparency: Agile practices make work highly visible through artifacts like the product and sprint backlogs, burndown charts, and kanban boards. This can be uncomfortable for organizations used to keeping plans and progress behind closed doors.
-
Focusing on delivering value: In agile, delivering working software to users is the primary measure of progress. This means letting go of intermediate work products and comprehensive documentation in favor of a laser focus on the user experience.
-
Continuous learning and improvement: Agile teams are expected to inspect and adapt their processes regularly using empirical feedback. This requires a culture that values experimentation, learning from failure, and continuous improvement at all levels of the organization.
Making these shifts isn‘t easy, but the benefits are immense. Organizations that successfully adopt agile ways of working consistently see improvements in productivity, quality, employee engagement, and customer satisfaction. By cultivating an agile culture and writing epic user stories, you too can become an agile superhero delivering exceptional value to your users and stakeholders.