Made with 🧠 and πŸ«€ by Youssef Bouksim

Back to library
βš–οΈ

Tesler's Law

Every system has an inherent amount of complexity that cannot be reduced. It can only be moved β€” from the user to the system, or from the system to the user.

5 min readUX Β· Product Β· AI

In the 1980s, Larry Tesler β€” the computer scientist who invented cut, copy, and paste β€” formulated an observation he called the Law of Conservation of Complexity: every application must have an irreducible amount of complexity. The question is not whether that complexity exists, but where it lives. Either the system handles it or the user handles it. There is no third option where complexity simply disappears.

Scheduling an email to arrive at the right time in someone's time zone is genuinely complex. The complexity doesn't go away if you ask the user to select from a dropdown of 40 time zones β€” it has simply been moved from the system to the user. The system was easier to build. The user's experience got harder. Tesler's Law names this tradeoff explicitly and forces a choice: whose job is it to deal with this complexity?

✦ Three things to know
βœ“
Complexity is conserved, not reduced. Simplifying a user interface almost always means moving complexity into the system β€” detecting, inferring, pre-filling, calculating. The work doesn't disappear. It moves. Good design moves it to wherever it is easiest to handle: usually the machine.
βœ“
Some complexity belongs to the user. Not all complexity should be hidden. Users who need precise control β€” developers setting API parameters, designers choosing exact typography β€” should be given access to that complexity. Hiding it from them is just as damaging as exposing it to users who don't need it.
βœ“
AI shifts where the boundary sits. For most of computing history, certain complexities were too expensive or imprecise for systems to handle β€” so they were delegated to users by default. AI has moved that boundary dramatically. Systems can now detect intent, auto-complete addresses, infer time zones, parse natural language, and generate structured output from vague instructions. Complexity that was once unavoidably user-facing is now routinely system-facing.

The law of conservation of complexity

Tesler spent his career at Xerox PARC, Apple, Amazon, and Yahoo. At PARC he helped invent the modeless text editor β€” removing the unnecessary complexity of switching between β€œinsert mode” and β€œcommand mode” that plagued earlier systems. At Apple he worked on Lisa and later consulted on the Macintosh, where the principle was applied systematically: the computer should do as much work as possible so the person using it doesn't have to.

His law has a specific and non-obvious implication: making an interface simpler for the user always makes the system more complex. There is no free lunch. When Google Maps auto-detects your location instead of asking you to type it, the interface got simpler. The system behind it β€” GPS triangulation, cell tower inference, IP geolocation β€” got vastly more complex. The complexity was conserved. It just moved.

β€œEvery application must have an inherent amount of irreducible complexity. The question is only who will have to deal with it.”
β€” Larry Tesler

Recurring events β€” configuring a rule vs picking a pattern

Setting a recurring calendar event requires the system to store a repeating schedule rule. That rule has real complexity: how often does the event repeat, on which days, and when does it stop? Every calendar application has to resolve these questions β€” the only variable is who resolves them.

The traditional approach exposes the full rule to the user: a frequency dropdown, an interval counter, a grid of day checkboxes, and an end condition picker. The alternative identifies the patterns that cover 95% of all recurring events and presents them as simple choices β€” the system handles the rule generation invisibly. The edge case user can still access β€œCustom...” for full control.

Before β€” full rule exposed to user
9:41
New EventAdd
Title
Weekly team standup
Date
Mon 14 Apr
Time
9:00 AM
Repeat settings
Frequency
Weekly
Every
1
week(s)
Repeat on
S
M
T
W
T
F
S
End condition
On a specific date
2025-12-31
Exception dates
e.g. 2025-05-01

Frequency, interval, days, end condition, exceptions β€” the full scheduling rule exposed to a user who just wants a weekly standup.

After β€” pattern chips, rule generated invisibly
9:41
New EventAdd
Title
Weekly team standup
Date
Mon 14 Apr
Time
9:00 AM
Repeats
Repeats every Monday until cancelled
Location
Add a location or link
Guests
Add guests by email

Tap a pattern β€” done. Six options cover 95% of cases. The rule is generated invisibly. β€œCustom...” is there for the rest.

The recurrence rule still exists in the good version β€” it is generated and stored correctly behind the scenes. The user never has to think in terms of frequency intervals or day bitmasks. They think in patterns: β€œWeekly.” The system translates. This is Tesler's Law working correctly: complexity moved from user to system.


Delivery address β€” 6 fields or 1

A delivery address contains several distinct pieces of structured information: a street number, a street name, an apartment or unit number, a city, a postcode, and a country. Presenting these as six separate fields delegates the parsing task to the user β€” they must mentally segment their address and enter each part in the correct box.

A smart address autocomplete field inverts this completely. The user types what they know β€” the beginning of their address β€” and the system uses a geocoding API to complete, parse, and fill all the sub-fields automatically. The same complexity of structuring an address is now handled by the system, which is better equipped for it than any user typing on a phone keyboard.

Before β€” 6 fields to fill manually
9:41
Delivery address
Enter your address
Street address
Apt / Suite / Floor
City
State / Province
Postcode / ZIP
Country
United States

6 fields, all manual. The user must parse and segment their own address β€” work the system could do instead.

After β€” 1 smart input, auto-filled
9:41
Delivery address
Start typing your address
Address

Type a few letters β€” system fills the rest. The parsing complexity moves from the user to the geocoding system. Tap a suggestion to see.

The apartment field remains manual in the good version β€” this is Tesler's Law applied with precision. The geocoding API cannot know which unit within a building the user lives in; that information exists only with the user. So that specific complexity is correctly left with them. Everything that the system can determine more reliably β€” the structured street, city, state, postcode, country β€” is handled automatically.


Writing AI prompts β€” moving expertise from user to system

Early AI tools required users to write detailed, technically precise prompts to get useful output. Effective prompting β€” specifying tone, length, format, audience, constraints, and output structure β€” is genuinely complex. That complexity doesn't disappear when you give someone a blank text box. It lands on the user, who must either learn prompt engineering or accept worse results.

A well-designed AI writing interface moves that complexity into the system. Instead of asking users to articulate the precise parameters of what they want, it offers structured inputs β€” goal, tone, length β€” that translate into optimised prompts behind the scenes. The same quality of output is achievable with far less expertise from the user, because the interface has absorbed the prompt-engineering complexity.

Before β€” raw prompt, user carries complexity
9:41
AI Writing Tool
System prompt
You are an expert marketing copywriter who writes concise, persuasive copy for SaaS products targeting B2B decision-makers. Use an authoritative but approachable tone.
User prompt
Write a LinkedIn post announcing our new AI feature. Focus on time savings. Under 150 words. End with a question.
Parameters
Temperature 0.7
Max tokens 256
Top P 1.0
Freq. penalty 0.0
0 / 1024 tokens

System prompt + user prompt + 4 parameters. To get good output you need to understand tone, prompt structure, temperature, and token limits.

After β€” goal-driven, system carries complexity
9:41
AI Writing Tool
What are you writing?
LinkedIn postEmailAd copyBlog intro
Tone
ProfessionalCasualBoldFriendly
What's it about?
New AI feature that saves time on reporting

Choose goal, tone, describe it simply. The system translates your choices into an optimised prompt. Tap Generate.

The interface in the good example is not simpler because it does less. It is simpler because the system does more. Behind the chips and the single text area, the interface assembles a complete, well-structured system prompt, sets appropriate model parameters for the selected format, and manages the output length automatically. The user's job is to describe their goal. The system's job is everything else.


Applying this to your work

The most useful question Tesler's Law asks is: for every piece of complexity currently on screen, who is better positioned to handle it β€” the user or the system? If the system can detect it, infer it, calculate it, or pre-fill it, then asking the user to do it manually is not respecting their time. It is offloading engineering work onto people who came to accomplish something else.

The answer isn't always β€œhide it from the user.” Developers setting API endpoints, designers choosing exact colour values, and researchers configuring experimental parameters all need access to complexity that most users should never see. Tesler's Law doesn't demand simplicity across the board β€” it demands that complexity be positioned correctly for the people who will encounter it.

βœ“ Apply it like this
β†’Auto-detect what the system already knows β€” time zone, location, language, device type β€” and use it as the default. Expose "Change" for edge cases.
β†’Replace multi-field forms with smart single inputs wherever an API can parse and structure the data β€” addresses, names, phone numbers.
β†’Use structured UI (chips, toggles, presets) to translate user goals into system configuration β€” the user picks what they want, the system decides how to achieve it.
β†’Reserve access to raw complexity (parameters, system prompts, raw fields) for power users who genuinely need it β€” behind an "Advanced" disclosure, not on the default screen.
βœ— Common mistakes
β†’Asking users to select time zones, country codes, currency formats, or measurement units when the system can detect or infer these automatically.
β†’Breaking addresses into 6 separate fields when a geocoding autocomplete can parse a single input into structured data more accurately.
β†’Exposing model parameters, system prompts, or format specifications to users who came to accomplish a creative or business goal β€” not to operate a machine.
β†’Hiding all complexity from power users in the name of simplicity β€” developers and advanced users need access to the underlying system and will leave if they can't get it.

Tesler, L. (1984). The Law of Conservation of Complexity. Formulated at Xerox PARC. Tesler later worked at Apple, Amazon, and Yahoo, where he continued applying this principle to consumer product design.