What is Acceptance Criteria?
I had a business user ask me
"what is acceptance criteria?".
I scoffed and thought
Acceptance criteria? That is so easy how can an English speaking person not know what acceptance criteria is or means?
I started to reply to the user’s email, I then realized that explaining the meaning of acceptance criteria (in the agile world) wasn’t as easy as I thought.
So I started to break down the meaning. I asked myself what is acceptance criteria in lay-man’s terms?
Acceptance Criteria is a list of items that must be delivered in order to mark a feature as complete.
Okay seems simple enough, and this is what I sent back to the user. They replied to my explanation with
"Thank you for the explanation but it is still not clear to me what Acceptance Criteria is. Could you give me more information."
So how can I explain this to a 5-year-old without coming across as being condescending? How can I make this as simple as possible. So I tried again?
When you asked for this new feature, in your mind it had to have the functionality that you wanted The developer that will implement your new feature needs to get the big picture of what you want. As the developer implements, your feature, they are going to tick items off that will make up the feature you want. In other words, the developer needs to know what your requirements are in order to give you what you want. A picture is worth a thousand words so any working examples or screen-shots or mocks will be valuable
I went even further and used an example I found.
As a conference attendee, I want to be able to register on-line, so I can register quickly and cut down on paperwork
The acceptance criteria for this story would include
1. A user cannot submit a form without completing all the mandatory fields 2. Information from the form is stored in the registrations database 3. Protection against Spam is working 4. Payment can be made via credit card 5. An acknowledgment email is sent to the user after submitting the form.
I thought long and hard about what is acceptance criteria and my different replies. The following questions popped up in my mind while doing this.
- Why is it so difficult for us to communicate to users what we really need from them?
- Why don’t we have a glossary that each member of the team can maintain and distribute around to keep everyone on the same page.
- Why do we keep making life so difficult for ourselves and our users?
- Why do we keep giving explanations like:
Acceptance Criteria are a set of statements, each with a clear pass / fail result, that specify both functional (e.g., minimal marketable functionality) and non-functional (e.g., minimal quality) requirements applicable at the current stage of project integration. These requirements represent "conditions of satisfaction." There is no partial acceptance: either a criterion is met or it is not.
instead of keeping it simple?
I don’t have the answers to these questions right now but surely if we as programmers / developers / engineers keep down this path we will further alienate the very people whose lives we are meant to make easier.