
명작은 늘 소수다, 스터전의 법칙(Sturgeon’s Law)
새 서비스를 만들 때 처음부터 모든 기능을 다 갖춘 완벽한 시스템을 그리고 싶어지는 순간이 있습니다. 회원 관리, 결제, 추천, 통계까지 한 번에 설계해 한 번에 완성하면 훨씬 효율적일 것 같기 때문입니다. 그런데 이렇게 크게 시작한 프로젝트일수록 끝내 제대로 돌아가지 않는 경우가 많습니다. 이 현상을 한 문장으로 정리한 경험칙이 바로 ‘갈의 법칙(Gall’s Law)’입니다.
갈의 법칙이란 쉽게 말해 ‘잘 돌아가는 복잡한 시스템은 언제나 잘 돌아가던 단순한 시스템에서 자라난 것’이라는 원칙을 의미합니다. 미국의 소아과 의사이자 작가 존 갈(John Gall)이 시스템이 실패하는 방식을 연구하며 남긴 말로, 오늘날 소프트웨어 설계와 제품 개발에서 자주 인용됩니다.
본 자료에서는 갈의 법칙이 나온 배경부터 법칙의 세 문장에 담긴 뜻, 실제 사례, 그리고 현장에서 이 법칙을 지키는 방법까지 차례로 살펴보겠습니다.

단순함에서 복잡함으로 자라는 시스템의 원리
소아과 의사가 쓴 시스템 이야기

존 갈은 미국 미시간주 앤아버에서 40년 넘게 아이들을 진료한 소아과 의사였고, 미시간대학교에서 소아과 임상 부교수로도 일했습니다. 본업은 아이들의 발달과 행동 문제였지만, 그는 따로 시간을 들여 크고 작은 시스템이 왜 기대대로 움직이지 않는지 사례를 모았습니다.
- 첫 책(General Systemantics): 1975년 그는 그동안 모은 실패 사례와 교훈을 「일반 시스템학」이라는 책으로 펴냈습니다.
- 재출간(Systemantics): 2년 뒤인 1977년 「시스템학: 시스템은 어떻게 돌아가고 특히 어떻게 실패하는가」라는 제목으로 다시 나와 널리 읽혔습니다.
- 개정판(The Systems Bible): 1986년 두 배 가까이 늘어난 2판이 나왔고, 2002년에는 3판이 「시스템 바이블」이라는 제목으로 나왔습니다.
이 책은 머피의 법칙이나 피터의 원리처럼 짧고 재치 있는 문장으로 시스템의 속성을 풀어냈습니다. 그중 가장 유명해진 문장이 훗날 사람들 사이에서 ‘갈의 법칙’이라 불리게 되었습니다. 정작 책 속에서는 그런 이름이 붙어 있지 않았습니다.
법칙을 이루는 세 문장

갈의 법칙은 보통 하나로 묶어 말하지만, 원문은 세 문장이 이어진 구조입니다.
(1) 성공한 복잡계는 단순한 출발점을 가진다
잘 돌아가는 복잡한 시스템을 거슬러 올라가 보면 언제나 잘 돌아가던 단순한 시스템이 나옵니다. 복잡함은 처음부터 설계된 것이 아니라 작동하는 상태를 유지하며 조금씩 쌓인 결과라는 뜻입니다.
(2) 처음부터 복잡하게 만든 시스템은 고쳐 쓸 수도 없다
백지에서 한꺼번에 설계한 복잡한 시스템은 돌아가지 않으며, 덧대고 땜질해도 살려 낼 수 없다고 갈은 단언했습니다. 부분들이 서로 어떻게 얽혀 움직이는지 미리 다 알 수 없기 때문입니다. 종이 위에서는 완벽해 보이던 설계도 실제로 맞물려 돌아가기 시작하면 예상하지 못한 충돌이 곳곳에서 한꺼번에 터져 나옵니다.
(3) 다시 단순한 것부터 시작해야 한다
그렇다면 해법은 하나입니다. 작동하는 단순한 시스템을 새로 세우고, 거기서부터 다시 키워 가는 것입니다. 이미 들인 노력이 아깝더라도 돌아가지 않는 거대한 설계를 붙잡고 있기보다 작게 다시 시작하는 편이 결국 더 빠르다는 뜻입니다.
다만 갈은 이 문장 앞에 단순한 시스템도 돌아갈 수도, 돌아가지 않을 수도 있다는 단서를 붙였습니다. 단순하다고 성공이 보장되는 것은 아니며, 성공한 복잡계의 출발점이 단순했다는 점을 말한 것입니다.
법칙을 보여 주는 사례

갈의 법칙은 시스템 설계자들이 인용하면서 정보기술 분야로 퍼졌습니다. 1981년 시스템 설계자 켄 오어(Ken Orr)가 일찍이 이 문장을 소개했고, 1991년부터는 객체 지향 설계의 대가 그래디 부치(Grady Booch)가 여러 책에서 거듭 인용했습니다.
작게 시작해 자란 월드 와이드 웹
월드 와이드 웹은 문서와 문서를 링크로 잇는 아주 단순한 구조에서 출발했습니다. 처음에는 연구자들이 자료를 나누기 위한 도구였지만, 작동하는 뼈대 위에 그림, 검색, 쇼핑, 동영상이 차례로 더해지며 지금의 거대한 시스템이 되었습니다. 처음부터 모든 쓰임새를 정해 두지 않았기에 오히려 새로운 기능이 자연스럽게 자리 잡을 수 있었습니다.
처음부터 거대하게 설계한 표준
반대로 처음부터 모든 경우를 담으려 한 복잡한 기술 명세는 현장에서 자리 잡지 못한 경우가 많습니다. 서로 다른 프로그램을 잇는 분산 객체 표준 코바(CORBA)는 방대한 명세로 시작했다가 널리 쓰이지 못한 사례로 자주 거론됩니다.
현장에서 갈의 법칙을 지키는 법

갈의 법칙은 짧게 만들고 자주 고치는 애자일 개발(Agile Software Development)과 잘 맞습니다. 특히 익스트림 프로그래밍(Extreme Programming)은 가장 단순한 것부터 먼저 만들고 기능은 나중에 더하라고 권합니다.
(1) 가장 작은 완성품부터 만든다
기능이 적더라도 처음부터 끝까지 실제로 돌아가는 최소한의 제품을 먼저 내놓습니다. 사용자의 반응을 보며 필요한 것만 더해 가면 쓸모없는 설계에 드는 노력을 줄일 수 있습니다.
(2) 늘 작동하는 상태를 지킨다
기능을 더할 때마다 시스템이 여전히 제대로 돌아가는지 확인합니다. 한 번에 크게 바꾸기보다 작게 바꾸고 바로 시험하는 편이 문제의 원인을 찾기도 쉽습니다.
(3) 빨리 만든 거대함을 경계한다
요즘은 인공지능 코딩 도구로 큰 시스템을 순식간에 만들 수 있게 되었지만, 빨리 조립했다고 해서 갈이 말한 실패를 피할 수 있는 것은 아닙니다. 속도가 빨라질수록 작게 시작하는 원칙이 더 중요해집니다.
갈의 법칙은 복잡한 시스템을 만들지 말라는 말이 아니라, 복잡함에 이르는 길이 따로 있다는 조언입니다. 크고 멋진 설계도보다 오늘 제대로 돌아가는 작은 시스템 하나가 더 먼 곳까지 데려다줍니다.
작게 만들어 제대로 돌아가게 한 뒤 한 걸음씩 키워 가는 일, 그것이 튼튼한 시스템의 첫걸음입니다.





