오컴의 면도날

Occam's Razor

같은 결과에 도달한다면 가정이 가장 적은 단순한 설명(또는 설계)을 골라야 한다는 원칙.

다른 이름: Law of parsimony
···
html
<div class="stage">
  <div class="pane"><div class="tag">A</div>
    <svg class="path" viewBox="0 0 100 60"><path d="M6,50 L26,14 L42,44 L60,10 L76,40 L92,10" /></svg>
    <div class="dot" id="da"></div>
    <div class="end" style="left:92%;top:10%"></div>
  </div>
  <div class="pane"><div class="tag">B</div>
    <svg class="path" viewBox="0 0 100 60"><path d="M6,50 L92,10" /></svg>
    <div class="dot" id="db"></div>
    <div class="end" style="left:92%;top:10%"></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);overflow:hidden}
.tag{position:absolute;top:8px;left:10px;font:700 11px/1 monospace;color:var(--muted);z-index:2}
.path{position:absolute;inset:0;width:100%;height:100%}
.path path{fill:none;stroke:var(--line);stroke-width:2;vector-effect:non-scaling-stroke}
.dot{position:absolute;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:50%;background:var(--accent)}
.end{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--accent-3);opacity:.85}
#da{offset-path:path('M6,50 L26,14 L42,44 L60,10 L76,40 L92,10');animation:moveA 3.2s linear infinite}
#db{offset-path:path('M6,50 L92,10');animation:moveB 1.1s linear infinite}
@keyframes moveA{0%{offset-distance:0%}90%,100%{offset-distance:100%}}
@keyframes moveB{0%{offset-distance:0%}90%,100%{offset-distance:100%}}

14세기 영국의 논리학자 오컴의 윌리엄(William of Ockham)이 남긴 "필요 이상으로 존재자를 늘리지 말라"는 원칙에서 이름을 땄습니다. 원래는 철학적 논증 도구였지만 엔지니어링·디자인에서 "복잡함을 위한 복잡함을 걷어내라"는 뜻으로 쓰입니다.

같은 문제를 5단계 마법사로도, 한 화면 폼으로도 풀 수 있다면 오컴의 면도날은 후자를 고르라고 말합니다. 복잡한 쪽이 더 정교해 보이는 착시가 있지만, 사용자에게 필요한 건 정교함이 아니라 결과입니다.

주의할 점은 "단순함"이 "기능 삭제"와 다르다는 것입니다 — 필요한 단계를 없애는 게 아니라 불필요한 단계를 없애는 것이 면도날의 대상입니다.

데모의 A는 목적지(체크)까지 다섯 번 꺾어 도달하고, B는 한 번에 직진합니다. 결과는 같습니다.

언제 쓰나

플로우에 단계를 추가하기 전에 "이 단계가 정말 필요한가, 아니면 익숙해서 넣은 관성인가"를 물어보세요.