Welcome back to my continuing Back to Basics series. This time I’ll be covering Customer Collaboration: Agile Manifesto Value #3. If this is your first look at the Back to Basics posts, or want a general overview of the Agile Manifesto and its principles, please check this post.
Nostradamus Doesn’t Work Here
There is a shortage of functioning crystal balls in the world, and most fortune tellers are more concerned with your love line and your lucky numbers, not telling you what software will work for you once it’s built. When we talk about customer collaboration, we have to look once again at how projects are traditionally made. With traditional software projects, it turns out you needed all of that comprehensive documentation from value number 2, because how else could you make a proposal to earn the contract for the project? Contracts needed to spell out exactly what you wanted, because you were going to give it to a company and they would take it, go away for a while, make some magic and poof, its software! I hope you and Doc Brown came back from the future knowing exactly what you need, otherwise chances are what you’ve asked for isn’t going to end up being what you need, and that’s assuming the magic men making your software are able to return exactly what you asked for with no issues.
With Agile, we value not only our own interactions like back in value 1, but interaction with the people who will be using what is being produced. We not only want to know what they think they want in the beginning, but we want to work hand in hand with users as often as possible. As we create, we constantly want customers to work with us, refining their vision of what will be useful based on what’s been created. It may so happen that with a few small changes, the customer may determine they may only need a portion of what they originally thought to meet their goals. Seems wasteful on both parties to continue at that point, doesn’t it? It may also happen that the customers are completely wrong about what they thought they wanted, or a major change in their industry completely invalidates their plans. Once again, without collaboration, they would receive (and pay for!) something completely worthless.
New Types of Contracts
We obviously still value contracts. After all, from the developer point of view, we want to know we’ll get paid, and how much. However, we now value new types of contracts, which allow flexibility and collaboration to ensure useful software is created and time is used efficiently. Contracts based on time and materials, flexible contracts with out clauses, and contacts based on incremental delivery are just some of the new forms of contracts that have come out of the Agile movement.
Summing It Up
Working software is only half the battle. Working software that doesn’t do what’s needed is less than useless, it is costly and wasteful. Comprehensive contacts are far more likely to produce software that doesn’t do what’s needed.