DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Newsletter
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Velocity Is Not Enough: Rethinking Risk in Agile Software Development
  • How Does a Scrum Master Improve the Productivity of the Development Team?
  • Bounded Rationality: Why Time-Boxed Decisions Keep Agile Teams Moving
  • Why One-Week Sprints Make Vibe Coding Work Better

Trending

  • ScyllaDB in Enterprise Java: High-Performance NoSQL With Eclipse JNoSQL
  • Evals in CI: How to Catch Agent Regressions Before Production Does
  • Why Spark Executors Leave Cores Idle on YARN: A Packing Model for Executor Sizing
  • PWA on iOS, Part 2: HTTPS, Manifest and Service Worker

Draft This article hasn't been published, so readers can't see it.

In moderation This article is waiting for review, so readers can't see it yet.

Deleted This article has been deleted, so readers can't see it.

  1. DZone
  2. Culture and Methodologies
  3. Agile
  4. The Role of Specifications in Agile

The Role of Specifications in Agile

It's commonly said that everyone does Agile differently. In my experience, it's also common to do basically whatever you want and call it Agile. It can be useful to occasionally reset and examine what canonical Agile recommends.

By 
Chase Seibert
·
Updated Nov. 13, 15 · Tutorial
Post on X (opens in a new tab) Share on LinkedIn (opens in a new tab)
9.2K Views

Join the DZone community Save articles, join the discussion, and download Refcards and Trend Reports with a free account.

Join for free Already a member? Log in

It's commonly said that everyone does Agile differently. In my experience, it's also common to do basically whatever you want and call it Agile. It can be useful to occasionally reset and examine what canonical Agile recommends. For software specifications, it's pretty simple. Do just enough, no more.

Why do we need specifications at all?

A software requirements specification (SRS) is a description of a software system to be developed, laying out functional and non-functional requirements, and may include a set of use cases that describe interactions the users will have with the software. - Wikipedia

Historically, specifications have been used to communicate to the customer (be it an internal or external customer) what will be built. Agile is built on the principle that this is actually not in the best interest of the customer. Why?

  • Low effort specifications will have all parties making critical assumptions.
  • High effort specifications take a lot of time - and will necessarily be wrong in big ways.
  • Scope can and should change as we learn more about the problem.

In Agile, we build in short sprints. Documentation need only be created for the next sprint, or perhaps one additional sprint. This is known as - "Just in time Documentation"

Self-directed Agile Teams

Agile artefacts such as technical spikes and development iterations mean that high-level requirements can be considered sufficient at project initiation. - Ryan Hewitt

For agile teams, specifications exist so that the team knows what they need to build. Because we are committing only to one sprint at a time, we have no need to project long-term dates that would necessitate a full specification. What documentation does the team need to get started? A highly detailed specification for just that first sprint.

agile

An agile team is composed of a product manager, a designer and one or more developers. This team must be empowered to design and implement their vision of a solution. A specification is definitely NOT for feedback or sign-off prior to building.

How does the team know to build the right thing?

Agile requirements, on the other hand, depend on a shared understanding of the customer that is shared between the product owner, designer, and the development team. That shared understanding and empathy for the target customer unlocks hidden bandwidth for product owners. They can focus on higher-level requirements and leave implementation details to the development team, who is fully equipped to do so – again, because of that shared understanding. - Dan Radigan, Senior Agile Evangelist, Atlassian

User stories are the form that specifications take. Each user story is created in advance and placed in a backlog, but only the small set of the very next stories are flesh out in detail. Then, the level of detail is very high. Designs are included at this stage, and so are detailed descriptions of fine grained behavior like validation, individual errors messages, etc.

Though the PM owns the user story, the team itself generates the detail through a processes called grooming. User empathy is critical - while PM and design naturally represent the customer in the design process, the entire team needs to understand the customer motivation and pain points.

In the end, the team may very well not build the right thing. This is where feedback comes in - at the end of a sprint, once working software is produced and shown to the customer.

When to Get Feedback

Working software over comprehensive documentation - The Agile Manifesto

In Agile, feedback is given based on working software, not specifications. The team commits to delivering and demoing working software every sprint. These demos are where feedback is generated. I've often been surprised when customers don't really know what they want until they see it.


I'm currently working at NerdWallet, a startup in San Francisco trying to bring clarity to all of life's financial decisions. We're hiring like crazy. Hit me up on Twitter, I would love to talk.

agile Sprint (software development) Software system

Published at DZone with permission of Chase Seibert. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Velocity Is Not Enough: Rethinking Risk in Agile Software Development
  • How Does a Scrum Master Improve the Productivity of the Development Team?
  • Bounded Rationality: Why Time-Boxed Decisions Keep Agile Teams Moving
  • Why One-Week Sprints Make Vibe Coding Work Better

Partner Resources

×

Comments

Loading comments

The comments didn't load

Please try again in a moment.

Likes

Loading

The next likes didn't load. Please try again.

The likes didn't load

Please try again in a moment.

See who liked this

Log in or join DZone for free to see who liked this article.

Log in Join for free
  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook