Why Us Services Portfolio Blog Technologies Development process Start a Project →
UA EN RU
← All posts
Development · 16.05.2019 · 6 min read

User Stories Instead of a "Proper Spec": How to Estimate a Project Without Weeks of Paperwork

Why asking for a "proper spec" before an estimate is an answer about nothing, and how user stories give you the cost estimate and the business-level documentation at the same time.
User Stories Instead of a "Proper Spec": How to Estimate a Project Without Weeks of Paperwork

A familiar situation: you approach an IT company asking them to estimate the cost of development, and in return you get excuses along the lines of "send us a proper spec and then we'll do the maths". Or a veiled offer to first pay generously for a detailed specification to be drawn up, and only then, on its basis, to get a cost estimate. Nobody has worked that way for a long time.

Why "a proper spec" is an answer about nothing

And yet no one can really explain what that "proper" spec actually is. More importantly, no one guarantees that once the document is finally written, the cost of development will still be acceptable to you. It turns out to be a strange bargain — you pay for a text that will only later reveal whether the project itself is within your means.

The conversation about money needs a different entry point: one where the estimate and the documentation appear at the same time, rather than one after the other.

Once the method of presenting business-level requirements through user stories was described, everything else became hopelessly outdated.ANIART

What a user story is

A user story is a short statement of intent that describes something the system should do for the user.

  • A user story is not a detailed description of requirements — that is, it contains no detailed description of the interface or of responses to an action. It is a negotiable expression of intent.
  • It is short and easy to read — clear to developers, stakeholders and users alike.
  • Most importantly: every user story lends itself easily to estimation, so the effort needed to implement it can be determined quickly.
The point. A story states the business intent and at the same time provides a unit that can be estimated. That is exactly why cost estimation no longer has to wait for a "big spec" — it adds up from the stories as you describe them.

What an ideal story looks like

Your ideal user story should look like this:

As a <user ROLE>, I <ACTION>, <VALUE>.

Three blocks are then added to that statement:

  • Acceptance criteria.
  • Error handling.
  • Technical notes.

Role

These are users or groups of users. For example, your system may not have very many of them — User, Guest, Operator and Administrator.

Action

This is the essence of the story, "what needs to be done". What can be improved. There should be a single action — the main one. There is no sense in describing "logs in and performs a search" or "enters search parameters and performs a search". State the action you genuinely need.

It is important to describe the story at the level of "WHAT?" is being done, not "HOW?". That is the heart of a story. Describe the problem, not its solution.

Value

Your story must have value — a result, and it must affect someone. That impact ultimately leads to a goal that is valuable to you. The notion of value can be replaced by that of impact.

Examples from real projects

Below are examples of what user stories look like, taken from real projects.

Example of a user story description: role, action, value and acceptance criteria
User story description example no. 1
Example of a user story description from a real project
User story description example no. 2
Example of a user story description with a list of criteria and technical notes
User story description example no. 3

What you get once the stories are ready

By preparing a user story, you have articulated the business value for the end user. But the charm of a user story is also that it formulates not only business value, but the requirements for development and testing as well.

In other words, that same set of stories serves as excellent business-level documentation — a quick way to understand exactly what your system does.

Estimation

Every story lends itself to estimation, so the implementation effort is determined quickly — without weeks of preliminary description.

Documentation

Finished stories are business-level documentation: they show what the system does without diving into interfaces.

Development requirements

A statement of intent with acceptance criteria goes straight into the development team's work.

A basis for testing

Acceptance criteria give you something to check the story against — tests are written before the code.

Tips for writing user stories

  • It is better to write many smaller stories than a few bulky ones.
  • Ideally, each story should be written without technical jargon.
  • Stories should be written so that they can be tested. Tests should be written before the code.
  • Avoid the UI for as long as possible: a story should work without being tied to specific elements.
  • Every story should carry an estimate.
  • A story must have an end value — that is, it must lead to a concrete result or produce an impact.
  • A story must fit within an iteration.

INVEST: quality criteria for a user story

The Scrum guide offers six criteria for checking the quality of a story. Here they are — along with how we read each of them in our work.

CriterionScrum guideANIART
IndependentReduced dependencies = easier to planIndependent. Interdependencies with other stories are kept to a minimum. The story is easy to isolate and implement.
NegotiableDetails added via collaborationNegotiable. The description is sufficient for everyone involved to understand it: after reading it, everyone is ready to contribute additions.
ValuableValuableCarries clear value.
EstimableToo big or too vague = not estimableSuitable for estimation. Stories that are too large or vaguely worded are hard to estimate with any precision.
SmallCan be done in less than a week by the teamCompact enough to be completed in less than a week with the whole team working on it.
TestableGood acceptance criteriaTestable. Acceptance criteria are sufficient to check the story against them.

How this works in practice

  1. We state the intent. For each role — User, Guest, Operator, Administrator — we write down one main action and the value it leads to.
  2. We add acceptance criteria. For each story — the conditions it will be checked against, plus error handling and technical notes.
  3. We check it against INVEST. A story that fails on "Small" or "Estimable" is broken down into smaller ones.
  4. We estimate. Every story gets an estimate — and those estimates add up to the cost of development.
In summary. Instead of paying for a "proper spec" blindly, you get the estimate and the documentation at the same time: a set of short stories that make sense to the business, lend themselves to estimation, and feed straight into development and testing.