테슬러의 법칙

Tesler's Law

복잡성은 없앨 수 없고 시스템과 사용자 사이에서 옮길 수만 있다는 법칙. 시스템이 떠안지 않으면 사용자가 떠안습니다.

다른 이름: Law of Conservation of Complexity
···
html
<div class="stage">
  <div class="pane"><div class="tag">A</div>
    <div class="rows">
      <div class="row"></div><div class="row"></div><div class="row"></div>
      <div class="row"></div><div class="row"></div><div class="row"></div>
    </div>
    <div class="meter"><span class="fill user" id="ma"></span></div>
  </div>
  <div class="pane"><div class="tag">B</div>
    <div class="rows">
      <div class="row"></div><div class="row"></div>
      <div class="row sys"></div><div class="row sys"></div><div class="row sys"></div><div class="row sys"></div>
    </div>
    <div class="meter"><span class="fill user" id="mb"></span><span class="fill sysfill" id="mb2"></span></div>
  </div>
</div>
css
.stage{width:94%;height:88%;display:flex;gap:6%}
.pane{position:relative;flex:1;border-radius:14px;border:1px solid var(--line);background:var(--surface);padding:24px 10px 14px;display:flex;flex-direction:column;gap:8px}
.tag{position:absolute;top:8px;left:10px;font:700 11px/1 monospace;color:var(--muted)}
.rows{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:6px;align-content:center}
.row{height:16px;border-radius:5px;border:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}
.row.sys{border-color:var(--line);background:var(--line)}
.meter{height:8px;border-radius:4px;background:var(--line);overflow:hidden;display:flex}
.fill{height:100%}
.user{background:var(--accent)}
.sysfill{background:var(--muted)}
#ma{animation:wa 2.6s ease-in-out infinite}
#mb{animation:wb 2.6s ease-in-out infinite}
#mb2{animation:wb2 2.6s ease-in-out infinite}
@keyframes wa{0%{width:0}60%,100%{width:100%}}
@keyframes wb{0%{width:0}60%,100%{width:33%}}
@keyframes wb2{0%{width:0}60%,100%{width:67%}}

1980년대 제록스 PARC와 애플에서 일한 컴퓨터과학자 래리 테슬러(Larry Tesler)가 제시했습니다. "모드 없는(modeless)" 인터페이스를 주창한 것으로도 유명한데, 이 법칙의 핵심도 같은 맥락입니다 — 애플리케이션에는 지울 수 없는 최소한의 복잡성이 있고, 그걸 누가 감당하느냐만 다릅니다.

시스템이 시간대·날짜 형식을 자동으로 감지하면 사용자는 아무것도 몰라도 되지만, 그 감지 로직은 개발자가 어딘가에서 반드시 구현해야 합니다. 반대로 시스템이 손을 놓으면 사용자가 드롭다운에서 직접 골라야 합니다. 복잡성이 사라진 게 아니라 자리를 옮긴 것입니다.

데모의 A는 사용자가 여섯 항목을 직접 채우고, B는 같은 여섯 항목 중 넷을 시스템이 감지해 사용자에게는 둘만 남습니다. 아래 막대에서 칠해진 길이(사용자 몫)는 다르지만 전체 길이(총 복잡성)는 같습니다.

언제 쓰나

설정 화면을 만들 때 "이 복잡성을 누가 감당할지" 의식적으로 고르세요. 개발이 번거로워서 사용자에게 떠넘기고 있는 건 아닌지 점검이 필요합니다.