Of all the attributes of the INVEST model, "Valuable" is the easiest one to, well, value. Who is against value?
We'll look at these key aspects:
- What is value?
- The importance of external impact
- Value for whom?
What is Value?
Value depends on what we're trying to achieve. One old formula is IRACIS. (Gane & Sarson mentioned it in 1977 in Structured Systems Analysis, and didn't claim it was original with them.) IRACIS means:
- Increase Revenue
- Avoid Costs
- Improve Service.
Increase Revenue: Add new features (or improve old ones) because somebody will pay more when they're present.
Avoid Costs: Much software is written to help someone avoid spending money. For example, suppose you're writing software to support a call center: every second you save on a typical transaction means fewer total agents are needed, saving the company money.
Improve Service: Some work is intended to improve existing capabilities. Consider Skype, the voice network: improving call quality is not a new feature, but it has value. (For example, more customers might stay with the service when call quality is higher.)
IRACIS covers several types of value, but there are others:
Meet Regulations: The government may demand that we support certain capabilities (whether we want to or not). For example, credit card companies are required to support a "Do Not Call" list for customers who don't want new offers. If the company didn't provide the capability by a certain date, the government would shut down the company.
Build Reputation: Some things are done to increase our visibility in the marketplace. An example might be producing a free demo version of packaged software, to improve its marketing. In effect, these are an indirect way to increase revenue.
Create Options: Some things give us more flexibility in the future. For example, we may invest in database independence today, to give us the ability to quickly change databases in the future. The future is uncertain; options are insurance.
Generate Information: Sometimes we need better information to help us make a good decision. For example, we might do an A-B test to tell us which color button sells more. XP-style spikes may fit this category as well.
Build Team: Sometimes a feature is chosen because it will help the team successfully bond, or learn important to the future.
Several of these values may apply at the same time. (There's nothing that makes this an exhaustive list, either.) Because multiple types of values are involved, making decisions is not easy: we have to trade across multiple dimensions.
Valuing External Impact
Software is designed to accomplish something in the real world.
We'll lean on a classic analysis idea: describe the system's behavior as if the system is implemented with a perfect technology. Focus on the effects of the system in the world.
This helps clarify what are "real" stories: they start from outside the system and go in, or start inside and go outside.
This also helps us avoid two problems:
- "stories" that are about the solution we're using (the technology)
- "stories" that are about the creators of the system, or what they want
If we frame stories so their impact is clear, product owners and users can understand what the stories bring, and make good choices about them.
Value for Whom?
Who gets the benefit of the software we create? (One person can fill several of these roles, and this is not an exhaustive list.)
Users: The word "User" isn't the best, but we really are talking about the people who use the software. Sometimes the user may be indirect: with a call center, the agent is the direct user, and the customer talking to them is indirect.
Purchasers: Purchasers are responsible for choosing and paying for the software. (Sometimes even these are separate roles.) Purchasers' needs often do not fully align with those of users. For example, the agents using call center software may not want to be monitored, but the purchaser of the system may require that capability.
Development Organizations: In some cases, the development organization has needs that are reflected in things like compliance to standards, use of default languages and architectures, and so on.
Sponsors: Sponsors are the people paying for the software being developed. They want some return on their investment.
There can be other kinds of people who get value from software we develop. Part of the job of a development team is balancing the needs of various stakeholders.
We looked at what values is: IRACIS (Increase Revenue, Avoid Costs, Improve Service), as well as other things including Meeting Regulations, Generating Information, and Creating Options.
We briefly explored the idea that good stories usually talk about what happens on the edge of the system: the effects of the software in the world.
Finally, we considered how various stakeholders benefit: users, purchasers, development organizations, and sponsors.
Value is important. It's surprisingly easy to get disconnected from it, so returning to the understanding of "What is value for this project?" is critical.