Product Crafter Emilio Carrión
English
Spanish

Pragmatic Quality

The art of balancing value and effort

In the world of software development, the search for quality is a constant. However, how far should we take this search? Is there a point at which additional efforts to improve quality become meaningless?

This is where the concept that I have called “pragmatic quality” comes into play, a philosophy that seeks to find the perfect balance between the necessary quality and the effort invested.

What is Pragmatic Quality?

Pragmatic quality is keeping the software of a digital product at a level of quality that provides the necessary value, without falling into the trap of spending excessive efforts on improvements that are not tangible to the user or the business. It’s an approach that recognizes that quality is important, but also understands that there is a point beyond which further improvements don’t justify the time and resources invested.

The simile of saffron in paella

To better understand this concept, we can use a culinary analogy: saffron in paella (one of the many learnings I have gained in my years at Mercadona Tech). This comparison refers to the practice of adding saffron to paella, a normally expensive ingredient.

Saffron, without a doubt, brings a touch of color and flavor to paella. However, its high price and the fact that its contribution to the final flavor of the dish is not so significant as to justify its cost, make it a perfect example of what pragmatic quality is not. Adding saffron to paella is like adding unnecessary functionalities or refinements to a software that already fulfills its function adequately. It does add flavor, but adding more is not going to improve the paella.

The importance of pragmatic quality in software development

In software development, pragmatic quality translates into several practices and considerations:

  1. Prioritization of functionalities: Not all the functionalities of a product have the same value for the user or the business. Pragmatic quality involves identifying and focusing on those that really matter.
  2. Technical debt management: Sometimes, it is necessary to make trade-offs in quality to meet deadlines or budget constraints. The key is to manage this “technical debt” in a way that does not compromise the long-term viability of the product.
  3. Continuous improvement vs. perfectionism: Continuous improvement is essential, but perfectionism can backfire. Pragmatic quality seeks a middle ground where improvements bring real value. Better done than perfect!
  4. Adaptation to the context: What is considered sufficient quality can vary depending on the context of the product, its stage of development, and the needs of the market.
  5. Balance between speed and quality: In a competitive market, it is sometimes more important to launch a functional version quickly than to wait until you have a perfect product.

Implementing Pragmatic Quality

To implement pragmatic quality in software development, we can follow these steps:

  1. Define clear objectives: Establish from the beginning what level of quality is necessary for the product to fulfill its function and satisfy users.
  2. Measure and analyze: Use metrics to evaluate the quality of the software and its impact on the value perceived by users. DORA metrics such as failure rate or reset time can be interesting.
  3. Prioritize improvements: Identify which aspects of the software need improvement and which are already at an acceptable level.
  4. Continuous feedback: Maintain a constant dialogue with users to understand which aspects of the software are most useful and which need attention.
  5. Periodic review: Regularly re-evaluate the quality approach to ensure that it remains relevant and efficient.

The Dangers of Ignoring Pragmatic Quality

Ignoring pragmatic quality can lead to several problems:

  1. Oversoftware: Create a product with unnecessary functionalities that complicate its use and maintenance.
  2. Waste of resources: Investing time and money in improvements that do not provide significant value.
  3. Delayed Time-to-Market: Losing market opportunities by looking for unnecessary perfection.
  4. Team fatigue: Demotivating the development team by focusing on insignificant details instead of the real value to the user.

Conclusion

Pragmatic quality isn’t about settling for less, it’s about being smart and strategic in how you invest effort in software quality. Since deciding not to add saffron to paella can result in a delicious and more cost-effective dish, taking a pragmatic approach to software quality can lead to products that meet the needs of users and the business efficiently.

In a world where resources are limited and market demands are increasingly demanding, pragmatic quality is an essential philosophy for success in software development. It’s not about sacrificing quality, it’s about understanding where it really matters and focusing efforts where they have the greatest impact.