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