The Law of Conservation of Complexity

Tiago Simões
OutSystems Engineering
5 min readMar 20, 2017
Technology stacks do overflow!

First, the bad news: complexity will not go away.

The good news?

There’s a rule to help you decide what part of it you should tame yourself, and what part you should let go. We’ll get to that soon.

Complexity is Constant

So, why won’t complexity go away? The “Law of Conservation of Complexity” clearly answers that question. Basically, everything has an inherent amount of complexity. Let’s look at an example.

In this image, there’s a classic coffee machine. It’s hard to operate. You need to grind the beans yourself, use the handles, set the pressure…

The one in the center appears simpler, but it’s hiding an electric motor. Complexity has just moved inside. Plus, we still have to clean it and tune it.

Then there’s Nespresso. One-click coffee. It looks dead simple, right? But, it isn’t. The capsule manufacturing process, which assures the coffee will always taste fresh, is where the complexity lurks.

As you can see, there is always an amount of complexity that is constant.

One-Click Experiences

There are several examples of companies that move or hide complexity: Amazon, hiding the complexity of logistics, AirBnB, making it easy to rent a place, Uber driving you everywhere, Netflix sparing us from the chaos of TV schedules

All have one thing in common. They might have several providers, but they own the last mile: the user interface. They make it simple by taking ownership of the complexity for us. Moreover, it’s been reduced almost to a single button. One-click buy. One-click rent. One-click car. One-click play.

Innovation

That’s the challenge for us. How can we create these experiences for our users? Better yet, how can we hide or reduce the complexity without getting major headaches?

Innovation is the opportunity to remove complexity from the world

Technical innovation is here to help us. Mobile allows us to reach anyone, anywhere, anytime. Technology connects and makes everything smarter. We wonder what will come next.

But that is our responsibility. We work in IT to create the future. It’s why we’re here.

“The best way to predict the future is to invent it.” — Alan Kay

If only all these opportunities didn’t come with their own complexity.

A Trip Down IT Complexity Memory Lane

Those of us in IT have been living with complexity for a long time.

Traditional IT Complexity

We’ve all been there when a problem shows up in a production system. We’ve all been stressed about a project that wasn’t going to be delivered on time, and where we had to put extra hours so it wouldn’t slide even more.

And, who hasn’t had to fight with too much legacy, too much data, too many configurations?

Mobile Complexity

Then, there’s mobile — the latest IT complexity wrinkle. We have iOS and Android, which means twice the cost. Moreover, App Store approval processes make Kafka books seem like light summer reading. Network connections can be bad or non-existing. Some devices have slow processors and little memory. And, all the good developers are taken.

Naturally, this all amounts to very unhappy users.

Approaches

As a result, the world has adopted several approaches in hopes of reigning in the complexities of mobile:

  • Responsive web: It doesn’t deliver the best user experience.
  • Native: This is too costly and a nightmare to maintain.
  • Frameworks: They become obsolete too quickly.
  • Low-code platforms: Can they really deliver on their promise?

As you can see, these exacerbate issues rather than resolving them.

The thing is… most people see us as masters of complexity. And, as strange as it might seem, we get attached to it. As a result, we fail to see the other option — that we can move it around.

Really Short History Lesson (I Promise)

Going back to the Law of Conservation of Complexity, there are examples in the history of computing where we’ve moved complexity around.

For example, think about the jump from Assembly to C; complexity moved to the compiler. Consider how we went from unmanaged languages to garbage collection: complexity moved to the runtime. And let’s not forget the switch from command line to graphical user interfaces, moving complexity away from the users to operating systems and GPUS.

Then there’s the evolution from waterfall to agile, distributing complexity over time. Plus the shift from the complexity of managing hardware to cloud providers.

Every time we took these steps, we were skeptical and afraid because we felt we were losing control. But they allowed us to make faster and bolder journeys into the future.

Our Experience

At OutSystems, we face these challenges all the time. Should our low-code platform work on proprietary cloud servers or should we partner with Amazon and Microsoft? Should we create a JavaScript framework or should we just use React?

Many of us wanted to build everything on our own. Had we done so, we would not have been able to focus on what’s important for our users. They want to build new apps fast and they want to be able to change them easily, no matter the size. So we had to fight our inclination to do everything in-house.

So, that might just be the secret.

Deliver the Future

To summarize, we spend more time fighting with technology than we should. Instead, it’s the business challenges we want to tackle that should be our focus, with the goal of removing complexity from the world.

So, it’s important to find out what can bring new value. How each of our companies will be different from every other company out there. That’s the only way we can all go further.

The 1 Simple Rule

As promised, here’s the simple rule for deciding how to deal with complexity. Focus on where you can innovate. As for everything else? Just let it go.

Based on a talk with José Caldeira.

Originally published at www.outsystems.com on March 20, 2017.

--

--