First, the bad news: IT 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.

IT complexity stack overflow
Technology stacks do overflow!

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 that cannot be removed. Let's look at an example.

IT complexity coffee makers

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. In this case, 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, complexity is constant.

One-Click Experiences

There are several examples of companies that have used apps to move or hide complexity:

  • Amazon: Logistics is not your concern.
  • AirBnB: Book and show up.
  • UberIt’s up to someone else to get you where you need to go.
  • Netflix: You’re spared 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.


    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?

    IT complexity innovation
    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.

    And, 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 IT complexity for a long time.

    Traditional IT Complexity

    We’ve all been there when a problem shows up in a production system. Most of us have suffered through a project that wasn’t going to be delivered on time, wondering where to find 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?

    IT complexity traditional

    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. Devices often have slow processors and little memory. And, all the good developers are taken.

    IT complexity mobile

    Naturally, this all amounts to very unhappy users.


    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 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.

      IT complexity history

      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. 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 consider what can bring new value. And, how each of our companies will be different from every other company out there. That’s the only way we can all go further.

      IT complexity future

      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. 

      If you haven't done it already, a small step you can take in that direction is to start exploring low-code development platforms.

      By the way, do you have a story of how you let something go so you could focus on innovating? If so, I’d love to hear it. 

      Based on a talk with José Caldeira.