[좋 은 글] 고수로 가는 길(1)-picnic 님 글

작성일
2003-11-24 16:29
조회
8589

오늘은 어느 벗님이 낭월에게 보내주신 글을  올려드리기로 한다. 이 글은 좀 길기는 한데, 내용은 소박하면서도 공부하시는 벗님들이 한번 쯤 읽어보시기에는 충분한 내용이라고 여겨져서 사전에 피크닉님께 양해를 얻었다. 본인께서는 구태여 그럴 필요가 없다고 하셨지만, 낭월의 소견으로 좋은 글이라고 생각이 되어서 그냥 게시판에 붙여놓기 보다는 여기에 올려드리고 생각을 해보실 틈틈히 함께 읽어보시기를 권해드리고자 하는 생각이 들었기 때문이다.


게시하는 것에 허락을 해주신 님께 감사 드립니다.


           계룡감로에서 낭월 두손모음


========================================================================







 부족하지만 picnic이 아는


    고수로 가는 길


     ( The Road Into Supreme Being )







                               picnic 저




 제가 프로그래머 출신이라 글이 프로그래머를 중심으로 쓰여졌습니다. 하지만, 글의 본질(에센스)은 바로 인생수행에 있습니다. 따라서, 명리학을 공부하시는 분들도 세상의 한 직업인 프로그래머라는 직업을 통해서 어떻게 인생수행의 역정을 걸어가는지를 살펴보신다면 조금이나마 도움이 되실 것입니다. 어느 직업에 일하던 그리고 어떤 삶을 살던 우리는 삶을 통해서 어떤 고차원적이고 보편타당한 정신적 가르침을 향해 마음을 닦아나가고 있다고 말하고 싶습니다.




 절처봉생이라고 했듯이, 다 죽어가는 곳에서 새롭게 자신의 영혼을 일신(一新)하는 것이 필요합니다. 이는 수행을 하던 선인들께서 말씀하신데로 죽어가는 고목에 꽃이 피는 겪입니다. 즉, 끊임없는 영혼의 메타모포시스(환골탈태, 換骨奪胎)를 겪으면서 그리고 극도의 고통과 시련 속에서 과거의 업연으로 이루어진 영혼을 모두 상실하고 사멸시키면서 그 사멸의 끝에서 새롭게 영혼을 소생(Remortal, 절처봉생, Spritual Resurrection)시키는 것이 요구됩니다. 이것은 우리 자신이 행한다기 보다는 우리의 선한 마음에 감흥한 정신계의 스승이신 신적인 조물주에 의해서 이루어진다고 생각합니다. 우리는 끊임없는 외부적 변화 속에서 변화하지 않는 맑고 순수하며 명료한 영혼을 얻기 위해서 매진해야 할 것입니다. 이 글은 그러한 과정을 통해 경험한 저의 작은 이정표로서 집필되었습니다. 아마, 이 글의 전체 내용을 거시적 시각으로 여러 번 반복해서 읽고 사색하고 숙독해 본다면 무엇인가 느껴지는 것이 있으리라 생각합니다. 




 본 글에서 프로그래밍에 대해서 언급하는 내용이 나오면 명리학의 견지에서 변형시켜 해석하도록 하십시오. 프로그래밍이 수리와 문리를 모두 다루고 있는 것처럼 명리학과 비슷한 맥락을 갖고 있으니 두 분야의 학문을 서로 바꾸어 해석해도 큰 상관은 없을 것입니다.




 본 글은 제가 경험하고 듣고 보고 배운 바를 토대로 석가모니 부처님의 가르침을 중심으로 집필하였습니다. 제가 비록 재가자(집에서 수양하는 사람)이지만 지운 스님의 원각경 강의를 듣고, 불교서적도 숙독하면서 배우고 얻은 것을 정리한 것입니다. 이뿐만 아니라 프로그래머 삶을 통해서 배우고 듣고 그외 인생을 살아가면서 많은 유명과 무명 고수들로부터 배우고 들은 것을 저의 경험에 맞추어 정리한 글입니다. 따라서, 제가 작성하는 글에서 말씀드리는 고수는 단순히 프로그래밍 차원에서만의 고수가 아니라 인생 전반에 걸친 고수를 말합니다. 물론, 필자가 프로그래머였기 때문에 글의 중심부의 한 부분은 프로그래밍에 대한 고수 이야기가 전개됩니다. 그러나, 프로그래밍만을 고집할 필요가 없이, 학문 전 분야와 인생 수행 전 분야를 모두 꿰뚫을 수 있는 고수에 대해서 제가 아는데로 글을 정리하였습니다.




저 자신도 고수는 아니지만 그래도 제가 만난 고수분들과 고수 프로그래머들의 이야기와 자세(心法)에 대해서 보고 들은 것이 있고, 이들을 토대로 글을 구성하면 공부를 하고자 하는 분들께 도움이 될 듯하여 정리하도록 생각하였습니다. 고수분들이라고 해서 만나기가 어려운 것이 아니라, 우리가 노력한다면 충분히 만날 수 있는 분들입니다. 그 분들의 이야기나 글 그리고 자세를 보고서 감동을 받거나 어떤 정신적이고 의식적인 차원에서 우리의 삶에 강한 열망과 동기를 부여한다면 그 분들은 바로 우리를 일깨워주고 우리를 도와줄 수 있는 고수분들이라고 생각합니다. 그러므로, 여러분 자신들도 어떤 면에서 잠재된 고수일지도 모릅니다. 만약 그렇다면 여러분의 잠재된 능력을 깨어내 고수의 반열에 들도록 해 보십시오. 그리고, 비록 여러분이 하수라고 하여도, 꾸준히 노력하고 정진하면 언젠가는 고수로 환골탈태할 수 있으므로 꿈과 이상 그리고 열망을 가지도록 하십시오.




 필자가 지금까지 살아가면서 고수분들을 잘 모시는 것이 고수분들의 지고한 학문과 심오한 心法을 배우는데 큰 도움이 된다는 것을 여실히 느꼈습니다. 물론 그렇다고해서 자신보다 정신적으로나 영적으로 그리고 기술적으로 하수분들을 무시하라는 것이 아닙니다. 하수분들은 돕고 그리고 고수분들을 깍듯이 모시는 것이 올바른 프로그래머의 길이 아닐까요? 또한, 고수분들로부터는 많은 것을 배울 수 있습니다. 고수분들이 하는 일들은 하나같이 아름답고 멋있습니다. 물론, 때로는 과격하기도 하고 때로는 이해하기 힘들 때도 있습니다. 그러나, 무엇인가 매달리고 직심을 가지고 정진하는 모습은 타의 모범이 됩니다. 또한, 하수분들에게도 가끔씩 매우 귀중한 심법을 배우기도 합니다. 다만, 고수분들로부터 배우는 것이 하수분들로부터 배우는 것보다 많다는 것이 차이가 있습니다. 그러나, 하수분들로부터 배우는 한 가지 귀중한 심법이 매우 중요할 수도 있습니다. 따라서, 학인은 부단하고 한결같은 배움을 위해서는 사람을 의도적으로 구별할 필요가 없습니다. 또한 그래서도 안되겠지요. 다만, 이왕이면 고수분들게 공부를 배우는 것이 자신의 발전을 위해서 좋다고 말씀드리는 것입니다.




 자, 글을 쓰기 전에 먼저 고수는 어떤 분인가를 정의해 봅시다. 제가 알기에 고수는 뜻이 깊고 생각이 깊으며 행동과 지혜가 맑고 견고합니다. 그리고, 함축적이고 긴요하며 기묘합니다. 또한 저와 같은 하수에게 감명을 주고 경탄을 자아내게 합니다. 고수분들이 작성하는 프로그램 코드를 지켜보면 감탄사가 절로 나게 합니다. 그리고 고수분들은 침착합니다. 또한, 우리가 불경이나 성경에서 나오는 가르침에 가장 근접한 행동을 하는 고수분들이 많습니다. 즉, 남을 돕고자 하는 마음도 강하며, 무엇보다 한 번 마음에 결심을 세우면 즉시 그리고 차분히 정진해 들어갑니다. 제가 깊게 존경하시는 고수분은 석가모니 부처님입니다. 석가모니 부처님은 고행을 통해서 학문을 초월한 도덕적이고 초인간적인 그러나 지극히 인간적인 수행의 본질을 얻으신 분입니다. 즉, 더 이상의 공부가 필요없는 궁극의 경지에 도달하신 분이 바로 석가모니 부처님이십니다. 물론, 예수님과 비교해서 설명하는 것이 아닙니다. 다만, 저는 불경을 공부하고 고수분들의 뜻을 얻기 위해서 노력하는 사람이므로 대표적으로 제가 존경하는 분으로 석가모니 부처님을 말씀드린 것입니다.




 우리는 휴먼 모델링(Human Modeling)이라고 하여, 자신에게 정신적인 스승으로서 어떤 사람을 마음에 담아 둡니다. 그리하여 그 사람과 같이 자신도 훌륭하게 되기를 꿈꿉니다. 만약 독자제현님들께서 어떤 분을 마음에 새겨두고 그 분처럼 되기 위해 그 분의 인격을 배우고 그 분처럼 행동하고 사유해 나간다면 분명 언젠가는 그분과 비슷한 상태까지 자신을 변모시킬 수 있을 것입니다. 이러한 휴먼 모델링은 자신의 행위를 매우 적극적이고 목표지향적(즉, 방향을 잃지 않는)이 되도록 합니다. 따라서, 마음 속에 항상 존경하는 사람으로 한 분 정도는 모셔두는 것이 중요합니다.




 또한, 고수는 도량이 넓고 한 가지를 깊이 해도 한 가지만을 생각하지 않습니다. 즉, 하나를 공부할 때 그 하나에 충실하지만 실제로는 그와 관련된 여러 분야를 꿰뚫어 알 정도로 지혜가 광대무량합니다. 만약 고수 프로그래머의 경우, 프로그래밍만 잘하는 것이 아니라, 데이터베이스도 잘 다루고, 비즈니스 로직도 잘 압니다. 즉, 컴퓨터 전체 분야를 꿰뚫어 알 정도로 박식합니다. 그러나, 기본은 자신의 전공 분야에 충실합니다. 즉, 자신이 전문으로 하는 분야에 충실하면서 다른 관련분야를 두루 박식하게 알고 있습니다. 예를 들어, 시스템 프로그래머라면 어셈블리를 기본으로 알면서 하드웨어에 대해서도 박식합니다. 제가 지금까지 생각해 보면, 고수는 넓이 많이 아는 방식을 통해서 깊이 아는 것보다는 한가지 분야에 깊이 몰입하고 집중함으로써 깊이 아는 것을 통해서 자연스럽게 넓게 아는 방법으로 지혜를 넓혀 나가는 것으로 압니다. 필자가 비록 하수지만 필자가 알고 있는 프로그래밍 공부도 바로 한 가지를 깊이 공부하면서 그러한 과정을 통해서 그 한가지 분야와 관련된 다른 분야를 공부할 수 있었습니다. 또한, 고수는 쉽게 포기하거나 지치거나 하지 않습니다. 또한 거만하거나 교만하거나 오만하지 않습니다. 고수는 겸허합니다. 고수는 배우면 배울수록 더 겸허해 집니다. 또한, 고수는 많이 아는 것보다도 우선적으로 한 가지 주제에 대해서 대강의 의미를 파악한 후 그 후 정확하게 아는 것을 좋아합니다. 그리고, 결단력이 강해 겉으로 보기에는 좀 무서워 보일 수 있습니다. 고수는 집중력이 강하고 한 번 몰입하면 깊이 몰입합니다. 즉, 정신집중을 잘하고 학문도야에 뜻을 품으면 끝을 볼 때까지 열심히 매진합니다. 이러한 점은 저와 같은 하수가 깊이 배워야 할 부분입니다. 또한, 고수는 너그럽기가 한량없지만 한 번 화나면 정말 무섭습니다. 따라서, 고수를 대할 때는 항상 겸손한 자세한 갖추어야 합니다. 그렇다고 모든 고수가 다 인간성이 좋다는 것은 아닙니다. 하수에게도 성격이 좋고 나쁜 사람이 있는 것처럼, 고수에게도 성격이 좋은 고수가 있고 그렇지 못한 고수가 있습니다. 따라서, 성격의 좋고 나쁨으로 고수를 판단하는 것은 쉽지 않습니다. 그러나, 대체적으로 하수분보다는 고수분들이 마음씀씀이가 좋습니다. 일반적으로 고수는 고집이 강해서 쉽게 모시기가 쉽지 않습니다. 그러나, 고수의 마음은 본래 너그러운 것 같습니다. 고수가 프로그래머가 되었건 학자가 되었건 수행자가 되었건 상관없이 거의 비슷한 점을 찾을 수 있습니다. 또한, 고수는 말보다는 생각을 중시하고 생각이 정립되면 곧바로 행동에 옮깁니다. 즉, 지행합일이 제대로 되는 분들이 고수분들이라고 할 수 있습니다. 그리고 학문을 많이 안다고 고수가 아니고, 얼마나 삶을 성찰하고 삶에 대해서 진지하게 생각하고 열심히 살아가느냐가 더 중요합니다. 학문은 부차적인 것입니다. 중요한 것은 삶에 대한 진지한 태도입니다. 고수일수록 삶에 대해서 진지하다고 저는 생각합니다. 또한, 고수는 생각을 깊이 있게 관(觀)함으로써 삶을 성찰합니다.




 또한, 고수는 철두철미하고 신중해서 절대로 손해를 보려고 하지 않습니다. 이 말은 인색하다는 것을 뜻하지 않습니다. 이 말은 자신의 노력을 낭비하거나 자신의 에너지를 낭비하지 않는다는 것입니다. 물론, 돈을 쓰더라도 자신과 공익을 위해 쓰도록 한치의 오차 없이 노력합니다. 그리고 거래가 확실합니다. 즉, 정확한 거래를 위해서 노력하며, 상대의 손실과 자신의 손실을 싫어합니다. 그리고 뒤끝이 없으며 과거에 대해서 큰 미련을 갖지 않는 듯 합니다.




 고수에 대해서는 대강 설명을 이정도로 마치기로 합니다. 실제로 독자제현님들 옆에는 고수들도 있고 하수들도 있을 것입니다. 중요한 것은 하수로부터도 한 수를 배울 수 있다는 것입니다. 그것이 바로 인간존엄성입니다. 고수에게 배울 수 없는 것을 가끔씩 잘 삐지고 도량이 작고 인격적으로 좀 낮은 수준의 하수에게도 무엇인가 하나 정도는 배울 것이 있습니다. 실제로, 자신이 고수가 되기 위해서는 하수의 괴로움을 많이 경험해야 하며, 그러한 고된 경험을 통해서 고수가 되는 거름을 얻을 수 있습니다. 고수가 되는 길은 하루아침에 이루어지지 않으며 끊임없이 자신을 단련시켜 나가야 합니다. 그리고 고수가 되기위해서는 어느 정도의 경지에 올랐다고하여 금방 자만해서는 안됩니다. 자신이 어느 정도 수준에 오르게 되면 항상 자신을 쫓아오는 하수들을 위해서 자비를 배풀어야 합니다. 즉, 공덕을 나누어야 하는 것이죠. 물론 프로그램 소스코드를 그냥 제공해 주는 식의 잘못된 형태의 자비가 아니라, 초보 프로그래머가 제대로 길을 갈 수 있도록 올바른 방향과 따뜻한 조언을 제공하는 것이 중요합니다. 자신이 고수가 되기 위해서는 수많은 고수들의 시험을 통과해야 하며, 수많은 하수들로부터 점수를 얻어야 합니다. 따라서, 고수는 쉽게 되는 것이 아닙니다. 그러나, 필자가 아는 한 필자가 지금보다 더 하수 시절에 느낄 수 있는 기쁨보다 조금 더 발전된 상태에서는 그 기쁨이 더 크다는 것입니다. 즉, 학문을 숙달해서 어느정도 학문을 사용할 수 있는 경지에 이르게 되면 그 학문을 통해서 즐거움을 얻는 량이 과거 하수 시절이었을 때 보다 더 크다는 것입니다.




 부처님께서는 일체의 모든 중생이 부처가 될 수 있는 종자를 몸에 갖고 태어난다고 하였습니다. 즉, 끊임없이 수행하여 나간다면 누구나가 부처의 경지에 이를 수 있다는 말씀입니다. 결국 하수이건 중수이건 고수이건 누구나 노력하고 정진하면 부처가 될 수 있다는 것인데, 이 말은 학문을 하는데에도 적용됩니다. 즉, 자신이 비록 근기가 약한 하수라도 노력에 노력을 거듭하고 고수들을 잘 사귀어 그들의 심법과 노하우를 익힌다면 언젠가는 고수의 반열에 들 수 있을 것입니다.




  또한, 깨어있는 하수가 있고 잠자고 있는 고수가 있습니다. 이때에는 깨어있는 하수가 잠자고 있는 고수보다 더 의미를 갖습니다. 깨어있는 하수란 지혜가 발현되고 있는 하수로서 분명한 목적의식과 삶과 세계를 이해하고 배우고자 열망하는 하수를 뜻합니다. 잠자고 있는 고수란 전혀 세상의 이치에 관심없고 그냥 맹목적으로 하루 하루 살아가는 고수라고 할 수 있습니다. 우리는 깨어있는 고수가 되기 위해서 노력해야 합니다. 자신의 잠재된 내면의 능력을 발현시킬 수 있고 그리고 도량을 넓히고 특정 분야(예를 들어, 프로그래밍)에 정통하고 그 분야에서 깨달음을 얻은 고수가 될 필요가 있습니다.




  고수가 되면 좋은 점은 남을 도울 때 그 돕는 범위가 크다는 것입니다. 즉, 고수의 말 한마디는 많은 의미를 함축하고 있어, 물음을 구하는 하수분들에게 한 마디만 잘해주어도 하수분들을 각성시키기에 충분하다는 것이지요. 고수는 매우 포괄적이고 전체를 생각하는 시야를 갖고 있습니다. 그래서, 생각하는 바가 무지 큽니다. 그것은 몽상적인 측면에서의 광대함을 뜻하는 것이 아니라, 장자에서 말하는 바와 같이 붕새의 크기처럼 생각이 큽니다. 고수는 자신을 지킬 줄 아는 지혜를 갖으며 항상 자신을 보호하고 남들을 보호할 줄 압니다.




 지금까지 설명을 통해서, 하수는 별볼일 없고 고수가 좋다는 이분법적인 사고를 하게 되는데, 그것은 잘못입니다. 처음에 누구나 하수로 시작합니다. 즉, 현재 고수가 된 사람들도 모두 처음에는 깨어있지 못한 상태였거나 아니면 하수였습니다. 꾸준한 노력과 피와 눈물과 땀을 흘리면서 하루 하루 인내하고 정진해 나간 덕분에 고수의 반열에 들어서게 된 것입니다. 따라서, 자신이 고수가 되건 남이 고수가 되건 그것은 정말 기쁜일이며 경사로운 일이 아닐 수 없습니다. 모두 처음에는 하수에서 시작하므로 고수가 된다는 것은 좋은 일입니다. 그러나, 성인(成人)이 되서도 매사 하수의 마음으로만 살아가는 사람들이 있는데 그 분들에 대해서는 안타까운 마음이 듭니다. 우리는 나이가 들고 백발이 성성할 때까지 끊임없이 배우고 정진해야 합니다. 공부는 끝이 없기 때문입니다. 제가 이렇게 면학을 강조하고 바른 삶을 강조하면 어떤 분은 저를 종교적 이방젤리스트로 여기시는 데, 그럴 필요가 없습니다. 모든 공부와 학문이 결국 좋은 사람이자 좋은 마음을 갖도록 장려하고 있다는 것을 안다면 저를 그렇게 취급하지 않을 것입니다. 저는 제가 지금까지 살아오면서 배운 경험을 통해서 말씀드린 것입니다.




 또한, 주의할 것은 책을 많이 읽는다고 해서 고수는 아니라는 것입니다. 다만, 책을 많이 읽으면 고수의 심법과 자세를 읽을 수 있어 자신이 고수로 환골탈태하는데 많은 도움이 되기는 합니다. 그러나, 반드시 책만 많이 읽었다고 고수가 되는 것이 아닙니다. 부처님은 젊었을 때 책을 많이 읽었을 뿐만 아니라 실제로 수행을 통해서 지혜를 증득하셨습니다. 따라서, 체험과 경험이 중요합니다. 그리고 항상 지성을 발현시켜 삶이 양태를 면밀히 주시하고 냉철하게 분석, 판단해야 할 것입니다. 학문만을 해서는 완전한 경지에 이르기 어렵고, 반드시 피와 눈물과 땀을 흘리는 수행이 수반되어야 합니다. 프로그래머의 경우, 프로그래밍을 하면서 실제로 실험과 관찰을 통해 경험적으로 프로그래밍의 실체를 터득하는 것이 필요합니다. 책을 읽거나 말로 듣는 것만으로 프로그래밍의 실체를 얻을 수 없습니다. 프로그래머 고수가 되기 위해서는 이론적인 학문에 기초하여 반드시 프로그래밍이라는 수행을 수반해야 할 것입니다.




 이제, 프로그래머에게 있어서 고수로 가기 위한 방법으로서 기억에서 망각으로 이루어진 과정에 대해서 논의해 보고자 합니다.




 처음 프로그래밍에 입문하면 프로그래밍 언어를 배우고 여러 가지 지식을 쌓아 나갑니다. 그리고 알고리즘과 데이터구조를 배우게 됩니다. 그리고 대학에 들어가면 각종 전산학 이론을 배우게 됩니다. 그리고, 대학 프로젝트를 통해서 간단하나마 실무적인 냄새가 나는 좀 더 견고한 프로그램을 작성해 봅니다. 마찬가지로 학원에서도 프로젝트를 통해서 실무적인 프로그램을 개발합니다. 그 후, 취업과 함께 직장생활을 통해 프로젝트를 수행합니다. 여러 번의 프로젝트를 수행하면 나름대로의 확고한 지식이 설립되고 많은 경험을 얻게 됩니다.




 프로그래머로서의 고수로 가는 길에 있어서 명심해야 할 것은 프로그래밍과 관련된 지식, 또는 문제영역과 관련된 지식이라는 것은 본질적인 것이 못된다는 것입니다. 우리는 지혜(智慧)를 얻어야 합니다. 즉, 어떤 깨달음을 얻어야 한다는 것이죠. 프로젝트를 수행하면서 프로젝트에 존재하는 본질을 꿰뚫어 볼 수 있는 시야를 얻어야 합니다. 그것은 바로 기억을 통해서가 아니라 망각을 통해서 얻습니다. 본질을 꿰뚫어 알기 위해서는 자신의 정신세계에 고도의 추상적 사유구조를 건립하고 이를 천천히 해소 및 와해 시켜 나가 궁극적으로는 무화시키는 것이 필요합니다. 그리고 잔해이자 여운으로 남는 지혜만을 무의식깊이 장축시킵니다. 기억한 후 망각하는 과정은 사실  역설적인 듯 한 이야기지만 진실합니다. 실제로, 몇몇 선사(禪師)께서는 공부는 잊는 것이라고 하였습니다. 자신이 알고 있던 지식을 하나 하나 모두 잊어가는 것을 공부라고 한 것입니다. 비록 소설이지만 의천도룡기에서도 장무기가 그의 스승으로부터 태극권을 배울 때, 그의 스승이 모든 초식을 잊으라고 하였습니다.




 물론, 공부는 잊는 것이라는 선사님의 말씀이 가능하기 위해서는 먼저 학문적으로 지식을 쌓는 과정이 수행됩니다. 그 후, 삶을 살아가면서 자신의 지식을 모두 잊어버리는 것입니다. 우리나라의 유명한 한 선사께서도 식물이 썩으면 거름이 되고 사람이 썩으면 중이되고 중이 썩으면 선사가 된다고 하였습니다. 즉, 이 선사께서는 두 번의 과정을 시사하였습니다. 필자가 알기에 처음에는 잡다한 학문으로 자신의 의식을 채우는 것이고 그 다음은 이러한 잡다한 지식을 모두 묵히고 썩혀서 지혜로 탈바꿈하는 것일 겁니다. 잡다한 지식이 쌓여 번뇌가 심해지면(즉, 일차로 썩으면) 중이되어 이러한 지식과 번뇌를 소진시켜(이차로 썩으면) 결국 선사가 된다는 뜻으로 해석하였습니다. 즉, 중요한 것은 잡다한 지식을 잊어버리게 되면 맨 나중에 남는 것은 허공 같은 지혜의 마음이라고 생각됩니다. 비록 우리가 의식적인 차원에서 프로그래밍에 대한 모든 지식, 즉 알고리즘, 데이터구조, 데이터베이스, 운영체제, 컴파일러 등등에 대한 지식을 모두 잊어버려도 그것은 표면적인 차원에서의 망각이지 무의식 깊은 차원에서는 그러한 지식은 체계화되어 존재한다는 것이 저의 지론입니다. 분명 제가 알기에 고수분들은 많이 외우기보다는 심층 무의식속에 어떤 견고한 형태로 지식체계를 설정하고 있고, 의식차원에서는 그 모든 것을 잊습니다.




 여기서 잊음으로서 얻는 것, 즉 망각을 통해서 얻을 수 있는 것은 스트레스를 덜 받는다는 것입니다. 일상 사회생활을 하게 되면 스트레스를 받게 되는 경우가 많은데, 이러한 번뇌들을 극복하기 위해서는 잊을 줄 알아야 됩니다. 잊지 않고서는 번뇌에 시달리게 되고 결국 프로그래밍의 로직을 설정하는데 문제가 생깁니다. 스트레스를 받는 상황에서 일을 잘 수행하기는 어렵습니다. 망각은 바로 단순히 프로그래밍 차원이 아니라 실제 생활이라는 실존 속에서의 망각을 의미합니다.




 앞에서 언급한 것처럼, 공부는 잊어버리는 것이다라고 한 가르침은 필자가 알기에 완전히 기억 속에서 듣고, 보고, 배우고 얻은 모든 지식을 다 지워버리라는 뜻이라기 보다는 지금 현재의 순간에서는 그러한 잡다한 지식을 놓아버려야 한다는 뜻이지요. 즉, 마음을 항상 맑고 깨끗하고 환하게 유지하는 것이 필요하다고 생각합니다. 이런 저런 지식들을 의식을 혼탁하게 하고 무겁게 하는 것이므로, 지식들은 한 번 듣고 잊어버리되, 자신의 깊은 심층의식 속에 정합적으로 체계화시키는 것이 필요합니다. 망각이라고 해서 완전히 무의식 차원까지 기억에서 없애는 것이 아니라, 지금 이 순간에는 생각하지 않고, 꼭 필요한 지식은 지혜로서 발현시키도록 무의식 깊이 간직해 두라는 뜻이겠지요. 필자가 알기에 지식이라는 것을 많이 얻으려면 머리 속에 외워두는 것이 아니라, 단순히 지식에 대한 연결고리만을 알아두고 실제 꼭 필요한 지식은 무의식적으로 승화시켜 놓아야 한다고 생각합니다. 그리고, 메모를 잘 사용할 필요가 있습니다. 우리의 기억 속에 무엇인가를 자꾸 누적시켜 나가는 것보다는 종이나 메모지를 사용해서 우리의 기억을 가볍게 할 필요가 있습니다. 그리고 꼭 필요한 지식은 지혜로 걸러서 가볍게 무의식적 차원으로 이입시켜 놓아야 겠지요. 우리가 필요한 것은 지식이라기 보다는 지혜입니다. 즉, 사물과 현상에 대한 본질적 의미를 간파하고 터득하는 지혜가 요구됩니다. 이러한 지혜는 영혼의 심층의식으로 무의식까지 확장하는 것으로 압니다. 필자가 알기에 자신의 깊은 의식에서 또는 깊은 무의식에서 나오는 지혜는 매우 명석판명하다는 것을 많이 느낍니다. 즉, 생각에 생각을 거듭해서 정제된 량의 중요한 판단력, 논리력, 추론력, 직관력 등으로 걸러진 것이 바로 지혜의 발현이라고 생각하기 때문입니다. 장자께서도 말씀하셨죠, 쓸모없는 것은 다 버리고 중요하고 요긴한 것만 기억할 필요가 있다고 말입니다. 필자가 알기에 깨달음은 분명 그런 것일 겁니다. 즉, 두뇌에 꼭 필요한 것만 남고 불필요한 것은 모두 버리는 것 말입니다.




 기억은 본질적으로 집착이나 편집병적인 증상과 모종의 연관을 갖습니다. 우리가 어떤 사실이나 정보에 지나치게 집착하게 되면 우리의 사유를 흐리게 하고 판단력과 논리력 그리고 직관력을 제대로 발현시키기 어렵습니다. 그리고 지식이라는 것은 자칫 번뇌를 이끌 수 있으므로, 우리는 최대한도로 쓸모없는 지식을 버리고 중요한 지식과 지혜만을 농축시키고 함축시켜서 내면화할 필요가 있습니다. 프로그래머의 경우, 특정 프로그래밍 루틴이나 정형화된 기법 그리고 코드패턴이나 디자인 패턴을 암기하기 보다는 그러한 루틴과 기법 그리고 패턴의 원리를 이해하고 실제로 실무에 적용하는 방법과 자세를 연마하며 그들을 유연하게 활용할 수 있는 응용력과 지혜가 필요합니다. 이러한 지식들이 견고한 체계로 내면화되지 않는다면 우리는 잡다한 지식으로 우리의 두뇌를 혹사시킬 것입니다. 프로그래머는 필요한 루틴, 기법, 패턴들을 단순히 암기하는 것이 아니라, 자신들의 몸에 자연스럽게 배어 익숙해 지도록 하는 것이 중요합니다. 고수 프로그래머는 그들이 무엇을 해야하는지 매우 명료하게 압니다. 즉, 그들은 자신들이 무엇을 배워야 하는지 그리고 무엇을 암기해야 하는지 알며 그들의 두뇌를 단순히 프로그래밍에 관련된 지식으로 무장하지는 않습니다. 그들은 몸에 배이도록 그러한 지식을 단련시켜 농축시키고 간추려서 지혜로 변환시킵니다. 즉, 무의식적인 차원까지 승화시켜 자신의 사유를 보다 근원적인 차원에서 성찰할 수 있도록 합니다. 프로그래밍에 대한 지식을 몸에 배이도록 하여 잠재의식과 무의식차원까지 익숙해지도록 하고, 이렇게 승화된 의식으로부터 지혜를 얻습니다. 지혜는 사물과 현상을 꿰뚫어 파악하는 거시적 통찰력입니다. 이러한 통찰력은 단순히 지식을 암기한다고 해서 이루어지는 것이 아닙니다. 프로그래밍의 경우에 있어서, 루틴, 기법 그리고 패턴 등에 대한 전체적인 사유를 근원적이고 체계적인 차원에서 정교하게 얽고 섥어서 하나의 유기적이고 관계적인 지식체계로 만듭니다. 그리고 다시 강조하는 바, 이러한 지식체계는 의식적인 차원에서 기억해 두기보다는 우리의 몸에 배이도록 심층적이고 무의식적인 차원으로 던져 놓습니다. 그리고 지혜는 이러한 심층적이고 무의식적인 차원에 저장된 지식, 즉 의식상에서는 망각되어 있는 지식을 활용하여 판단력, 논리력, 추리력, 통찰력, 직관력으로 발현하게 됩니다.




  선사(禪師)들께서 잊으라고 한 것은 우리의 표면상의 의식적 레벨에서의 망각을 의미합니다. 우리는 바로 이 순간 어떤 생각을 할 필요가 없습니다. 우리가 필요하고 요구될 때만 사유하면 됩니다. 만약 우리가 사유해야할 과제가 생긴다면 그것은 바로 문제의식(문제를 풀기 위해서 문제에 몰입하고 집중하는 의식)일 때 뿐입니다. 특정 문제가 제기되어 우리가 직접 우리의 두뇌를 가동시켜 문제를 풀어야 할 때, 그때만 우리의 사유가 필요한 것입니다. 그렇지 않고 일상적일 때는 두뇌에 휴식을 주어야 합니다. 즉, 편안히 두뇌가 쉬도록 해 주어야 합니다. 우리의 두뇌를 지나치게 지식을 채우고나 쓸모없는 생각들로 혹사시키면 우리는 피로해지고 쉽게 지치게 됩니다. 따라서, 한 순간 한 순간 살아가면서 우리는 다양하고 잡다하게 들어오는 정보를 즉시 즉시 걸러내고 꼭 필요한 것만 기억해 두는 것이 필요합니다. 그리고 그러한 기억도 망각이라는 과정 속에서 이루어져야 합니다. 무엇인가를 기억하는 것은 우리에게 에너지를 소모하게 하고 우리의 두뇌를 피로하게 만듭니다. 우리가 필요한 것은 명료하고 분명한 의식이지 잡다한 지식이 아니라는 것입니다. 꼭 필요한 지식은 메모를 사용하고 꼭 외워야할 지식은 여러 번 반복해서 암기하여 심층의식에 넣어두십시오. 그리고 이러한 기억과 암기는 시간이 흘러 망각되어야 하고, 그러한 지식들과 정보는 우리의 지혜를 발현시키기 위한 재료로 사용되어야 할 것입니다.




 또한, 지혜를 얻기 위해서는 몰입하거나 집중하는 것이 중요합니다. 즉, 한가지 문제에 대해서 깊이 있게 사유하고 깊이있게 사색하는 것이 필요합니다. 프로그래밍의 경우, 실험과 관찰을 병행하여 우리의 사유를 점검하고 깊이있게 연구하는 것이 필요합니다. 프로그래밍을 하게 되면 우리는 우리의 사유에서 있어서 논리적 모순과 버그를 쉽게 발견하기도 합니다. 그리고 훌륭한 프로그래밍은 단순한 로직의 집합이라기 보다는 어느 정도의 통찰력과 직관력이 가미될 필요가 있습니다. 고수 프로그래머는 잘 암기하기도 하지만 잘 잊기도 합니다. 고수 프로그래머들이 작성한 코드는 매우 구조적으로 짜임새있고 직관력으로 이해하기 쉽도록 작성합니다. 그들이 작성하는 프로그램 구조는 논리적 구성과 직관적 미학을 동시에 구비하고 있습니다. 또한, 프로그램의 버그를 논리적으로 파악하기 힘들 때 우리는 직관적 통찰력을 사용합니다. 즉, 프로그램 코드를 들여다 보면서 깊이 생각하다보면 문뜩 이 부분을 고치면 되지 않을까 라는 생각을 하게 되고, 그 생각대로 다시 코드를 수정하여 컴파일하거나 실행해 보면 버그를 쉽게 고치는 경우가 종종 발생합니다. 그것은 바로 우리의 직관적 통찰력이고 지혜의 발현이라고 할 수 있습니다. 이러한 지혜는 단순한 암기로 얻어지고 지식의 축적으로부터 얻어지기 보다는 경험적이며 지식이 무르익어 무의식에 자양분을 만들어 주고 결국 이러한 자양분이 지혜를 발현시키기 때문에 가능하다고 생각합니다. 우리가 책을 아무리 많이 읽어도 프로그램 코드를 몇 줄 작성하지 못하는 경우가 발생하는데 그것은 바로 우리의 지식을 썩히고 묵혀서 무의식 깊이 지혜의 거름으로 썩히지 못하기 때문이라고 할 수 있습니다. 지식이란 우리의 몸에 배이도록 잘 소화해야 합니다. 고수 프로그래머는 알고 있는 바와 행동하는 바가 일치합니다. 즉, 자신이 알고 있는 지식을 행동으로 옮겨 코드화시키는 능력이 탁월합니다. 즉, 실천력이 뛰어나다고 할 수 있습니다. 이것은 고수분들이 지식을 단순하고 건조한 형태의 언어나 기호의 모임으로 생각하는 것이 아니라, 지식의 의미와 실용적 응용법을 깊이 꿰뚫어 알고 있기 때문입니다.




 필자와 같은 중급 프로그래머가 고수 프로그래머를 따라가려면 쉽지 않습니다. 그들의 사유 구조와 행동 구조가 다르기 때문입니다. 즉, 고수 프로그래머가 생각하는 방식과 태도 그리고 마음가짐이 필자와 같은 일반 프로그래머보다도 더 섬세하고 미세하며 실천적입니다. 그들은 잘 암기할 줄 알고 잘 잊을 줄 알며, 자신이 암기하거나 배운 지식을 잘 활용할 줄 압니다. 그들은 집요하고 직심이 강해 한 번 문제가 발생하면 그 문제를 풀기 위해서 그들의 모든 지능을 최대한 발휘합니다. 그러나, 고수 프로그래머를 잘 살펴보면, 그들은 일반적인 프로그래머가 하찮게 생각하는 루틴이나 기법 그리고 패턴들을 매우 소중하게 생각합니다. 또한, 루틴과 기법 그리고 패턴의 원리를 심층적으로 이해하여 잘 활용합니다. 즉, 그들은 매우 쉽게 지식을 체계화하고 활용할 줄 압니다. 또한 그렇다고 고수 프로그래머들은 이러한 루틴과 기법 그리고 패턴들에 대해서 집착하지도 않습니다. 그들은 그러한 것들이 있다는 것을 알고 필요할 때 사용할 뿐입니다. 그리고 그들은 그것에 대한 모든 집착을 놓아버립니다. 우리가 고수 프로그래머를 따라가기 위해서는 그들의 사유와 행동 방법 그리고 자세와 습관 및 마인드까지 배워야 합니다. 그러기 위해서는 그들이 코드를 작성하는 방법을 옆에서 지켜봐야하고 그들이 디버깅하는 방법은 자세히 옆에서 학습할 필요가 있습니다.




  이제, 보다 구체적으로 고수로 자신을 메타모포시스(환골탈태)하는  방법에 대해서 알아봅시다. 물론, 필자가 듣고 보고 경험하고 알고 있는 바에 한에서입니다.




 먼저 자신이 고수가 되기 위해서는 피와 땀을 흘리면서 어떻게 해서든지 고수를 찾아야 합니다.




석가모니 부처님도 출가하여 인도의 수행자를 찾아 나섰습니다. 21세기를 사는 우리들도 오늘날 스승을 찾아나서는 것을 게을리 해서는 안됩니다. 고수를 찾아 나서기 힘들면 인터넷의 동호회, 학원, 학교 등에서 고수를 찾아야 합니다. 그리고 고수와 친해지도록 노력해야 하고 고수와 잘 사귀어야 합니다. 고수가 쓴 글이나 고수가 말하는 이야기나 고수가 집필한 서적들 그리고 강좌들을 주의깊게 공부해야 합니다. 고수가 아는 한가지 노하우를 제대로 터득해도 많은 것을 얻을 수 있습니다. 프로그래밍 분야에서 독보적인 위치에 서려면 항상 고수들로부터 영감과 감명을 받아야 합니다. 고수와 대화만을 해도 자신의 감성과 지성이 열리고 각성되기도 합니다. 익스트림 프로그래밍의 주창자인 Kent Beck과 디자인패턴 서적의 공저자 Erich Gamma가 호숫가에서 진지한 대화를 나눈 것을 생각하면 저는 대화가 중요하다는 것을 많이 느낍니다. 고수분들을 만나면 진지하게 대화를 나누는 것이 필요합니다.




 고수는 진화를 넘어서 변화를 컨트롤하는 경지로 자신의 사유와 행위를 넘나듭니다. 우리가 생각하기에 어떤 사람이 어떤 일을 통해서 어떤 경지(Stage)에 이르려면 꾸준한 진화를 거쳐야 합니다. 이러한 진화는 보편적인 일반적 휴먼이 일상적인 삶을 통해서 사건과 문제들을 극복하고 정복하면서 걷는 과정입니다. 그러나, 변화 앞에서 진화는 맥을 못춥니다. 즉, 삶에 변화가 닥치게 되면 진화의 도정은 멈칫하거나 일시적으로 또는 장기적으로 막을 내리게 됩니다. 따라서, 고수분들은 항상 진화를 넘어서 변화를 사유하고 변화를 공부합니다. 이 부분은 필자가 언급하기에는 어려운 내용이므로 여기서는 이 정도로 줄이고자 합니다.




 일단 고수분을 만났다면 그 분들이 어떻게 사유를 하고 행위를 하는가를 면밀히 관찰하고 알아야 합니다. 즉, 그분들이 어떻게 내공을 증득하고 외공을 펼치는가를 알아야 합니다. 이것은 그분들과 잦은 대화를 나누고 그분들이 프로그래밍을 하거나 일을 하는 모습을 직접 옆에서 보는 것이 필요합니다. 그리고 그분들의 지도를 통해서 그분들의 가르침을 배워야 합니다. 우선, 자신의 고집과 주장을 내세우고 싶어도 그냥 있는 그대로 고수분들의 가르침을 받는 것이 중요합니다. 자신의 주장이 옳다고 내세워서는 안됩니다. 이것이 배움을 걷는데 어려움들 중의 하나입니다. 필자도 처음에는 자꾸 내 생각이 옳다고 해서 고수분들로부터 가르침을 받지 못한 경우가 많았습니다. 돌이켜 생각해 보면 이것은 하수들의 고질적인 문제입니다. 하수로서 필자도 남이 무슨 이야기를 하거나 주장을 하면 반대되는 주장을 내세워 대립을 자초했습니다. 이것은 참으로 어리석은 일입니다.




 이렇게 자신의 주장을 쓸데없이 내세우는 것은 결국 배움에 아무 도움이 안됩니다. 고수분을 찾아서 그분을 스승으로 모시고자 한다면 자신의 주장을 내세우기보다는 분명 제대로 귀를 기울이고, 있는 그대로 받아들여 그분의 가르침을 깊이 사색해 봐야 합니다. 물론, 부처님께서도 부처님 자신을 테스트해보라고 제자들에게 말씀하시기도 하였습니다. 그러므로, 고수분을 만났다고 무조건 스승으로 삼기보다는 철저하게 테스트해보고 자신이 신뢰할 만한 분인지 검증할 필요가 있습니다. 충분한 검증이 끝났고 다른 사람도 인정하는 분이라면 그 분을 스승으로 삼고 열심히 배워야 합니다.




  고수분을 스승으로 삼고 열심히 공부를 배우기 시작하면 스스로 가졌던 아집들(에고, ego)이 하나 둘씩 녹아 없어집니다. 그래서, 스승을 만나면 처음부터 시작하는 자세로 돌아가야 합니다. 즉, 맨처음부터 다시 시작하는 것입니다. 새로운 토양을 고루고 새롭게 씨앗을 뿌리고 새롭게 물을 줍니다. 이와 같은 과정을 통해서 자신은 새롭게 변신하게 됩니다. 스승은 자신을 변모시킬 수 있는 능력을 가지고 있습니다. 왜냐하면 스승은 자신이 걸어가야할 길을 제대로 알고 있기 때문입니다.




  어느 정도 스승의 가르침을 이해하고 많은 학문을 두루 섭렵하게 되고 또한 망각하는 방법을 배웠다면 그 다음은 하산하여 직접 실무에 뛰어드는 것입니다. 실무를 통해서 경험하고 배움으로써 자신의 배워온 이론과 가르침을 실험할 수 있습니다. 자신의 지식과 지혜가 실무에 사용할 만큼 공공해지지 않았다면 다시 스승을 찾아가거나 더 좋은 스승을 찾아야 합니다. 결국 자신을 완숙한 경지에 도달할 수 있을 때까지는 부단한 공부가 필수적입니다.




  이렇게 공부의 여정이 끝나면 실무에서 열심히 일하십시오. 그리고 실무에서 만나는 사람들과 서로 대화를 하면서 공부를 나누고 실력을 겨루십시오. 실력을 겨룬다고 해서 남을 이기기 위해서 노력하는 것이 아니라, 상대를 통해서 진리(Truth)의 의미를 관철하도록 하고 또한 상대가 자신을 통해서 진리의 의미를 관철하도록 하십시오. 진리의 다양한 면을 서로 관찰하고 관철하도록 하되 상대방의 관찰과 관철을 겸허하게 받아들일 필요가 있습니다. 우리는 동일한 진리를 다른 차원에서 받아들이고 해석하는 경향이 있기 때문입니다. 그리고 나중에 자신과 같이 스승을 찾는 후학을 만나면 그들의 정열과 의지의 옳고 그름을 잘 판단하여 올바른 마음으로 학문을 배우고자 한다면 아낌없이 지식을 나누어줄 필요가 있다고 생각합니다. 그리고, 그것이 가장 고귀한 삶의 하나라고 저는 생각합니다.




==========> 2편에 계속.