In this 12-part series we will examine 12 underlying principles behind the Agile Manifesto, starting with principle number 1:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Let’s break this statement down see what we can learn about the overall intentions of Agile practices.
First and foremost, take note of the fact that “satisfying the customer” is the highest priority. This is the point of it all. The whole reason for adopting Agile methodologies is meeting customer needs. They may be customers in the traditional sense of the term or “customers” as end users. Regardless, the goal is ensuring recipients get valuable software, the second item of interest.
We will satisfy our customers with valuable. But what do we mean by “valuable?” What makes software valuable? Clearly defining what this goal means helps us flesh out those details.
Software is only valuable when two related conditions are satisfied:
- The software does what it’s supposed to do — and it does it well.
- The software is deployed to its production environment – however that is defined.
These are the only requirements for software to be valuable: It needs to work, and it needs to be in the hands of users, not stuck in development. A software product is worthless until it can be put to its intended use.
Up to this point there hasn’t been anything particularly “Agile-ish” about what we’ve discussed. Nothing distinguishes this from any other practice. Everyone wants happy customers and everyone wants to produce good code. So what makes Agile different? The next points are the key to understanding.
How are we going to make good code? Early and continuous delivery.
Why early? One defining motivation behind Agile practices is schedule slip prevention. Customers and employers alike become dissatisfied with late projects. Customers incur opportunity costs, losing time they could have spent utilizing the product. Employers have it worse, though. Late projects raise the cost of product production, threaten the relationship with existing customers, and make attracting new customers more difficult. Ultimately, it boils down to the ability to make and keep promises.
Releasing, or at least previewing, software as soon as possible provides several advantages. The first is educational. Providing something to a customer quickly allows them to provide feedback helping direct the project and avoid compounding mistakes. It ensures you’re building the right product aligning with the customer’s expectations of quality. This helps you produce quality code.
Secondly, if we provide a usable version, we allow customers to extract the theoretical maximum amount of value from the product possible. They may not have all the promised features, but they can begin using available features, receiving a greater return on their investment.
Finally, consider continuous delivery. We want to provide customers something regularly so we can reap the benefits of repeated early delivery. If we introduce changes in relatively small batches we reduce the overall risk. Any deviations in quality or direction can be addressed closer to the time of implementation, when they are least costly to fix. Customers are again able to maximize overall value by putting new code to use as soon as it’s available.
Keep your eyes on the SPK and Associates blog for more articles unpacking Agile Methodology.
Senior Software Engineer
SPK and Associates