In my white-paper, Managing Project Risk with Agile, we provided an overview of the ways Agile software development reduces the four risks common to most software projects. In this post, I will explore one of those approaches – prioritisation – in more detail.
Prioritisation is an important approach for managing and mitigating the risks to cost and value in our projects. Rigorously prioritising work reduces the risk of delivering software of low value while also ensuring that costs are controlled by only working on what is important to our organisation and customers.
What is the problem?
Working on features that have little to no value to users is a problem common to many software development projects. Value to the organisation is delayed as a lack of prioritisation leads to long development times and large slow release cycles while we wait for something of value to be delivered.
Working on low value features also reduces team morale and productivity.
What is prioritisation?
In Agile software development, prioritisation is the process of forced ranking of features (or equivalent) to ensure that the work with the most value is completed first. Prioritisation happens continuously throughout a project and enables changing priorities and new information to influence the development of products.
It is important that there is a robust methodology for prioritisation. Different projects work with different methods to determinealue. In this paper we will look at ‘weighted shortest job first’ (WSJF) which gives us a robust, economic framework for making decisions. WSJF works well for all organisations but particularly for larger ones as it takes into account not only the value of the feature but the cost of delay
Why is prioritisation important?
We can ship software sooner with rigorous and continuous prioritisation. Shipping sooner delivers value to our customers and our organisation earlier, giving us greater feedback on the direction we have taken and enabling us to measure our return on investment (ROI).
“In the 2002 Standish Group report, it was observed that mismatching customer satisfaction with the functionality of delivered software is still one of the main reasons that many software projects fail to achieve their stated objectives.”
The Science and Practice of Software Release Planning, Günther Ruhe, Moshood Omolade Saliu
In the chart above we can see that 45% of enterprise software is never used. Nearly half of the features are of no value to users. The cost to our organisations of these never used features is incredibly high. The cost, time and resource required to produce software are greatly increased, along with the complexity of the product.
Increased complexity increases the cost to our organisations of maintaining the code base, adding new features and supporting existing features. Users require more training and support as they seek to navigate overly complex lists of features to get to the features they truly use.
Working on features that will never be used limits the opportunity to work on features that are of actual value to users and reduces the overall value of our software.
In summary, lack of prioritisation causes:
- low value features to consume valuable time and resource in development
- increased complexity of code
- increased complexity of software for users
- reduced value in the market.
This post is an excerpt from the chapter on prioritisation in my book Risk to Reason: Managing Project Risk with Agile.