단순함

단순함과 그 조건

단순함은 어떤 체계를 구성할 때 제일 중요시해야 할 것 중의 하나입니다. 단순함은 곧 효율성으로 이어지기 때문입니다.

단순함의 조건으로는 체계의 최소화, 구성 요소 간 의존성의 최소화, 규칙의 최소화, 그리고 규칙의 일관화 등을 생각할 수 있습니다.

체계의 최소화

체계의 최소화는 단순함의 중요한 조건 중 하나입니다. 여기서 체계의 최소화는 체계 자체의 최소화를 뜻하기도 하지만, 외부에 보여지는 체계의 최소화를 뜻하기도 합니다. 즉 내부적으로는 거대하고 복잡한 체계일지라도, 외부에 보여지는 체계가 작고 단순하다면 그 체계는 단순하다고 말할 수 있습니다.

구성 요소 간 의존성의 최소화

한 체계를 구성하는 구성 요소들 간의 의존성을 최소화하는 것도 단순함을 만드는 데 있어서 상당히 중요합니다. 따로 따로 놀던 어떤 것에서 중복을 없애고 기능에 따라 묶게 되면, 필연적으로 그 구성 요소들 간에는 의존성이 발생하게 됩니다. 그리고 때론 그런 의존성이 따로 따로 놀던 체계보다 오히려 더 복잡함을 만들곤 합니다. 즉 의존성은 보이지 않는 복잡함입니다.

규칙의 최소화

규칙이 단순해지려면 규칙을 최소화해야 합니다. 바둑은 규칙이 적은 편입니다. 돌을 놓을 수 있는 19*19개의 지점이 있고, 거기에 돌이 없으면 새로 돌을 놓을 수 있습니다. 상대의 돌을 따낼 수 있는 곳에 돌을 놓으면 상대의 돌을 따게 됩니다. 예외적으로 패나 착수 금지 구역 같은 것이 있긴 하지만, 그 규칙은 비교적 쉽습니다. 바둑은 수천 년 동안 연구돼 왔지만, 아직도 난해합니다. 하지만 규칙은 이처럼 단순합니다. 아마 한 시간 정도만 배우면 바둑의 대부분 규칙을 이해할 수 있을 것입니다. 바둑의 규칙은 최근의 게임보다도 더 단순하다고 할 수 있습니다. 그러나 그러한 단순한 규칙만 가지고도 매우 다양한 변화를 이끌어내며, 그게 바로 바둑의 매력입니다.

규칙의 일관화

규칙의 일관화은 규칙의 최소화와 비슷하며 연관돼 있지만, 약간 다른 얘기입니다. 규칙의 최소화는 규칙의 수에만 관심이 있다면, 일관화는 동일한 상황에 같은 규칙을 적용할 수 있는가에 관한 문제입니다.

이런 일관성을 잘 보여 주는 예로, 한글과 영어의 발음을 들 수 있겠습니다. 한글은 대부분의 경우, 그 글자가 어디에 오든 그대로 읽으면 됩니다. 즉 ‘ㅏ’는 언제나 ‘ㅏ’ 소리가 나며, ‘ㅏ’가 어디에 오든 그것은 마찬가지입니다. 하지만 영어는 다릅니다. 영어의 ‘a’는 항상 ‘ㅏ’ 발음이 아닙니다. Kart는 ‘카알트’로 발음하니 여기에서 a는 ‘ㅏ’ 발음이 나지만, cat은 ‘캐트’라고 읽으니 여기에서 a는 ‘ㅐ’ 발음이 난 것이며, career는 ‘커리어‘라고 읽으니 여기에서 a는 ’ㅓ‘ 발음이 된 것입니다. 이렇듯 영어의 발음에선 규칙을 쉽게 발견하기 어렵습니다.

일관성이 없다면, 각각의 사례마다 다르게 처리해야 합니다. 각각을 다르게 처리한다는 것은 불필요한 노력의 증가를 뜻하고, 따라서 비효율적입니다.

규칙의 최소화와 일관화의 예

규칙의 최소화와 일관화, 둘 다 해당하는 예로 Starcraft의 marine, medic을 들 수 있습니다. 이 게임에서 marine과 medic은 그 역할이 완전히 다릅니다. Marine은 총을 쏘는 공격형 유닛이고, medic은 다른 유닛을 치료하는 보조 유닛입니다.

그런데 제가 블리자드의 감각에 감탄하는 것은 둘 다 ‘A‘ 키만 눌러 주면 각각의 목적을 달성할 수 있다는 것입니다. 왜냐하면 marine의 공격 이동 명령은 attack의 앞글자를 딴 ‘A’이며, medic의 치료 이동 명령도 heal의 세 번째 글자인 ‘A’이기 때문입니다. 따라서 전혀 다른 두 유닛을 하나로 묶어서 한 부대로 지정한 후에 ‘A’ 키 하나만 눌러 줘도, 알아서 marine은 총 쏘며 이동하고 그와 동시에 medic이 상처 입은 marine을 치료해 주며 이동합니다. 혹은 따로 부대를 지정한다 해도, 각각의 부대가 무엇이든 간에 ‘A’ 키 하나로 통일된다는 것은 그만큼 게이머의 손이 편해진다는 것을 뜻합니다.

여기에서 필요한 규칙이 ‘A’ 키 하나뿐인 것은 규칙의 최소화에 해당합니다. 그리고 ‘주어진 목표로 유닛 고유의 기능을 수행하며 이동한다’는 같은 상황에 같은 ‘A’ 키를 적용할 수 있다는 것은 규칙의 일관화에 해당합니다.

결론

이러한 단순함을 추구한 예로는 마이크로스프 윈도의 창 체계나, 인터넷의 URL 표기 방법, 그리고 유니코드 등 찾아보면 많습니다.

어떤 체계를 단순하게 만드는 것은 쉽지 않습니다. 하지만 일단 단순하게 만들고 나면, 그것이 가져다주는 효율성은 그에 들인 노력을 충분히 상쇄하고도 남습니다. 무언가가 비효율적이라고 생각한다면, 그것을 단순하게 할 방법을 생각하는 것이 그것을 효율적이게 만드는 한 방법이 될 것입니다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중