The law of conservation of complexity states that there's a minimum amount of work you've got to deal with if you want a specific result. You can always pile on the complexity, but there's a point where you can't simplify any further without compromising the outcome.
If you have a system with three components, each optimized to their simplest state, reducing the complexity of one component won't diminish the overall complexity required to achieve the same performance. If you wish to keep the system delivering the same quality of output, simplifying one part will necessarily mean that you will have to offload complexity and work on another part of the system.
Let me not confuse you more and offer some examples.
Let's consider a physical product, such as a coffee machine. If the goal is to allow the user to brew a perfect cup of coffee, there are different ways to design the machine.
If the machine is designed with many controls and settings (grind size, water temperature, brew time, etc.), the complexity is passed on to the user, who needs to learn and adjust these settings to make the perfect coffee. This may be ideal for coffee enthusiasts who enjoy the process and want full control over the brewing process.
However, if the machine is designed with a simple one-button operation that automatically adjusts all settings, the complexity is hidden from the user and encapsulated within the machine's design and engineering. This is more suitable for users who value simplicity and convenience over customization.
In any case, the process involved in making the coffee, i.e., reasoning through all the variables involved in producing a cup, remains constant. What changes is if the user is processing those variables or if the machine is doing it for the user.
Here's another example.
Imagine you're running an online store selling bespoke clothing. You've got a separate tailoring process that needs to be initiated once an order is placed, and you'd like to give real-time updates to your customers about the status of their orders. You could handle this at the back end, getting your system to talk to the tailoring unit every time an order comes through and then displaying it on the browser. This could be a clever solution because you could queue up updates for frequently-ordered items.
Alternatively, you could have the customer's browser fetch the status directly from the tailoring unit's system, with an API. This could be a good move because it lightens the load on your system.
What's happening here? You're easing up on the front end by ramping up the back end, or you're simplifying the back end at the cost of the front end. Either way, you can't get out of the need to check on the order status without changing what you're offering your customers.
How about yet another example?
In a restaurant, the ordering process can be designed in different ways. If customers are expected to place their order at the counter and pick up their food when it's ready, the complexity of coordinating the order and its readiness is placed on the customer. They have to listen for their number, make sure they're ready to pick up their food, and so on.
(Think The Rameshwaram Cafe in Bengaluru or Baba Nagpal's Chholey Bhature in Delhi.)
Alternatively, the restaurant could employ waitstaff to take orders and bring food to the tables. In this case, the complexity is shouldered by the restaurant staff, who must coordinate between the kitchen and the customers. This tends to be a more enjoyable experience for the customers, but it also requires more resources from the restaurant.
In all these examples, the complexity doesn't disappear; it is simply shifted from one part of the system (the user) to another (the business or product). It’s a decision that needs to be made based on the desired user experience and the available resources.
It's a bit like how energy never disappears, it just changes form. The minimum amount of complexity you need to get what you want can't be reduced, it can only be moved around.
Now, here's something interesting I realized once I understood this law.
The law of conservation of complexity applies quite well to the distinction between text and video.
Consider this: when you're reading a piece of text, you're the one putting in the work. You have to understand the words, interpret the sentences, visualize the concepts, and piece together the information into a coherent whole.
It's like you're being given the raw ingredients for a meal and you have to cook it yourself. The complexity of the process rests largely on your shoulders as a reader. The writer provides the fundamental components, but it's up to you to do the heavy lifting of comprehension and visualization.
In a video, the situation is somewhat flipped. The creator takes on a significant portion of the complexity. They present the information in a visually digestible format, often with supporting graphics, animations, and voice-over explanations.
It's more like being served a prepared meal, where the cook has done most of the work for you. The viewer's task is simplified to consuming the content and understanding it, with much less need for extrapolation or interpretation. If you don't agree immediately with this thesis, here's an observation framed as a question that might change your mind:
How many times have you read a book or an essay on your laptop while having lunch?
How many times have you watched a YouTube video?
Video is vastly easier to process because a lot of the processing involved in understanding has been done by the creator. This is especially true of creators who create custom animations to visualize concepts. Naturally, it is harder to create; the complexity is transferred to the creator. Whereas, with books, even if the author has explained something in rich detail, it is still usually limited to a textual representation which you then have to unfold in your head. It's easier to put words on paper than it is to create an animated video that explains the same concepts in visual and audio form.
This is also why reading remains the best sign of someone's commitment to learning while videos showcase someone's commitment to creating.
As a consumer, you can simply turn on a video and get busy doing 10 things. You can't do that with text. This is in some part due to the form of engagement; video has audio, so you can still process a part of the content even while washing dishes; this isn't the case with reading.
But mostly, it has to do with the fact that reading transfers a lot of the complexity and work to the readers. There's a level of involvement with the content when it comes to reading that isn't there when it comes to watching videos.
Now that you understand what the law means, here are some ways you can use it.
Understanding the law of conservation of complexity can help you improve your processes and system design.
You start by identifying where complexity currently lies. This involves understanding each component of your system, who interacts with it, and what effort is required for that interaction.
Then, you need to consider where the complexity should be and can be effectively placed. This depends largely on the nature of your system and the needs of your users. For example, if your system is customer-facing and your customers value simplicity, then it might make sense to absorb more of the complexity within your system to make it easier for your customers to use.
You're essentially redistributing complexity strategically by redesigning your process or system to shift the complexity to where it is most manageable and beneficial. This might involve automating certain tasks, simplifying user interfaces, or improving documentation and training.
You can also use the law of conservation of complexity to think about what value a business creates for the world, from first principles.
At its core, a business often creates value by taking on a portion of the complexity that would otherwise be handled by the customer or user. In other words, a business simplifies certain tasks, processes, or services for the customer, and in doing so, takes on the complexity itself. This reduction in complexity for the customer is often a key aspect of the value proposition of a business.
Let's take a ride-hailing app like Uber as an example. Before such apps existed, hiring a taxi could be quite complex for the customer. They would have to find a taxi stand or hail a taxi on the street, negotiate the fare, and have cash on hand to pay.
With Uber, this process is significantly simplified: enter your location and destination in the app, get a fare estimate upfront, and pay automatically through the app. The complexity hasn't disappeared; it's been transferred from the customer to the Uber system, which handles the complexities of driver location tracking, fare calculation, cashless payment processing, and more.
From a first principles perspective, this is what Uber and similar businesses do: they reduce the complexity of a task for the user (getting a ride) by taking on that complexity themselves (through technology and business processes). This is the value they create.
Before the advent of platforms like Zomato and Swiggy, if you wanted food from a restaurant, you had to physically go there, wait for a table, order, wait for your food, eat, and then pay. Alternatively, if the restaurant offered delivery, you might have to call, place your order, and have the exact change ready for when the delivery person arrived. This process was often time-consuming and could be quite complex, especially if you wanted food from a restaurant that was far away or didn't offer delivery.
Zomato and Swiggy simplify this process by acting as a bridge between customers and restaurants. On these platforms, customers can browse menus from multiple restaurants, read reviews, place an order, and pay—all in one place. The complexity of coordinating with multiple restaurants, managing delivery logistics, handling payments, and dealing with customer service issues is absorbed by these platforms.
From a customer's perspective, the process of ordering food becomes significantly simpler. They don't need to worry about whether a restaurant delivers to their location, how long the delivery might take, or if their payment method will be accepted. All they need to do is choose their food and place an order.
From a first principles perspective, these businesses create value by taking on the complexity of food delivery logistics. They deal with the difficult tasks of coordinating with multiple restaurants, managing a fleet of delivery partners, handling payments, and providing customer support. By doing so, they simplify the customer's experience of ordering food, making it more convenient and efficient.
This way of thinking can be applied to virtually any business.
A restaurant takes on the complexity of cooking so you can simply enjoy the meal.
A clothing retailer takes on the complexity of manufacturing and distribution so you can easily buy a wide range of clothes.
A software company takes on the complexity of coding and maintenance so you can use a software product to simplify your work.
So, when considering the value a business creates, one approach is to identify the complexities that the business is removing or reducing for the customer. This will offer you an insight into the fundamental value the business provides and how you can enhance that value.
Sometimes, people make the mistake of treating the total amount of complexity needed to perform a task as something that can be reduced, but they then fall prey to Ashby's Law of Requisite Variety.
The result is that you get powdered milk in tea and coffee machines, which is not even close to real milk in terms of flavour and quality. But using real milk would involve a lot more processing as it tends to go bad quickly, unlike milk powder. The innards of the machine would need regular and diligent cleaning and the milk would need to be in a separate container that could be detached from the vending machine and refrigerated after use.
Basically, tea and coffee machines trade process complexity for delivering a more convenient but markedly inferior product.
So, the point is that if you do not respect the law of conservation of complexity and treat complexity as reducible, you will naturally compromise on the outcomes.
I will let you think about what are some other places in life where something similar happens.
(Hint: Scale and its resultant minimalism is one big example, where requisite local complexity is traded off for the benefit of scale.)