Complexity

Tesler's Law

Complexity must live somewhere

Key Insight

Every application has an inherent amount of complexity that cannot be removed or hidden—only transferred between the system and the user.

Key Points

  • Every application has an inherent amount of complexity that cannot be removed or hidden
  • Complexity can only be moved—from user to system or system to user
  • Good design absorbs complexity so the user doesn't have to
  • Over-simplification can make interfaces harder to use (too few controls)
  • The goal is not minimal UI—it's minimal user effort for the task
  • Engineers and designers must bear complexity so users don't
  • [FIGURE 9-1 — Email smart defaults] Shows: Modern email client auto-populating the "from" line and suggesting recipients. Teaches: System absorbs complexity of email configuration—users don't need to manage technical details. Reproduce as: Email compose screen with auto-filled fields.
  • [FIGURE 9-2 — Gmail Smart Compose] Shows: Gmail suggesting sentence completions as user types. Teaches: AI absorbs writing complexity by predicting intent—user can accept or ignore suggestions. Reproduce as: Text input with inline autocomplete suggestions.
  • [FIGURE 9-3 — Address inheritance] Shows: E-commerce checkout with option to copy shipping address to billing. Teaches: System absorbs the complexity of repeated data entry—one click instead of retyping. Reproduce as: Checkbox that copies form sections.
  • [FIGURE 9-4 — Apple Pay checkout] Shows: Apple Pay payment sheet with single-tap authentication. Teaches: Apple Pay absorbs massive payment complexity (card storage, security, address) into one interaction. Reproduce as: Simplified payment flow comparison.
  • [FIGURE 9-5 — Amazon Go store] Shows: Amazon Go physical store with no checkout lines. Teaches: System absorbs all checkout complexity through sensors and AI—customers just walk out. Reproduce as: Store diagram showing complexity absorbed by technology.
  • [FIGURE 9-6 — Mixpanel natural language] Shows: Mixpanel Spark feature accepting natural language queries for analytics. Teaches: Natural language interface absorbs query complexity—users describe what they want, system builds the query. Reproduce as: Natural language → structured query transformation.
  • [FIGURE 9-7 — Stripe progressive disclosure] Shows: Stripe.com menu showing additional options on hover. Teaches: Progressive disclosure hides complexity until needed—simple surface, full power underneath. Reproduce as: Menu with hover-reveal submenu.

Guidelines

  • Identify the inherent complexity of the task before simplifying the UI
  • Absorb complexity in code (smart defaults, auto-detection) rather than exposing it as options
  • Don't remove features users need in the name of simplicity—relocate them thoughtfully
  • Use progressive disclosure: simple surface, full power underneath
  • Test for over-simplification—if users can't complete tasks, you've removed too much
  • Accept that some screens need to be complex if the task itself is complex

Want to learn this interactively?

Experience hands-on experiments and test your understanding.

Start Learning
🔥

Practice this topic

Active recall — strengthens long-term retention

Related Topics