Prioritization played a significant role in the success of most feature-rich apps, such as Slack and GitLab. Initially, they offered a limited set of functionalities that were essential for their users. With time, this set was supplemented with other features. Railsware is going to share its own style of prioritizing and show you how we use the MoSCoW method to get long lists of tasks done.
As a rule, the daily routine includes a bunch of tasks. Ideally, you’ll have enough time and energy to cover all of them – but it just might happen that the number of tasks is immense and the resources available are not in abundance. That’s where prioritization comes in.
This term denotes a process to filter what you have to do in order of importance or relevance. For example, if you’re building a house, you are not likely to begin with the roof or walls until your foundation is done. Of course, things are much more complicated in the web development industry, and this example cannot reveal the full-scope value of setting priorities.
Complex projects and numerous startups make use of advanced prioritization techniques. These usually consist of frameworks known for specific requirements or rules that improve decision-making. Success in prioritization often determines the success of the company itself. Getting caught up in pending and undone tasks is a straight road to failure. That’s why businesses pay particular attention to which prioritization methods to use. There are quite a few of them, but they all have some common characteristics, such as orientation towards input (internal or external) and quantitative or qualitative tools.
External orientation means that you need to involve stakeholders outside the development team to set priorities, while the internally-oriented methods can be executed purely in-house. Quantitative methods entail a deeper focus on numeric metrics in prioritization, and the qualitative one rests on expert opinions, votings, classifications to a greater extent. In view of this, they are traditionally divided into the following categories:
You can read about different Agile prioritization techniques in detail here.
Railsware prefers a technique developed by Dai Clegg way back in 1994. Initially, it was named MSCW, but two o’s were added to improve pronounceability. This also made it sound like the capital city of Russia. Let’s see how it works.
To understand the gist of the MoSCoW method, we need to look at its origin – the dynamic systems development method (DSDM). It is a framework for Agile project management tailored by practitioners with the aim of improving quality in rapid app development (RAD) processes. A hallmark of DSDM projects is strictly determined quality, costs, and time at an early stage. In view of this, all the project tasks have to be allocated by importance. The need for managing priorities triggered the invention of a specialized prioritization mechanism.
This mechanism was implemented via MoSCoW – a simple yet powerful solution to set priorities both with and without timeboxes. However, it shows better efficiency if you have a certain deadline for a task, feature, subfeature, functionality, etc. The framework is applicable to all levels of project prioritization from top to bottom, as well as to all functions and focus areas.
The MoSCoW abbreviation (except for the o’s) is carved with first letters of the priority categories it works with. These are Must-haves, Should-haves, Could-haves and Won’t-haves. And that’s how you can define which task falls into which category.
These rules or requirements estimate the importance of any task/process/feature/etc. Each company or work team uses its own approach to setting requirements, but, in general, they do not differentiate much and look as follows.
These are top-priority requirements, which shape the foundation of the major pipeline. Avoiding them means blocking the entire project or further activities. As a rule, product ideation depends entirely on defining must-haves using such pointers as ‘required for launch’, ‘required for safety’, ‘required for validation’, ‘required to deliver a viable solution’, etc.
This type of requirement is of secondary priority. Should-haves do not affect the launch and, traditionally, are considered important but not crucial. They differ from must-haves by the availability of a workaround. Therefore, the failure of a should-have task is unlikely to cause the failure of the entire project. If you’re building a product, it will still be usable even if these requirements aren’t met.
The next requirement is less important than the two previous ones but still wanted. If we compare could-haves with should-haves, the former is defined by a lower degree of adverse effect if omitted. Traditionally, the third-level priority requirements in the Agile framework MoSCoW are realized if a project is not highly constrained in time. Within the product development, we can call them low-cost tweaks.
You can also encounter this type of requirement under the name of would-have or wish-to-have, but these variants are not recognized by the Wiki. However, regardless of the chosen name, these requirements define the lowest priority for tasks that are unviable to implement with a particular budget and deadline. Won’t-have does not mean a complete rejection of something. It envisions reintroduction under favorable conditions in the future.
In search of the perfect tools and techniques, our team often modifies some well-known approaches and tailors them to our needs. This constant search and improvement led us to brand new product ideation and decision-making framework: BRIDGeS. BRIDGeS is a flexible approach for multi-context analysis suitable for building effective product strategies, solving operational and strategic problems, making day-to-day decisions, and more.
MoSCoW is another tool that we modified to make it even more flexible and versatile. Below, we share our findings to help your team nail prioritization in a more efficient way.
The main difference between the classical MoSCoW and our version of this technique is that we added another level of prioritization within such groups as Must, Should, and Could. Each of these groups of requirements got another 4 complexity categories:
3 – most heavy and unclear requirements
2 – heavy complexity
1 – normal complexity
0 – easiest and the most urgent tasks within the group
This way, when a requirement gets, let’s say, the priority Must, we can also add a numeric matter to the letter M. For instance, our sprint can include several M2 tasks, one M1 task, and three S1 tasks.
When the task is marked with the priority “3” (M3/S3/C3), it most likely means that its scope is too large and complex to be fulfilled fast. You need to decompose it into smaller, manageable chunks and prioritize them as well. This way, from one M3 requirement, you can get a bunch of M2, S1, and C1 tasks, for example.
Sometimes, M, S, C, and W letters are not enough and we may also need an Urgent Must (UM) mark. UMs are the most critical things, such as hotfixes, bug fixes, and patches, which block the work of the whole team. From our experience, we recommend you to fix these tasks ASAP, as they hinder the team’s productive work. So if you set any task as UM, you should ignore all other tasks until the UM task is fixed. In normal situations, your bug tracking system shouldn’t have UMs.
Why do Urgent Must tasks appear? Often, UMs are the Must-haves that your team ignored before the deployment phase or missed during the QA phase. Pay attention to these tricky cases, and try to solve them before they become an obstacle.
Get to know how we use the modified MoSCoW, the advantages and alternatives at Railsware's blog, where this article was published originally
The art of setting priorities shows the efficiency of your workflow. Railsware’s choice is the MoSCoW project management framework, which has made a good showing in versatile functionalities and products. However, it might be less useful for immense projects with multiple teams involved in the pipeline. We advise you to find an effective prioritization solution that fits your unique needs, and to always avoid getting caught up in countless pending tasks.
What are your thoughts on prioritization and how do you approach this? :)
skillShack(⚡); is a community for software professionals looking to share the projects they are working on and get feedback. From side projects to startups!
Built with ❤️ by Sushrit Pasupuleti