You’re developing a product or improving existing software, your backlog contains 45 urgent tasks for two programmers and one tester, and the other 567 secondary tasks that have been postponed for four years. These are sure signs that it’s time to prioritize software development.
If this sounds like your situation, know that your case is of moderate complexity. It’s not uncommon for companies to find themselves in near-disastrous positions due to their inability to prioritize software development promptly and correctly. In this material, we will look into different prioritization models and find out which one suits your business. Make this article your priority for today. 🙂
How is Software Development Prioritization Different from Other Business Prioritizations?
The task of prioritizing software development is often complicated by specific aspects of the tech industry: speed, technical debt, and iterative development. Let’s break down each one.
Speed of Software Development
The software business evolves faster than many other industries. The pace is influenced by constant updates to available technologies, rapid trends, and technological breakthroughs, such as AI. Due to this high speed of development, prioritization becomes stricter, as the order of changes often determines the marketing potential of your product. On the other hand, the speed of communication with the audience plays in favor of software companies – users quickly report product flaws, and you can swiftly react to widely noted issues.
Technical Debt in Software Products
We have written in detail about managing technical debt; read the article if you’re interested in delving into this topic.
Technical debt, the accumulating problems in the code planned to be resolved later, can limit the implementation of new features. In practice, you often can’t tackle a new feature because an old bug, which hasn’t been addressed, blocks a whole new layer of functionality development. It is particularly painful when it’s time to scale the software, and you are limited by the low throughput of functionality that was architecturally designed for significantly smaller volumes.
Iterative Development
If you fail software development prioritization, this part becomes the biggest headache. When planning iterations, you can move to the next stages only when the previous ones are completed, as all functionalities are interconnected. If you have allocated resources for an iteration, but 10% of critical tasks are not completed, you will face downtime of pretty expensive specialists and a delayed release. In iterative development, prioritization has the main influence on the success or failure of your business.
Considering the 3 described features of software development prioritization, we move on to 3 goals and 6 methodologies to help you get it right.
3 Goals of Software Development Prioritization
The result of a task is impossible without a properly set goal. To be honest, in software development, a correctly set goal is the main factor of success because most problems in development arise when someone misunderstands the goal. Here are 3 goals to focus on:
1. Maximize the benefit from available resources, including human resources
You need to prioritize software development to avoid downtime and maximize economic benefits as quickly as possible.
2. Achieve a competitive advantage as soon as possible
Any tasks in software development make sense only when their result adds additional value to your product in the market, or at least provides the opportunity to create such value.
3. Eliminate unnecessary load
Prioritization should reduce the number of tasks, as your backlog likely contains items that no longer serve the first two goals on this list.
Prioritize Software Development Using the Eisenhower Matrix
One of the simplest prioritization models in software development, actively used in Agile development, is the Eisenhower Matrix.
Divide tasks into four categories:
- Important and urgent
- Important but not urgent
- Not important but urgent
- Not important and not urgent
Act according to the scheme shown in the image below.
Importance in this case is determined by the business effect that task completion will bring. The more the task’s completion benefits the business, the more important it is. Urgency is determined by how many important tasks depend on the completion of the current task. The more important tasks cannot start until this one is done, the more urgent it is.
Example:
You are developing a mobile app for managing a smart home: heating and cooling systems, smart appliances, burglary alarms, smart speakers, and other connected devices. Your backlog includes the following tasks:
- Fix the system’s connection with the internal system of the refrigerator.
- Fix the bug that causes the alarm to turn off for several hours once a day.
- Develop a new app screen for user feedback on malfunctions.
- Add AI object recognition to surveillance cameras.
Based on your situation, you assess task 1 as important but not urgent, task 2 as important and urgent, task 3 as slightly important and not urgent, and task 4 as not important but urgent (to keep up with trends).
Thus, your priorities are: 2 (complete) -> 1 (schedule for completion) -> 4 (delegate to contractors) ->3 (complete last).
In this example, we do not discard tasks. However, it is also important to do so in real projects because often many unnecessary tasks remain in the backlog simply because they have been there for a long time and you got used to them.
Prioritize Software Development Using Cost-Benefit Analysis
This method is similar to the previous one, but instead of urgency, the cost factor of task completion is considered. This is a good methodology for startups and companies with severely limited development budgets.
Evaluate each task in terms of costs to complete and the expected benefits. Priority should be given to tasks with a high benefit-to-cost ratio. Again, benefit means business efficiency that leads to increased cash flow.
Often, it is difficult to estimate the monetary effect of a single specific task. For example, if we are still making the smart home app, it may be unclear how much money a new feedback screen will bring to the company. In this case, first sort the tasks whose effect can be calculated more or less accurately – these will be the highest priority tasks. The rest can be grouped for calculation. For example, we combine the feedback screen task with the task of retaining users in the app, and here we can already operate with dropout rates and LTV figures.
Prioritize Software Development Using the Kano Method
The Kano model differs from other models with the factor of satisfaction. Any product has two qualities: objective engineering quality, which means the quality of parts, technologies, materials, etc., and subjective quality, which means how satisfied users are with individual product features. Thus, there are low-functional features that bring little or a lot of satisfaction to users, and high-functional features that also bring much or little satisfaction to users.
For example, in our smart home story, the task of scanning refrigerator contents and automatically ordering groceries can be a significant improvement in objective quality, but if this option leads to increased user spending on groceries, they will probably evaluate it negatively. This is a high-functional feature that brings little satisfaction.
In the Kano model, some features do not elicit any user response – this is the middle line of indifference. For example, adding operational capacity to the smart home system is a measure that improves objective quality, but if you do it on time, users will most likely have no idea about it and remain neutral.
Understanding the chart:
- Must-be — these are the basic features of the product, inherent by default.
- Performance — features whose level of implementation directly affects customer satisfaction.
- Attractive — something unexpected for the consumer, a killer feature with wow effect.
- Indifferent — features whose presence or absence has no effect.
Distribute your tasks across these four groups. To assess the impact of a particular feature on subjective quality, Kano suggests surveying your users and asking two questions:
- How would the person feel if the product had a certain feature (or some attribute was done well)?
- How would the person feel if the product lacked a certain feature (or some attribute was done poorly)?
Response options typically allow for assigning importance scores, for example:
How would you feel if your refrigerator automatically ordered food based on your consumption and stocks?
- I would really like it (1)
- I would like it (2)
- I don’t care (3)
- I would dislike it (4)
- I would really dislike it (5)
The simplest way to calculate using the Kano model is to count what percentage of respondents assign the feature to each group.
Use the Kano prioritization model in different ways. We suggest you prioritize software development in the following order:
- Must-be
- Performance
- Attractive
- Indifferent (if you are sure they are necessary at all)
Prioritize Software Development Using the Call-center Method
This is another method suitable for software development, considering the significant amount of product feedback from users. It is based on collecting complaints and counting which features of the product generate the most negative reactions. This is one of the most popular methods of prioritization in software development companies, but it is essential to use it correctly because the audience will never impact your business with your best interests in mind.
The general rule is: to assign a higher priority to changes that receive the most complaints from users. This helps improve user experience and retain customers.