User centered design is a valuable approach in creating software:
User-centered design (UCD) is a process (not restricted to interfaces or technologies) in which the needs, wants, and limitations of end users of a product, service or process are given extensive attention at each stage of the design process.
It requires putting yourself in the shoes of your users and thinking from their perspective and also involving users in the design of software because you can’t possibly always know what it’s like to be in their shoes.
One of the challenges you will face with this approach, is making sure you accurately identify what users need versus what they want. Users can have many biases and perspectives that affect what they want, even what they think they need. For example, they may have the bias of a problem they face that’s not a problem for anyone else. And for them it’s not really that big of a problem either, it’s just the only problem they have.
One of the most prevalent mistakes in software is to simply give users everything they want. Once you have more than a handful of users this turns into an incredible amount of complexity that makes the software unusable by anyone. And even if it were usable, a significant amount of functionality would go unused because it doesn’t actually provide any value to the user. Why? Because wants are ideas, and ideas aren’t necessarily worthwhile.
Generally speaking, individual users have wants and needs, and they rarely align. You could think of wants and needs as directions. One is the direction they want to take, the other is the direction they need to take.
Certainly we want to give users what they need, and perhaps we’d like to give them what they want, so long as it doesn’t conflict with what they need. But we shouldn’t give them what they want if it will derail giving them what they need. The problem is compounded when you consider the perspective of multiple users.
There’s no way you can be guaranteed to align what they want, let alone what they need. And when I say what they need, I have been rather vague at this point. A need requires a purpose. The haphazard direction of different needs is likely due to varying responsibilities of different users that lead to different needs. Even different needs from the same piece of software.
You will be leaps and bounds ahead to have considered the perspective of users, but you won’t necessarily have a means to align their needs. Perspective isn’t valuable if it simply leads to wallowing in ideas.
If however, you have a well defined purpose for a software system, then you have the means to create alignment. The purpose of the system leads to objectives to bring that purpose to life. Those objectives are high level business outcomes that the software will help accomplish. Outcomes are chosen based on the desired impact. An impact that we can pre-qualify as likely to be highly valuable. This focus on outcomes creates an understanding of what would make the system worthwhile.
Understanding the desired, valuable outcomes gives us a filter to align the needs of users. We can ask users what they would need to help accomplish the desired outcome. From this we create alignment in needs.
But, even if we are aware of desired outcomes, it’s not always enough to ask users what they would need. Even if we successfully create what they need, they still may not use it. Why? Because achieving the desired outcome may not be in their interests. There may be incentives that cause them to do the exact opposite! If we want to ensure we maximize user centered design, we need to go beyond just framing needs in terms of business outcomes. We need to find a way to align business outcomes with the wants of users. This requires a delicate balance. It might mean altering the business outcomes, but it also means altering the environment, constraints and responsibilities placed on users to provide the incentives to want to achieve the desired outcome. If we can do that, then we can align wants and needs with the desired outcome.
Imagine how valuable user centered design can be if everyone is aligned with achieving the same valuable outcome. Of course, there isn’t one route to achieving this alignment. Part of it may be understanding what users a system should serve. Part of it may be aligning incentives of existing users. Whatever it takes to find a way to get everyone pulling in the same, valuable direction.