창의성의 상자들을 소개해 드리기로 했었죠? 오늘은 보편적 패턴(universal patterns)이란 것을 소개해 드리도록 하겠습니다.

개발자들은 파이프 라인(혹은 어셈블리 라인)이라는 메타포에 익숙합니다. 여러 작업대가 일렬로 연결되어 있는 라인에서 시작점에서부터 원재료가 통과하면서 점차 완성품의 모양을 닮아가다가 최종점에 도착하면 일이 완료되는 처리 방식인데, 소프트웨어 아키텍쳐로 자주 사용됩니다.

이런식으로 우리가 은연 중에 사용하는 메타포가 상당히 많습니다(레이코프Lakoff 같은 인지언어학자는 오히려 메타포가 언어와 사고의 중심이라고 말하고 있죠). 이런 메타포들은 아이디어를 생산하는 아이디어가 될 수 있습니다. 아이디어 공장이지요.

여러 특수한 상황에 동일한 메타포가 적용된다는 면에서 메타포를 패턴이라고 말할 수 있는데(로버트 플로이드Robert Floyd는 패러다임이라고 합니다), 그 중에서도 특히 보편적 패턴이라고 할만한 것들이 있습니다. 어디에나 적용가능한 그야말로 우주적(universal)인 패턴이지요.

예를 들자면, 음양오행, 주역 같은 것들입니다. 정말 막강한 패턴들입니다.

군대에 있을 때 한문 고전 공부를 했습니다. 가장 경제적인 언어로 쓰인 책들이 한문 고전이었기 때문입니다(당시에 J언어를 알았더라면 좀 달랐을지도). 그렇다면 왜 경제적인 언어로 쓰인 책이 필요했는가? 군대에서는 우선 글을 읽을 시간이 부족하고(하루를 통틀어 30분 내외), 책을 아무 장소에서나 볼 수 없으며, 책을 잠시 읽다가도 고참이 신부름을 시키면 즉각 튀어나가야 했고(연속시간으로 5분 이상 집중하는 것이 힘듭니다), 또 한가하게 책이나 읽고 있다는 분위기를 풍기면 여러모로 괴로워지기 때문에 될 수 있으면 몇 글자 머리에 담았다가 긴 시간 동안 되새김질 할 수 있는 글이 필요했습니다. 그런 저에게 한문 고전은 보물창고였습니다. 맹자(한문의 문법적 훈련을 위해서는 최고라고 하죠), 중용, 도덕경, 주역 등을 읽었습니다.

중용 같은 경우는 세수 수건에 매직펜으로 원문을 써놓고 매일 얼굴을 닦기도 했습니다. 도덕경은 아침에 내무반 나가기 전에 잠깐 예닐곱 글자를 눈으로 사진찍어 뒀다가 하루 종일 머리 속에서 굴려보고 저녁에 돌아와서는 책을 보고 다시 확인하고 또 고민했습니다. 주역은 대산 주역 강해로 공부를 했습니다.

이 때 주역의 힘을 처음 느꼈습니다. 64괘 하나 하나가 책 한권 같이 느껴지더군요. 나중에는 효 하나가 책 한권으로 다가오기도 합니다. 뭐랄까 주역을 이리저리 뒤섞으면 이야기 만들어 내는 것은 무척 쉬울 것 같았습니다. 촘스키의 생성 문법이라고 할까요?

가끔 재미로 주역점을 쳐보기도 했습니다. 한번은 내무반 저녁 점호를 하고 있었나 그랬습니다. 갑자기 행정반에서 스피커로 제 고참을 황급히 부르더군요. 그 분은 저랑 같은 일병이었습니다. K씨라고 해두죠. 이런 일은 자주 있는 일이 아니었기에 K씨가 나간 뒤 사람들이 모두 궁금해 했습니다. 저는 그 동안 재미로 주역점을 쳐보았습니다. 머리 속에서 산통을 흔들었죠. 산뢰이가 나왔습니다.


(그림은 위키피디어 http://en.wikipedia.org/wiki/I_Ching_hexagram_27 에서)


위에는 산이고 밑에는 우뢰의 형국입니다. 가로로 주욱 이어진 것은 양이고 가운데가 끊어진 것은 음입니다. 양은 가득찬 것이고 음은 비어있는 것이지요. 맨 아래와 맨 밑만 있고 속은 비어있습니다. 머리속으로 생각을 막 굴렸습니다. 무슨 의미일까? 시종만 있고 중이 없다? 속이 비었다는 건데 K씨 관련해 무슨 일이 속이 비었을까?

잠시후 K씨가 돌아왔습니다. 궁금하던 내무반장이 물었습니다. "도대체 무슨 일이냐?" 집에서 전화가 왔다고 합니다. 어버이 날에 편지를 써서 보냈는데 그 편지가 하도 수상해서 혹시 별일이 없는지 부대로 전화를 했다고 합니다. 도대체 편지를 어떻게 써서 보냈길래? 시간이 별로 없어서 "안녕하세요"라고 적고 다음 줄에 "안녕히계세요"라고 적었답니다.

주역으로 점을 치는 것을 미신이라고 생각하는 사람들이 있습니다. 주역에서 예측력(predictive power)을 찾으려 한다면 미신이라고 해도 될 것 같습니다. 하지만 주역에서 반성력(reflective power)을 찾을 수도 있습니다. 해답을 밖에서 찾는 것이 아니라 나의 내면에서 찾습니다. 내가 이제까지 살피지 못했던 구석을 훑어보는 데에 주역이 도움을 줍니다. 주역이 갈고리가 되어 주는 것이죠.

이렇게 우연성에서 예측력을 찾지 않고 반성력을 찾으면 태도가 훨씬 수용적이 됩니다. 예를 들어 답을 얻기 위해 괘를 뽑았습니다. 하지만 도무지 현재 상황과는 상관이 없어 보입니다. 이럴 때 오히려 기뻐해야 합니다. 내가 이제까지 고려하지 못했던 측면에 빛을 보여준 것입니다. 상황에 딱 맞아 보이는 괘보다 더 도움이 됩니다.

어떤 소프트웨어를 만들거나 문제의 해결법을 생각할 때에도, 이 부분은 음양오행에서 무엇에 해당할까를 생각하면 도움이 될 때가 종종 있습니다. 이 놈이 목이면 상극하는 금은 어디이지? 상생해주는 수가 필요하진 않을까?

이 단계가 익숙해지면 나중에는 상대적 적용이 가능합니다. 이 놈을 목이라고 본다면 어떨까? 이런 질문을 할 수 있습니다. 심지어는 표면적으로 보기에 오행의 화 성격을 많이 가진 대상일지라도 예컨대 "수"로 볼 수가 있습니다.

제가 알고 있는 보편적 패턴 중에서 가장 사용이 쉬운 것은 음양입니다. 그 다음은 삼재(천, 지, 인)이고 다음은 사상(태양,태음,소양,소음), 다음은 오행, 그 다음은 육기, 팔괘, 이런 식으로 나가고 나중에는 주역이 되는 것 같습니다. 주역이 다른 것들에 비해 좀 더 구체적이고 아기자기한 맛이 있습니다.

예를 들어 가장 기본적인 음양 패턴 같은 경우는 우리가 평소에 생활할 때에 무의식적으로 늘 쓰고 있습니다. "반대"라고 하는 것들이지요. 하지만 이걸 의식적으로 활용하면 엄청난 무기가 됩니다.

물의 반대는 쉽습니다. 불. 연필의 반대도 비교적 쉽습니다. 지우개. 종이 등등. 볼륨의 반대는 뭘까요? 고무의 반대는? 반대 사고는 내가 인식 못했던 "사고의 대칭축"을 인식하게 해줍니다. 소프트웨어어 A라는 컴포넌트가 있으면 이런 질문을 던져보세요. A의 반대는 무엇일까? F 기능의 반대(negative functionality)는?

한 걸음 더 나아가서 이런 보편적 패턴들 간에도 어떤 공통성이 있지 않을까요? 있는 것 같습니다. 대칭성, 대조성, 순환성 등입니다. 크리스토퍼 알렉산더(Christopher Alexander)가 말하는(질서의 본성 Nature of Order 참고) 훌륭한 건축물, 도시 등의 공통성입니다. 소프트웨어 디자인 패턴에도 이런 것, 예컨대 대칭성(혹은 그 반대)이 있습니다. 자세한 내용은 코플리엔(James Coplien)의 논문을 참고하세요.

일전에 워드 커닝햄이랑 같이 전차를 타고 가다가 저의 보편적 패턴 이야기를 듣더니 여지없이 강력한 질문을 던지더군요. "그 패턴이 들어맞지 않을 때는 어떻게 하나요?"
 
--김창준


p.s. 나중에 알게 된 일인데, 2007년 출간된 주역 관련 책(주역의 발견)에 이 글이 인용되었더군요. 그리고 직관과 통찰에 대한 최근 연구에 따르자면, 나의 생각과 일치하는 점괘로 해석하면 그것은 확신편향(confirmation bias)을 주기 때문에 위험하고, 오히려 내 생각과 다른 괘로 해석을 하고 내가 못 본 부분을 찾으려고 하는 것이 통찰을 얻는 데에 도움이 됩니다. (update 2014/9/6)