Bigger things are usually more complex

Author's image
Tamás Sallai
3 mins
Photo by Aaron Burden on Unsplash

I started to notice that when something is bigger then it comes with a lot of extra complexity that is not apparent when you're only looking at it when it's small.

I like to play with electronics. I can connect some pins, add a sensor to a microcontroller, write some code and so on. Because of voltage is small I don't need to think about a lot of things here: the worst I can do is fry the electronics.

But scale it up to household sizes and things get more complex: suddenly it's important to use cables with the right diameter, add circuit breakers, and generally be way more careful than with the microcontroller. These are things that if you only work on the small scale you would never anticipate.

Go up to the industrial scale and things get even more complex: repairing a cable, for example, requires special equipment, a skilled technician, and a lot of time.

All these jumps in scale also makes mistakes more costly: I might fry a microcontroller, but I wouldn't start a fire. On the other end of the scale, a poorly repaired cable might induce a blackout.

I keep seeing this pattern in a lot of places.

Updating a production environment has the same characteristics. When you have a couple of users only, it's an easy thing: do some sanity checks, then push the deploy button. But increase the number of users and the same thing becomes a complex and risky endeavor: thorough testing in advance, maintenance windows, rollback plans. The action is the same: push the button. But because you are updating to a bigger audience the effort needed is also bigger.

When you are an outsider to a profession it's easy to fall into the fallacy of "look how easy it is".

Someone implemented an app in a weekend that a company took months? That's a PoC that does not need to handle a lot of things: no observability, regulatory requirements, scaling, deployment. The app is the same, but all these things are missing from it.

This also explains why developing software slows down over time: adding a new feature to a small system is easier than implementing the same thing in a big one.

There is a visibility problem coming with this: when the action is properly planned, the complex thing looks easy. Deploying to production is a click of a button. Connecting the electricity is just putting the connections together. From the outside, it seems like people are doing nothing for a long time, then doing something simple. But if they don't prepare sufficiently then there will be more costly mistakes.

March 24, 2025

Free PDF guide

Sign up to our newsletter and download the "Foreign key constraints in DynamoDB" guide.