The Law
Every application has an inherent amount of complexity that cannot be removed. The only choice is where it lives: inside the system where engineers and designers wrestle with it, or out in the open where users must.
Every system has a complexity that can’t be removed — only moved.
Every system carries an irreducible amount of complexity. The only question is who absorbs it — the system or the user. Good design quietly takes on as much as it can.
Larry Tesler was an American computer scientist at Xerox PARC and later Apple, where he rose to chief scientist. He invented cut, copy, and paste, and spent his career crusading against modes — his license plate read NO MODES.
He formulated the law of conservation of complexity around 1984 while arguing that engineers, who work with a system once, should absorb complexity rather than pushing it onto users, who face it every day.
Every application has an irreducible amount of complexity. The only question is who deals with it — the system and its builders, or every user, every time.
Every application has an inherent amount of complexity that cannot be removed. The only choice is where it lives: inside the system where engineers and designers wrestle with it, or out in the open where users must.
Some complexity is essential to the problem — booking a flight really does involve dates, seats, and fares. Accidental complexity is the extra friction we add on top. You can delete the accidental; you can only relocate the inherent.
Every design decision pushes the burden one way or the other. A blank text field is simple to build but hard to use; a guided flow is harder to build but effortless to complete. The work doesn’t go away — someone pays for it.
Smart defaults, autofill, format detection, and inference let the product do the heavy lifting. Every field you can pre-fill or compute is a decision the user never has to make — the burden absorbed where it belongs.
Strip out essential complexity and it resurfaces as confusion, errors, or support tickets. A flow that hides necessary steps doesn’t remove the work — it just leaves the user to rediscover it the hard way.
When complexity must reach the user, reveal it in layers. Show the common path first and tuck advanced options behind “More.” People get a simple surface without losing the depth they occasionally need.
AI is the most powerful complexity-absorber yet — and the most tempting place to hide complexity the user still needs to see.
A model can take a messy, ambiguous request and resolve the steps itself — the ultimate shift of complexity from user to system. “Plan my trip” replaces a dozen forms. The burden moves further toward the machine than ever before.
When the model absorbs everything, the necessary parts can vanish too — the assumptions, trade-offs, and edge cases the user actually needed to weigh. Conservation still holds: surface what matters, with sources, controls, and an undo.