Today I wrote contract proposal for a customer. In this case I was trying to write a very simple contract for a website that will be built using Agile concepts. I want my customer involved and participating in this project. After all, it is their project, their business, and I need them involved to develop a site that works well for them.
As I was writing the contract I was thinking about how odd these words must seem to a customer that might be expecting to see a standard fixed cost proposal, or a standard Time and Materials contract. Here I am writing a contract that says they will actively participate in sprint planning and sprint reviews. That they will be responsible for defining accepting criteria, which will give the definition of done. That contract requires a primer in Agile if the customer doesn’t already have some experience with it. What follows is a very short primer to help explain the terms and concepts in this contract (contract not included here).
What is Agile?
Agile is a general term in software development that means adaptable. In it’s simplest terms, an Agile project is one in which a small amount of planning is done. Then a small amount of work is done to create a MVP (minimum viable product / prototype). Once the MVP is created, there is a review of the current status of the MVP by customers, users, the product owner, developers, and other stake holders. Then the cycle repeats. Short planning period, short development period, and a new version of the product is released. Again it is scrutinized by the stake holders. The cycle repeats again, and again, until it no longer makes sense to continue. For a website this probably means the site has reached the customers expectations and they no longer want to continue building it.
These cycles are called sprints.
The first part of each sprint is sprint planning, which is a joint effort between the development team and the customer.
The last part is the sprint review, which is where the product is reviewed and it is determined if the items that were planned were properly finished to meet requirement.
Here are some other terms to know:
Acceptance Criteria: This is a plainly understood set of criteria, which can be agreed upon by all parties that signify a feature has been completed.
Definition of Done: Very similar to and interchangeable with Acceptance Criteria. The Acceptance Criteria give the definition of a completed feature.
Developer: Software Developer
Product Owner: The customer (internal customer or external customer) that has ordered the project to be completed. The Product Owner is the person making requests and approving features.
Sprint: A segment of time in which an agreed upon set of features are to be implemented. (On full time projects, it is typical to have two week sprints.)
Sprint Planning: The Product Owner and the development team decide what items will go into the sprint. Only items with complete Acceptance Criteria should be considered.
Sprint Review: At the end of sprint, it would be ideal for the stake holders and development team to have a meeting, review all the newly implemented features, and have the customer approve or decline acceptance of each feature. Note that the Acceptance Criteria are what would be used to define if it should be accepted or declined. If it meets Acceptance Criteria, but the Product Owner wants something different, then the feature is complete, even though the customer wants something different now. The Product Owner and Developer can discuss adding a new feature to bring it inline with what the Product Owner now wants. It is common for a Product Owner to realize they want something different after they see what they originally asked for. The goal is to keep communication open and refine the product until it is what the Product Owner wants.
User Story: Each feature will be written up as a story that takes the form of “As a [type of person], I want [ something ], so that [ some result].” For example, “As a website visitor, I want to see an organized menu system, so that I can easily navigate the website.”
This topic is huge and I don’t want to go to far with it here. I would encourage you to read about Agile. There different methodologies, such as Scrum and XP. Each will have its own rituals and lingo.