Quality in the context of this article is not necessarily just about the quality of the software alone but also about the experience each person has in the software development process.
Not Everyone Has the Same Understanding of Quality
There are common stakeholders for any software development project or product. These are:
- The sponsor: The person providing the funds to get the software developed. Typically they also hold the vision of what the software should be.
- The tech lead: The leader of the software development team.
- The development team: The skilled individuals that actually build the software.
- The end-user: The person who uses the end product (software) for the benefits it offers.
Varying Understandings of Quality
The thing is, each person and role listed above has a different view of what quality on a software project or product is. Let’s highlight them one by one.
- The sponsor: Quality means producing software that is worth the investment. Does the software produce a good return on the funds put into developing it? This is what quality means to the sponsor. Closely related to this is time. Generally, the sponsor will value quicker software development times. Another view of quality to the sponsor is how well the software developed matches the vision set out for it.
- The tech lead: Speed of development and how well the software meets the requirements are what constitute quality to the lead. Easy onboarding of new team members is also related to software quality in the mind of the team lead.
- The development team: The rate of change-requests is a big factor in determining quality for the team members. The skill level of other team members, tools used, level of autonomy, and the quality of the code itself also matter to the development team.
- The end-user: Quality to the end-user means being able to get value from the software in the shortest possible time with the least effort.
So What Matters the Most?
If you ask me, the concerns of the end-user is what matters the most. The only thing that matters really and all effort should be aimed towards achieving this.
The End-user’s Concerns Are Not Always Prioritised
Here is a one-word description of what constitutes quality (and quality experience) to the roles listed above.
- Sponsor: ROI, speed.
- Lead: speed, requirements, churn.
- Team: scope, skills, tools, code.
- End-user: value, intuitiveness.
The issue is that on a given software project or in the process of product development, end-user value and software intuitiveness may not be the most important things prioritised. Rather the individuals with the most power and say have their concerns prominent in the process. For example, if the software being developed is a football game, the concern of the end-user is to have a fun and a realistic game-play experience. The tech lead would like to have clearly defined requirements that will guide the software development team while making sure she attracts and retains skilled developers. The team would want some level of autonomy in order to carry out the work that delivers the best gaming experience.
Now if the sponsor has the “loudest voice in the room” then focus may shift from delivering realistic game-play to saving costs and delivering faster. You can tell how things will turn out bad with this approach.
Software development is a complex process. The examples and scenario painted here are overly simplified. The key thing is to focus on the concerns of the end-user and every other thing should be aligned to this outcome. The project may take longer to deliver and cost more but if the software meets the end-user’s expectations at the end of the day then that’s all that ultimately matters.