Via Negativa — Improving products by subtraction

Alfredo Artiles
Audiense Engineering
5 min readJun 29, 2023

--

I wrote this post originally in Spanish and can be found here.

Photo by Miles Burke on Unsplash

Some weeks ago, the Audiense Product Team got together in Córdoba for our quarterly Product Meetup. This one was very special because, for the first time, the original Audiense team and the three recently acquired companies met in person. One of the product strategy debates was around the proportion in which we should continue building new features versus reducing risks.

In the world of product development, the idea that more is better often prevails. Add more features, try new technologies, incorporate the latest algorithms, force in AI, etc. There is another counterintuitive perspective that can be just as powerful or more: the Negative Way or Via Negativa in Latin.

Via Negativa

I recently discovered this idea in Nassim Nicholas Taleb’s fascinating book, Antifragile, Things that Gain from Disorder, which I will surely refer to several times because there are many other interesting ideas that apply to product development.

The Via Negativa focuses on:

  • what something is not
  • what to avoid
  • what not to do

We know more about what is wrong or does not work than what is right. Taleb argues that knowledge grows more by subtraction than by addition, given that what we know today could turn out to be incorrect, but what we know is incorrect cannot turn out to be correct.

“The greatest — and most robust — contribution to knowledge consists in removing what we think is wrong — subtractive epistemology.” — Nassim Taleb

Via Negativa is a risk-based approach. In a world of uncertainty, we must be especially cautious about things that have not been tested. For things to be tested through negative knowledge, they must withstand the test of time. The longer something has been present without evidence that it is harmful, the more likely it is that it is not bad for you.

“The erroneous is robust, the unknown is fragile and speculative.” — Nassim Taleb

In the metaphor of the shower from the previous post (Spanish), we already saw the consequences of lurching around. If these lurches are also additions of functionalities (positive way) whose value has not been validated and that will also incur a basal cost, the risk of moving away from our goal increases.

In product development, all this can be summed up in a simple premise:

To improve a product, sometimes, you have to remove.

“Tell me how you will measure me, and then I will tell you how I will behave”

Most product companies reward only addition as culture. We celebrate releases and rarely reward risk reduction. How many medals does the person who avoided that maintenance that never happened due to eliminating dead code or unused functionality have?

“In our society, only growth/epic/construction is valued. If the environment is toxic, the epic becomes heroism and drama.” — Eduardo Ferro’s comments on the original post.

Eduardo also wrote an interesting article about why ”construction engineering” is NOT a good metaphor for software.

The current economy is designed to thrive in The Positive Way. For example, most consulting firms only make money if they generate complexity where their continuous intervention is necessary.

Practical applications

Let’s see some practical applications of the Via Negativa in the world of product development:

Reduce code complexity

Often we try to improve our software by adding more code. However, removing unnecessary or redundant code can be even more beneficial.

Removing unnecessary code can make your software more efficient, easier to understand, and easier to maintain. There is a limit to the amount of code you can remove (the code that is already there), so the decision of what to do becomes more manageable.

Optimise performance

When it comes to improving the performance of software, we often try to add more resources: more memory, more CPU, etc. However, the Via Negativa suggests that, instead of adding, we could look at what we can remove.

Perhaps some parts of your code are performing unnecessary calculations that can be eliminated or modified to be more efficient. Or maybe you are using a heavy dependency on a single function when you could write that function yourself and eliminate the need for the entire library.

Avoid errors

As with negative habits, another way to take advantage of the Via Negativa in software development is to avoid errors before they occur. Often, it is more beneficial to prevent bugs than to work to fix them after they have happened.

Instead of writing complicated code and then spending hours debugging it, you can try to avoid potential sources of error in the first place. For example, use SOLID design principles and eXtreme Programming practices like TDD to detect and fix errors before they become problems.

Experiment and discard

Don’t focus on the features you think will work, rather avoid those you know won’t work. Acts of omission, that is, decisions not to implement certain features, are also important elements in the software development process.

Someone who seemed to understand this perfectly was Steve Jobs.

“People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I’m actually as proud of the things we haven’t done as the things I have done. Innovation is saying ‘no’ to 1,000 things.” — Steve Jobs

Inverse approach

Focus on problems in reverse. Instead of asking yourself how some functionality or technology choice can lead you to success, ask yourself how it could determine your failure. And then, devote your energy to preventing those contingencies.

Conclusions

The Via Negativa, although it seems counterintuitive, represents a powerful approach to efficiency and innovation in product development. By focusing on what we should not do, what to avoid, and what elements to remove, we can achieve more robust, efficient and manageable products.

This leads to cleaner code, less prone to errors, and ultimately higher quality software. In addition, the elimination of unnecessary or redundant features can open up valuable space for innovation and improvement.

However, the adoption of the Via Negativa requires a significant cultural shift. Traditionally, addition and action have been rewarded, while elimination and risk prevention often go unnoticed.

We must find ways to incentivise the Via Negativa in our teams. We need to learn to value the elimination of fragility and risk as much as the addition of new features. It is also vital that we celebrate and reward the critical work of those who strive to make our systems, less complex, more antifragile, and ultimately better prepared for the future.

If you have experiences, ideas, or approaches to encourage and reward the negative way in your teams, I would be happy to listen to you.

--

--

Co-founder & CTO at Audiense. Always cuban. Swimmer and runner wannabe. Like playing chess in my spare time.