Friday, February 10, 2012
Retabbed
Login | Register
아티클
  Search
프로그래머와 명상
프로그래머와 명상

프로그래머는 마음을 집중하는 훈련을 하는 것이 중요합니다. 집중이란 集中으로서 ‘한 가지에 몰입하거나 하나에 몰두하는 것’을 뜻합니다. 인도의 요가에서 집중이라는 과정을 하나의 수행체계로 간주하고 집중을 통해서 마음을 컨트롤한다고 하였습니다. 또한 집중이라는 것은 흐름과 리듬을 탈 줄 알아야 합니다. 몰입에는 흐름이 있습니다. 프로그래머가 프로그래밍할 때는 정신의 에너지가 컴퓨터 화면과 프로그래머 사이에 흐르고 있다고 할 수 있습니다. 정신의 에너지는 정신력과 동일한데, 그것은 힘(Power)이라는 것이 결국 에너지이기 때문입니다. 우리가 음식을 먹으면 몸에 생체 에너지가 형성되는 것처럼, 정신력은 우리의 몸을 통해서 얻어지는 에너지를 의미합니다. 중요한 것은 이러한 정신 에너지의 흐름이 매우 온화하고 순조롭게 진행되어야 한다는 것입니다. 프로그래머와 컴퓨터 간에는 거칠거나 혼탁하거나 혼란스러워서는 흐름이 있어서는 제대로 된 집중을 할 수 없습니다. 오로지 프로그램 코드에만 집중할 수 있어야 합니다.


  마치, 레이저 빔으로 글자를 새겨내듯, 정신 에너지를 손끝으로 발현시켜서 키보드를 통해 코드를 새겨내는 작업이 프로그래머가 하는 일입니다. 정신 에너지는 사이킥 에너지라고 말하며 인간에게 있어서 매우 중요한 에너지라고 할 수 있습니다. 많이 사용하면 피곤해지고 스트레스를 많이 받으면 안정된 에너지(알파파)가 나오지 않습니다. 따라서 이러한 정신 에너지를 제대로 활용하는 것이 프로그래머의 관건이자 모든 직업 전사들의 관건이라고 하지 않을 수 없습니다. 집중이란 에너지를 모으는 과정이며 이러한 집중을 통해서 정신의 통일성을 얻게 되며 이렇게 얻어진 정신의 통일성은 마음의 산만함을 제거하고 길들이게 됩니다. 프로그래머는 코딩이라는 매개를 통해서 집중을 하게 되고 집중을 통해서 마음을 가다듬고 고를 수 있게 됩니다.


프로그래머가 코딩시 집중력을 높이기 위해서는 반듯이 한 가지 주제를 중심으로 다루어야 한다는 점입니다. 예를 들어, 소팅 알고리즘을 구현한다고 합시다. 이럴 경우, 소팅의 기초적인 원리를 곰곰이 생각한 후 여러 가지 참고서와 자료들을 참조하여 소팅 알고리즘의 기본 골격을 완성합니다. 여기서 문제는 바로 소팅 알고리즘이 다양하다는 점입니다. 이러한 다양한 소팅 알고리즘에서 자신에게 필요한 소팅 알고리즘, 즉 현재의 당면 문제를 해결하는 데 가장 적합한 소팅 알고리즘을 찾아서 자신의 코딩에 통합시키는 것이 중요합니다. 이럴 때 소팅 알고리즘을 선정하는데 갈등이 일어나는데, 그러한 갈등을 최소화하는 것이 정신 에너지의 소비를 줄이는 길입니다. 켄 윌버의 무경계(無境界)라는 심리학 서적에서는 내면에 저항이 있거나 하면 그 부정적 에너지로 인하여 정신과 마음이 스트레스를 받게 된다고 하였습니다. 여기서의 사례에서는 집중을 방해하는 것은 다양성에 의한 개체화되고 분화된 소팅 이론들 간의 선정 시의 갈등이라고 할 수 있습니다. 퀵 소팅을 선택할 것인가, 아니면 셀렉션 소팅을 선택할 것인가 아니면 여타의 소팅을 사용할 것인가 등등을 결정하는데 갈등이 일게 됩니다. 그것은 자신에게 적합 소팅을 찾지 못했기 때문입니다. 이것은 결국 앎이 부족하기 때문인데, 앎이라는 것은 지식과 지혜를 이어지는 가교 역할을 합니다.


  프로그래머는 코딩을 통해서 앎을 얻어야 합니다. 앎이라는 것은 소팅의 기본 이론이 될 수 있고, 소팅을 선정할 때 고려해야할 소팅들의 특성들이 될 수 있으며 실제로 소팅의 효율성이 될 수도 있습니다. 코딩이라는 것은 결국 정신 에너지를 통해서 다양성을 조건, 비교, 반복, 선택 등에 의해서 요리(?)하는 것입니다. 실세계는 다양한 존재들과 사물들로 구성되면 다양한 사건과 경우의 수로 존재합니다. 따라서 이러한 다양성을 이해하기 위해서는 앎이 전제되어야 합니다. 이러한 앎이 전제되지 않을 때는 정신에너지의 급진적인 고갈을 초래합니다. 앎이라는 것은 정신에너지를 최소화할 수 있는 지혜입니다. 그렇다면 이러한 앎이라는 것을 어떻게 얻을 수 있을까가 프로그래머에게 그리고 모든 직장인들에게 화두가 될 것입니다.


  앎이라는 것은 자연스러운 의지를 통해서 발현되는 것입니다. 순수의 의지와 개성에 의해서 지식들을 하나씩 쌓아나갈 때 앎이 이루어지는데 이러한 앎의 핵심에는 경험이 존재합니다. 경험이 없이는 앎이 성립하지 못합니다. 따라서 많은 경험을 얻는 것이 중요합니다. 이는 누구나 다 아는 사실입니다. 하지만, 독자제현님들 중에서 정신에너지의 관점에서 경험을 생각해 본적은 적을 것입니다. 프로그래머가 코딩시 경험이 많을수록 정신 에너지의 소비는 줄어듭니다. 그렇다면 경험을 어떻게 얻어야 하는가? 이것이 관건이요 문제라고 할 수 있습니다. 프로그래머에게 있어서 경험이라는 것은 코드 한 조각 한 조각이 어떻게 소프트웨어를 구성하여 실제로 컴퓨터에 동작하는지를 명료하게 아는 것입니다. 이렇게 알아지는 지식이 앎과 지혜의 연결통로가 됩니다. 간단히 설명해서, 코드의 패턴이나 코드의 구조 등을 자유자재로 다룰 수 있고 자유롭게 소프트웨어 구성에 참여 및 통합시킬 수 있어야 합니다. 이렇게 경험을 누적하게 되면 결국 앎이 증가하게 되고 앎이 증가하게 되면 프로그래머는 코딩시 최소한도의 정신 에너지를 사용할 수 있게 됩니다.


  경험을 극대화하기 위해서는 코딩을 자주 하되 반복해서 해볼 필요가 있습니다. 한 번 코딩해서 잊어버리면 무의식에 잠재하게 되는데 시간이 지나면 무의식에서도 사라지게 됩니다. 따라서 반복적으로 시간의 간격을 두고 코딩을 연습하는 것이 중요합니다. A라는 코드패턴을 소프트웨어에 적용하도록 작성했다고 했을 때, 그 순간에는 코드패턴의 이론과 실제 적용 이치를 이해하지만 시간이 지나면 잊어버리게 됩니다. 그렇게 해서 잊어버리면 무의식에 존재하다가 시간이 더 흐르면 사라져버리게 됩니다. 물론 완전히 무의식에서 사라진다고 할 수는 없습니다. 미세하게나마 잔상이 남겨지듯이 남겨질 수도 있을테니까 말입니다. 불가(佛家)에서는 미세한 기억들의 파편들 하나하나 모두가 아뢰야식에 함장된다고 말합니다. 중요한 것은 반복을 통해서 경험을 증대시키는 것이 중요하다는 것입니다. 물론, 매일 동일한 코드를 작성하는 반복은 일의 흥미를 줄여줍니다. 따라서 일의 흥미를 높이려면 반복에 변화를 주어야 합니다. 생각의 전환, 발상의 전환이 요구되는 거죠. 이렇게 반복에 변화를 줌으로써 경험은 극대화되고 결정화됩니다. 결정화된다는 뜻은 수정처럼 견고하게 조직화된다는 뜻입니다. 경험이 견고해지고 조직화될 수록 앎이라는 것은 확장되고 든든해 집니다. 앎이 견실하고 견고할 때 이러한 앎을 통해서 코딩을 하게 되면 정신에너지가 덜 소비됩니다. 왜냐하면 너무나 자명하게도 앎에는 선험적 지식과 지혜가 담겨있기 때문입니다. 이러한 앎 자체를 과거 현자들은 영지(靈智)라고 하였습니다.


  이러한 영지(靈智)는 정신에너지의 근원이요 원천이라고 할 수 있으며 코드의 실재가 담겨있는 것입니다. 코드라는 것은 영지의 그림자에 지나지 않습니다. 실용주의 프로그래머의 한 저자가 말한 것처럼, 결국 코딩이라는 것은 정신 속에서 얻어지는 것이라는 점입니다. 코딩은 정신의 문제라는 것입니다. 이 점을 확실히 해두어야 합니다. 따라서 프로그래머의 정신력, 즉 정신에너지의 온전한 활용은 자신의 내면에 존재하는 경험과 앎을 극대화할 때 가능하다는 점을 강조하는 것입니다. 일단 머릿속에 들어간 코딩에 대한 이론과 실무 지식이라는 것은 내면화되면 경험이 되고 이 경험들이 반복된 변화를 통해서 순화되고 정련되고 단련되어 정제된 후 결정화되면 영지(靈智)라는 두뇌 속에 핵(核)이 얻어진다는 것이죠. 운영체제를 비교해서 말하자면 커널(Kernel)에 해당하고 컴퓨터 하드웨어에 비교해서 말하면 CPU에 해당한다고 할 수 있죠. 그것이 바로 정신에너지가 발현되는 영지(靈智)라는 것입니다.


  영지(靈智)라는 것은 결국 다양성 중에서 개체의 고유한 성질과 특질을 추출하여 통일성을 이루는데 있습니다. 이를 고대 현인들은 신비로운 나무로 비유해서 이야기하기도 하였습니다. 필자는 여기서, 지혜의 나무라는 이름으로 명칭 하겠습니다. 인체는 신경의 네트워크로 구성되어 있습니다. 피가 흐르는 혈관이나 정신 에너지가 흐르는 기경팔맥 모두가 에너지의 통로라고 할 수 있는데, 정신에너지는 바로 마음에 존재하는 지혜의 나무에서 나옵니다. 영지(靈智)는 신묘한 마음으로서 정신에너지의 근원이요 여기에 진실된 앎, 즉 지혜의 나무가 자라고 있습니다. 그리고 집중이라는 것은 마음을 하나로 모아 마음이 분열되고 분산되는 것을 막는데 있습니다. 보다 정확하게 말하자면 이는 마음의 분산이라기보다는 잡념의 제거에 있다고 할 수 있습니다. 영지(靈智)는 잡념을 타파하는 고도의 정밀화된 앎이요 지혜입니다. 여하튼, 영지(靈智)는 마음의 핵(核)으로서 지혜의 나무로 구성되고 형성되어 있습니다. 이러한 영지(靈智)를 고대의 현자들은 우주적 사상으로 비유해서 우주목, 즉 우주나무라고 하였습니다. 소우주라고 하는 인체에 있어서 이를 구성하는 신경 체계가 두뇌를 뿌리로 하여 나무처럼 다리까지 펼쳐져 있다는 것을 통해서 우주목을 이해할 수 있습니다.


  각설하고, 프로그래머에게 있어서 코딩이라는 것은 영지(靈智)의 발현이요 지혜의 나무의 그림자에 불과합니다. 얼마나 자신의 내면에 지혜의 나무를 잘 가꾸었느냐에 따라 코딩의 실력이 판가름 난다고 해도 과언이 아닙니다. 코딩 이론과 코딩 실무에 대한 총화된 지식이 반복되어 누적될 때 경험이 되고 이러한 경험이 무르익게 되면 앎이라는 영지(靈智)가 되게 됩니다. 물론, 이는 필자가 경험적으로 알게 되고 여러 현자들의 글을 읽고서 깨닫게 된 내용을 서술한 것입니다. 영지(靈智)는 간단히 말해서 순수한 이성이라고도 할 수 있습니다. 순수한 이성은 잡념이 아닌 앎 그 자체입니다. 이것은 다분히 철학적 사변으로 인식될 수 있는데, 결코 그렇지 않습니다. 프로그래머가 코딩을 통해서 얻을 수 있는 것은 단순히 코드 조각들에 대한 기억이나 로직 분석과 기억에 있는 것이 아니라 다양한 경험들 중에 통일성을 찾아 그것을 보편적 정신에 입각해서 내면에 지혜의 나무를 구성하는데 있습니다. 수많은 코드들이 모여서 하나의 완성된 소프트웨어가 만들어 지듯 지식과 경험이 토양이 되고 거름이 되어 내면에 존재하는 지혜의 나무가 자라나게 되고 이로 말미암아 앎의 체계가 확립됩니다.


  프로그래머는 궁극적으로 코딩을 통해서 영지(靈智)를 모으는 것이 목표가 되어야 하며, 이렇게 얻어진 영지(靈智)는 사사물물의 현상과 제반사항 모두에 대해서 철두철미하게 사색하고 성찰할 수 있는 힘을 제공합니다. 영지(靈智)를 얻게 되면 매사가 항상 집중된 상태로 진행되며 항상 깨어있는 의식 상태를 얻게 됩니다. 물론, 코딩만을 통해서는 완전한 내면의 각성을 얻는 것은 불가능합니다. 따라서 명상(Meditation)이나 명상서적들을 읽고 현자들의 글을 자주 대면하는 것이 필요합니다. 필자는 부족하나마 항상 현자들의 가르침에 귀를 기울이고 그것을 모든 학문에 통합시켜 이해하고자 합니다. 그러면 서로 다르다고 생각되는 것들에서도 모종의 통일성이 발견되고 유사성을 찾을 수 있습니다.


  21세기 웰빙 문화는 인간의 정신세계를 심오하게 바꾸어 놓은 일대 혁신적인 문화적 흐름이라고 할 수 있으며 명상이라는 문화 사조를 일구어냈습니다. 명상이란 어려운 것이 아니라 집중하는데 있습니다. 즉 Concentration에 있다는 것입니다. 이는 이성을 잡념에 시달리게 하는 것이 아니라 한 가지 주제에 통일되게 하는 것입니다. 그렇게 될 때 코드의 부분이 전체적으로 완성된 소프트웨어에 온전하게 통합될 수 있는 식견을 얻게 됩니다. 부분이 전체로 확장되는 과정을 이해할 수도 있으며 전체가 부분으로 축소되어 가는 과정을 이해할 수도 있습니다. 즉, 소프트웨어의 한 부분을 전체로 확장시켜 나가거나 전체적인 소프트웨어를 하나의 부분으로 축소시켜 나갈 수도 있다는 것입니다. 실제로 이러한 앎을 알고 있는 것과 모르고서 코딩을 하는 것은 차이가 있다는 점을 이해하실 필요가 있습니다. 영지(靈智)라는 것은 사사물물을 꿰뚫어 보는 지혜요 통찰력으로서 코드에도 그대로 적용됩니다.


  결론적으로, 프로그래머의 궁극적인 목표는 소프트웨어의 완성 뿐만 아니라 자신의 정신적 실체인 영지(靈智)를 깨달아 아는데 있습니다. 소프트웨어의 완성과 함께 영지(靈智)의 깨달음을 얻기 위해서는 코딩 못지 않게 명상과 명상서를 탐독하는 것이 좋습니다. 흔히 마인드 컨트롤 하라고 하는데 명상을 하지 않고서는 마인드 컨트롤이 제대로 되지 않으며 잡념에 헤메이게 됩니다. 또한 명상은 반드시 훌륭한 구루(스승)의 도움을 필요로 합니다. 필자는 프로그래머의 정신력을 극대화하는데 명상이 중요한 위상을 차지한다는 것을 말씀드렸으며, 단지 필자의 견해를 피력하는 것이지 절대로 독자제현님들께 강요하는 것이 아니라는 점을 말씀드립니다. 탓닉한 스님 말씀처럼 걷는 것 자체에도 명상이 존재한다는 점을 보면 명상은 어려운 것이 아닙니다. 어떻게 하면 한 가지 일에 깊이 몰입하여 집중할 수 있고 그럼으로써 잡념을 타파할 수 있느냐 입니다. 결국 마음을 모아 하나를 이루고 이렇게 이룬 하나마져도 초월하여 무화시킬 때 영지(靈智)가 발현되게 된다고 할 수 있습니다. 영지(靈智)는 무지를 타파하는 것으로 프로그래머에게 있어서는 각종 버그를 타파하는 영롱한 빛입니다. 영지(靈智)를 얻기 위해서는 코드 작성에 집중할 필요가 있으며, 자신이 코딩을 하고 있음을 조용히 지혜의 눈으로 관(지켜봄)하는 자세도 필요합니다. 필자는 이 글을 쓰면서 글에 몰입하고 집중하는 동시에 글들을 주시하면서 글을 써갑니다. 마찬가지로, 코딩 시에도 코딩에 집중하면서 동시에 코딩 과정을 주시하는 지혜의 눈, 즉 영지(靈智)가 필요합니다. 아무쪼록, 독자제현님들도 향상심을 가지고 프로그래머의 세계를 보다 높은 방향으로 한 차원 높여서 명상의 세계와 접목함으로써 새로운 비전을 지니고 사유하고 행동해 나가셨으면 합니다.


감사합니다.


참고문헌)

   1. 문성호 선생의 물질의 궁극 원자 - 아누

   2. 프로그래머의 길, 신영호 저

   3. 현자의 코드, 신영호 저


게시일자 Monday, December 26, 2005 (Archive on Monday, January 02, 2006)
게시자: 사이트관리자  저자: 신영호
돌아가기

평점:
평가:
평가 올리기

현재평점평균: 4.00
평점: 3
흠.. 저자가 잘못되었군요. ^^; 이 글의 저자는 프로그래머의 길을 집필한 신영호랍니다.
평점: 5
오 굳!!!
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게