1990 년대의 프로그래밍계에 가장 큰 영향을 끼친 책을 단 한권만 꼽으라면 아마 대다수의 프로그래머가 Design Pattern 을 꼽을 것이다. 그만큼 Design Pattern 이 프로그래밍계에 끼친 영향이 크고, Pattern 이란 개념은 현대의 프로그래머에게는 매우 당연한 것으로 받아들여지고 있다.

여러분은 63 빌딩같은 고층 건물이나, 종로에 있는 기묘하게 생긴 고층 빌딩을 보면서 '아, 저런 크고 복잡한 건물은 어떻게 설계하는 것일까?' 하고 의문점을 품어본 적이 있는가? 그러한 의문은 기실 '크고 복잡한 프로그램을 어떻게 설계하는 것일까?' 라는 의문점과 일맥상통하는 점이 있다. 그 통하는 점의 키워드는 다름아닌 '디자인 패턴'이다.

'디자인 패턴'이라는 용어가 처음 쓰이게 된 것은 1977년 크리스토퍼 알렉산더라는 건축가가 지은 책 'A Pattern Language' 에서였다. 그 책은 건축학에 대한 책인데, 저자는 "각각의 디자인 패턴은 기존 환경 내에서 반복적으로 일어나는 문제들을 설명하고, 그 문제들에 대한 해법의 핵심을 설명하는 것이다. 이렇게 하면 똑같은 방법을 두 번 반복하지 않은 채 이 해법을 백만 번 이상 재사용할 수 있다" 라고 말한 바 있다.

프로그래밍이나 건축이라는 것이 아주 얼토당토하지 않은 것을 다루는 것이 아니라, 인간의 문제를 인간을 위해서 해결하기 위해 만드는 것이다보면, 어떤 구조건, 해결 방법이건 일정한 패턴을 띄게 되어있다는 점이다. 그런 패턴은 여러번 문제를 접하고 해결한 적이 있는 통찰력있는 경험자의 머릿속에서만 '아 이럴땐 이렇게 하게 되어있어' 라고 구전되는 것이 아니라, 어떤 체계를 만들어서 정리하게 될때, 큰 위력을 발휘하게 된다는 것이다.

여기까지는 별로 특별할 것이 없는 얘기이고, 사실 너무나도 당연한 이야기이기도 하다. 하지만 Design Pattern 이 이렇게 중요한 책으로 불린 이유는, 실제로 수십년동안 프로그래밍계에 축적된 지식을 패턴화하여, 일반 대중에게 공개하였다는 점과, 더욱 중요한 점은, 그 각각의 패턴들에 표준적인 이름을 붙였다는 점이다.

'이름'의 중요성은 김춘수님의 시 '꽃'을 읽어도 알 수 있지만, 어떤 개념에 이름이 붙여지고, 붙여지지 않고는 매우 큰 차이가 난다. 예를 들어서 스타크래프트를 할때 적진에 정찰을 들어간 프로브가 SCV 에게 쫓기면서 죽지 않기 위해서 건물 주위를 뱅뱅 돌도록 콘트롤을 하는 상황을 게임 방송 중계 캐스터가 '탑돌이'를 하는군요 라고 간단히 말할 수 있는 것은, 이미 수많은 프로게이머들이 '탑돌이'라는 행위를 자주 한다는것 (패턴이 있었다는 것) 과 이후에는 그 방송을 본 사람들은, 자기가 게임을 할때 탑돌이를 하면서 집요하게 자기 기지에서 안 나가는 상대방을 향해서 '탑돌이좀 그만하고 꺼져라' 라고 간단하게 말할 수 있게 되는 것이다. 아래 리뷰에서 언어는 사고의 한계를 규정한다는 말과도 통하는 개념이라 하겠다.

Design Pattern 에서 한가지의 패턴을 소개하는 방식은 다음과 같다. 먼저 이름을 붙이고, 같은 패턴이지만 다르게 불렸던 이름들도 함께 소개하였다. A 라는 이름이 사실상의 표준안이 되기 전에는 a 로 불릴 수도 있고 a~ 로도 불릴 수 있는 것이기 때문에 공식적인 제안안으로서의 이름과, 다른 이름들을 함께 소개한 것이다.

그리고 그 패턴이 어떤 경우에 필요하게 되는가에 대한 동기와 상황 설명, 구체적인 패턴의 사용방법과 구성요소를 설명하고, 이 패턴을 썼을때 생기는 장점과 단점, 이 패턴이 사용된 예제 코드와 실제 대형 프로젝트에서의 사용예에 대해서 서술하고 있다.

Design Pattern 이라는 책에서 이런 식으로 23 가지의 패턴을 소개한 이후에, 이 패턴들은 다른 프로그래머들에게 중요한 지침이 되었으며, 다른 프로그래머들도 자기만의 독특한 패턴을 발견해내서 다른 사람들에게 전파하는 움직임이 일어나게 되었다. 이것은 프로그래밍 역사상 매우 위대한 발견이자 새로운 조류라고 할 수가 있는 것이다.

프로그램을 처음 만들기 시작하는 초 중급자의 불안감중 하나가 '이렇게 프로그램을 짜는게 맞는걸까?' '고수들은 어떤 식으로 프로그램을 짜는걸까?' 라는 것인데, 역시 디자인 패턴을 배움으로 인하여, 아 원래 사람들이 이렇게 하는게 정석이었고, 정해진 이름까지 있었구나.. 라는 것을 깨닫게 되는 것이 얼마나 개발자의 학습속도를 증가시킬지 상상해보기 바란다.

이 책의 저자들인 이 책의 출간 이후 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 등의 4 명은 4인의 악당들 (Gang Of Four) 이라는 별명을 얻게 되었다. 아마도 Design Pattern 이 몰고온 엄청난 혁명적 파급효과를 일러 말한게 아닐까 싶다.

이 책의 출판사인 Addison Wesley 는 Design Pattern 이후에 다른 개발자들이 제시한 패턴들을 모아서 책으로 출간하는 시리즈를 운영하고 있다. PLoP 시리즈 (Pattern Language of Programming) 시리즈는 현재 Volume 4 까지 출간되어 있으므로 관심있는 독자들은 참고바란다.

imcgames 의 김학규입니다