From the course: Agile Foundations

Start with the highest value

From the course: Agile Foundations

Start with the highest value

- The very first principle in the Agile Manifesto is that our highest priority is to satisfy the customer through early and continuous delivery of valuable software. The key thing to think about with this principle are the words priority and valuable. So what does it mean to prioritize high-value software? Strangely enough, one of the answers to this question starts in the 19th century with an Italian economist named Vilfredo Pareto. When he was in his garden harvesting peas, he noticed that 20% of his peapods produced 80% of his peas. He was an economist, so he compared this ratio to the wealth distribution in Rome. There he saw that 20% of the population owned 80% of the city's land. So this 80/20 ratio is now known as the 80/20 rule, or the Pareto Principle. 80% of the effects comes from 20% of the causes. Now, if you fast forward to the 1990s, a consulting company called the Standish Group published a report that said that a majority of software projects were failing. That's because they spent too much time working on software features that no one will use. Think of it this way. If you use a program like Microsoft Word, you might really be using only a small set of the features. Maybe you use spellcheck, print, or copy and paste, but you might never use mail merge or any of the hundreds of language packs. That's true with most software products. In fact, the report showed that for most customers, 45% of the features in a software product are never used. Then 19% are rarely used, and 16% are sometimes used. Finally, 13% are often used, and 7% are always used. If you look closely, you'll see the Pareto rule: Only 20% of the product's features are often or always used. So if you are working on an agile team, this 20% is the most valuable part of the software. So you would want to start here first. This would be part of the highest priority feature delivered in the very first sprint. Now, this might not sound like a big deal, but it's actually different from how most teams develop software. Think about if you were creating a simple website, which submitted a contact form. Typically, a project manager might divide this up into two milestones. One milestone might be to create the webpage that has all of the form fields, and then the second milestone might be capture those form fields in a database. Now, imagine you are working on the same website with an agile team. The first thing you would do is ask the customer, which one of the form fields are your most valuable? They would probably say it's the customer's first name and email address. So instead of a milestone that finishes all of the form fields, you would create a simple website that only captures the customer's first name and email address. It would be a fully functional website, but it would only include this 7% of the customer value. Then once that's complete, the agile team will work on the 13%, maybe that's the customer's last name, or their street address. The development team will work on the highest priority features and then move their way down to lower priority features until the whole product is complete.

Contents