The Scourge of Utopian Thinking

Thomas Sowell is one of my favorite authors. In 1987, he published A Conflict of Visions , a book that describes two different visions that shape a country's policies: the constrained vision and the unconstrained vision.

Two Worldviews

The constrained vision considers human nature as fundamentally limited, selfish, and unchanged over time. Human beings are imperfect by essence, and there are always inevitable trade-offs. We cannot achieve social perfection; instead, we must rely on proven systemic processes—tradition, law, decentralized markets—to channel these human limitations productively.

The unconstrained vision sees human nature as malleable, perfectible, and essentially good. Social problems don't stem from a fixed human nature, but from flawed institutions or environments that can be reformed through reason, enlightened intervention, and moral will. This vision is sometimes called the utopian vision. I prefer that name.

The constrained vision is therefore a vision that recognizes the world as imperfect, where it's necessary to make trade-offs constantly. From my point of view, it's a rare vision. Very few people share it, because I think it's difficult, on one hand, to analyze the pros and cons of each action, and on the other hand—and this is the main reason for me—it's very difficult to accept an imperfect world made of compromises. Humans prefer to look away rather than see the world as it is.

Utopian Vision in Politics

The utopian vision, the dominant vision found in the intelligentsia, media, and politics, is a vision that always finds a simple solution to everything. Very present on the left and criticized by Sowell in his works. Retirees struggle to make ends meet? We need to increase pensions. Billionaires are too rich? We need to tax them. People don't have housing? We need to give them some. Companies receive subsidies? We need to take them away. A company goes bankrupt? We need to give it money.

Let's take the example of raising the minimum wage. For the utopian vision, it's simple: people earning minimum wage are poor, let's raise the minimum wage and they'll be less poor. Problem solved. It's a morally comfortable and easy position to defend.

The constrained vision sees things differently. It recognizes that yes, raising the minimum wage improves the situation of those who keep their jobs. But it also sees the side effects. Companies, especially small ones, have limited margins. Faced with a rise in labor costs, they have several options: not hiring, laying off, automating, or relocating. The first affected are often the least skilled, young people without experience, those who would most need a first job to build skills. There's also the wage compression effect: when the minimum wage increases, the gap with wages just above it shrinks, creating tensions and demotivation among those who had progressed. The constrained vision doesn't say we should never raise the minimum wage. It says we need to weigh the pros and cons, accept that there will be winners and losers, and that the perfect solution doesn't exist.

I loved this book because Thomas Sowell introduced me to two diametrically opposed visions. These are two visions that coexist: for a given problem, two people will observe it differently.

Sowell describes these visions mainly in the field of economics and politics with concrete examples. But I noticed, through a recent discussion with engineers, that these visions concern all areas of daily life.

Developers and the Cult of Complexity

Throughout my ten years as a developer, I've had heated debates about various technological choices. Many devs always propose choices that are far too complex: microservices architecture, Kafka, Kubernetes, hexagonal architecture on the front end, rewriting libraries to have our own UI, etc.

Unfortunately, these choices are proposed and applied in most companies because the vast majority of devs approve them. For my part, I fiercely oppose them because they create monstrous complexity for needs we don't have. All these choices are useful for gigantic projects with millions of concurrent users, which is rarely the case if you don't work at Google, Facebook, or any other American tech giant. A large application with a few thousand users doesn't need all that.

At first, I thought all these choices were approved by some kind of malevolence. Devs choose these options to pad their resume, to gain skills on new technologies even though the company doesn't need them. They choose these options because it makes them indispensable to the company: the infrastructure becomes complex and they're the only ones who can manage it. It also helps a lot when asking for a raise—it's easier to justify a salary increase when you manage lots of complicated stuff.

How many times have I seen people promoted because they were the only ones who understood their own design. Managers explain to you: "Yeah but what he does is super complicated." On the other hand, you make a simple solution used by hundreds of people in the company. "Yeah but what you do is easy." No! It's simple because I didn't implement useless stuff for our needs.

Even though this theory is, I think, true, it's incomplete. I think choosing complexity comes from a deep sincerity in the developer. Despite the fact that developers are generally very rational people with critical thinking, they have, like the majority of the population, a utopian vision of life, they see the world without constraints. They prefer to be cautious and tell themselves that if our application has phenomenal success, we'd better have Kubernetes. If the queue system becomes heavily used, we might as well put in Kafka right away. Without seeing the constraints this creates.

I had this reflection while discussing technological choices online with other developers. I advocated for simplicity: a simple server is enough for most projects. But I got bashed and found myself alone against everyone. I was taken for a beginner fresh out of school, a front-end dev (an insult?), I was criticized by being told that "professional architectures" are more complex than what I do—yet this is what I've been doing for ten years.

I didn't even respond because I was so alone against the world. I was given arguments like distributed architecture, observability, 500 containers with networking, multi-region server with zero downtime when you do updates. These are real arguments, but who needs that? What application needs multi-region? Even big French applications—banks, operators, Leboncoin, Doctolib—are only on the French market. They don't need multi-region, they're not present in the United States. Of course, it's different for Deezer, but that represents very few applications. The same goes for each point. What application can't afford a bit of downtime during an update? I agree, it's better not to have any, but if the constraints are much greater, is it worth the trouble?

The majority of people have a utopian vision of life, including among rational developers. It's difficult to measure the pros and cons, and utopians prefer to choose the "safe" solution even if it creates more harm than good, because they can't measure the potential harm caused by the chosen solutions.

Sports and the Illusion of the Perfect Program

This dual vision, between the constrained vision and the utopian vision, is present all around you. In the field of sports, this conflict of visions is also very present.

Let's take the constrained vision. You want to achieve a performance: a marathon in less than three hours, for example. For this, you must follow a precise training with different sessions: long runs, intervals, marathon pace, etc. But three hours is a good performance. You must also do strength training to avoid injuries.

You must therefore design a program that contains all this, in addition to nutrition, sleep management, and your professional and personal life on the side. Strength training is essential: the more you do, the more you reduce the risk of injuries. But if you do too much, it's energy wasted not working on what you're training for: the marathon. And energy, you don't have unlimited amounts. You have to make a compromise on how you spend it: strength training, long runs, intervals, the renovations you're doing at home, etc. The constrained vision requires finding a compromise between everything you have to do.

The utopian vision, conversely, only sees the positive: everything is good! Strength training is great, we need to do it to the max. Intervals are how we progress, so we go all out on those too. And since the majority of people are part of the utopian vision, many end up with this type of program that seems ideal, but which is only so when perfect conditions are met— that is, never . You'll never have enough free time to do all the sessions. You'll never have enough energy to handle the accumulated training weeks. You'll never have all your perfect nights of sleep.

Relationships and the Myth of the Perfect Person

This dual vision is present in all areas of life, even in those where we don't expect it. Take romantic relationships. I wrote a whole article about red flags and how to manage them.

But what is the debate about red flags, really? It's the conflict between the utopian vision, where a red flag is automatically disqualifying, and the constrained vision, which consists of weighing the pros and cons in each situation. Relationships are not simple, and if there's one area where we must make compromises, it's this one. The perfect man or woman doesn't exist. That doesn't mean love is a fairy tale, but the famous "if he wanted to, he would" is utopian.

Let's take the example of timing. The utopian vision says: "It's not the right time" or "When it's right, I'll know." It's reassuring, it avoids taking risks. The constrained vision recognizes that there's never a perfect moment. A relationship requires composing with life's constraints: career, moving, finances, family. Waiting for the ideal moment often means waiting indefinitely.

And then there are the famous "lists" of criteria. The parallel with the previous section is striking. Like devs who want Kubernetes "just in case" the application explodes, some have lists of fifty criteria "just in case" they fall for the wrong person. The utopian vision seeks someone who checks all the boxes: tall, handsome, funny, ambitious, caring, rich, athletic, cultured, good cook, close to their family but not too much, spontaneous but stable, and so on. The constrained vision identifies the three or four criteria that are truly non-negotiable and accepts flexibility on the rest.

This obsession with the perfect list often comes from deep sincerity and fear of making the wrong choice. But like oversized software architectures, it creates more problems than it solves. By looking for the person who checks all the boxes, we miss out on imperfect but compatible people. By protecting ourselves from all imaginable risks, we end up never taking the leap.

Health and the Mirage of the Perfect Diet

The health domain doesn't escape this conflict of visions. The utopian vision is the perfect diet. Zero deviation, zero exceptions. No sugar, no fat, no alcohol, only organic and unprocessed foods. It's a seductive vision because it's simple and absolute. It promises results if you follow the rules to the letter.

The problem is that nobody lives in a perfect world. There are family meals, outings with friends, travel, stressful periods when willpower crumbles. The utopian vision doesn't tolerate these deviations. One misstep, and it's failure. Many abandon their diet after a week because they cracked once. They go from one extreme to another: from total restriction to complete abandonment.

The constrained vision adopts a different approach: the 80/20 balance. Eighty percent of the time, you eat healthily. Twenty percent of the time, you allow yourself pleasures. This approach recognizes that perfection is unsustainable in the long term. It integrates the constraints of real life: social events, cravings, fatigue. Paradoxically, this "imperfect" approach often produces better results than the quest for perfection, because it's sustainable over time.

It's the same logic as for sports training or software architecture. A system that functions at eighty percent of its potential but lasts over time is better than a system that's perfect on paper but collapses at the first unexpected event.

Conclusion

The utopian vision is a silent scourge. Everything looks good on paper, but we don't see the problems. Life never goes as planned.

But a large majority of people behave this way. It's innate, we have to deal with it. They won't change, they're incapable of it.

I also think it's a way of understanding the world. Life is difficult, and anyway, it's impossible to make a perfectly balanced choice. We simply try to do our best. And given the difficulty of making decisions, perhaps some prefer to simply ignore them and follow a path that seems perfect. It won't work, too bad, they couldn't have predicted it anyway.

This is what happens with relationships. A relationship is a risk. And sometimes, not venturing further because the person doesn't have such and such criterion is a choice. I'm not part of this vision, so it's hard to know exactly, but maybe that's how they think. And it has plenty of advantages: less stress, less hassle. We go with the flow.

But me, I prefer to see the world as it is. Imperfect, constrained, full of compromises. It's less comfortable, but it's more honest. It's also more challenging, and that's part of the beauty of life.