Mixed bag/유용한 지식들...

프로그래밍의 도(道)

JJun ™ 2007. 7. 11. 11:20

영역(英譯) 제프리 제임스(Geoffrey James),
필사(筆寫) 세쓰 로버트슨(Seth Robertson),
한역(韓譯) 윤태원

목차(目次)(잘 보이지 않는다면 링크를 클릭하세요!)

 


무(無)
권(卷) 1

도사(道士) 프로그래머 가라사대:
"숨겨진 에러 코드를 찾아내는 방법을 익혔다면
하산(下山)할 때가 온 것이니라
."


1.1

무(無)에서 이상(異常)스러운 기운(氣運)이 생겨났도다. 그 기운은 홀로 외로이 움직이지 않았다. 그 기운은 움직이지 않았으나 동시에 끊임없이 움직이고 있었다. 그것이 바로 모든 프로그램의 근원(根源)이다. 나는 그 이름을 알지 못하느니, 그것을 `프로그램의 도(道)'라고 부르게 되었다.

도가 위대(偉大)하다면 운영체제(運營體制)도 위대하다. 운영체제가 위대하다면 컴파일러도 위대하다. 컴파일러가 아주 위대한 것이라면 애플리케이션은 위대하다. 사용자는 만족(滿足)하고 그리하여 세상(世上)은 조화(調和)로 충만(充滿)하도다.

프로그래밍의 도는 멀리까지 미치며 아침 바람과 함께 돌아온다.

1.2

도는 기계어(機械語)를 낳았다. 기계어는 어셈블러를 낳았다.

어셈블러는 컴파일러를 낳았다. 그리하여 세상(世上)은 만가지도 넘는 언어(言語)로 가득하게 되었다.

모든 언어(言語)는 아무리 비천(卑賤)한 것일지라도 그 뜻한 바가 있다. 모든 언어는 소프트웨어의 음(陰)과 양(陽)을 나타낸다. 모든 언어는 도(道) 안에 그 자리가 있는 법이다.

하지만 할 수만 있다면 코볼로는 프로그래밍하지 말지어다.

1.3

처음에 도가 있었다. 도는 시간(時間)과 공간(空間)을 낳았다. 그리하여 시간과 공간은 프로그래밍의 음(陰)과 양(陽)을 이루게 되었다.

도를 깨닫지 못한 프로그래머는 언제나 프로그램을 짤 시간과 공간이 모자라는 법이다. 도를 깨달은 프로그래머는 언제나 목적(目的)을 달성할 수 있는 충분한 시간과 공간이 있다.

세상의 모든 이치(理致)가 그러한 법(法)이니......

1.4

현명(賢明)한 프로그래머는 도를 듣고 따른다. 보통(普通) 프로그래머는 도를 듣고 찾아본다. 멍청한 프로그래머는 도를 듣고 웃어 넘긴다.

그 웃음이 없었더라면 도는 존재하지 않았을 것이다.

가장 높은 음이 가장 알아듣기 힘든 법. 앞으로 나아감은 바로 후퇴(後退)하는 법. 위대(偉大)한 재능(才能)은 인생(人生)의 후반(後半)에야 나타나는 법. 가장 완벽(完璧)한 프로그램에도 버그는 존재(存在)하는 법.


고대(古代)의 도사(道士)들
권(卷) 2

도사(道士) 프로그래머 가라사대:
"사흘간 프로그래밍을 하지 않으면,
삶에 아무런 의미도 없어지느니라."


2.1

고대(古代)의 프로그래머들은 신비(神秘)롭고 심오(深奧)하도다. 우리는 그들의 사상(思想)을 감히 측정(測定)할 수 없도다. 그리하여 우리는 그들의 외양(外樣)을 묘사(描寫)할 수 밖에 없도다.

그들은 물을 건너는 여우처럼 빈틈이 없다. 전장(戰場)에 나선 장군(將軍)처럼 방심(放心)하지 않는다. 손님을 맞는 여주인(女主人)처럼 친절(親切)하다. 조각(彫刻)하지 않은 나무토막처럼 단순(單純)하다. 어두운 동굴 속의 검은 연못처럼 불투명(不透明)하다.

누가 감히 그들의 마음과 생각에 담긴 비밀(秘密)을 알아낼 수 있으리오?

답(答)은 오직 도(道) 속에 있을 뿐이다.

2.2

위대(偉大)한 도사(道士) 튜링은 어느날 그가 기계(機械)가 된 꿈을 꾸었다. 잠에서 깨어난 튜링이 탄식(歎息)하며 가라사대:

"나는 기계가 된 꿈을 꾸는 튜링인지, 튜링이 된 꿈을 꾸는 기계인지 알 지 못하노라!"

2.3

아주 큰 컴퓨터 회사(會社)에서 온 프로그래머가 소프트웨어 전시회(展示會)에 다녀와 상사(上司)에게 이렇게 말하였다: "다른 회사에는 어떤 프로그래머들이 일하고 있습니까? 그들은 멋대로 행동(行動)하고 외관(外觀)에는 신경쓰지 않습니다. 그들의 머리는 길고 텁수룩하며, 그들의 옷은 낡고 구겨졌습니다. 그들은 숙소(宿所)에서 만취(滿醉)해서 돌아다니며 제가 발표(發表)할 동안에 야유(揶揄)를 해 댔습니다."

상사(上司)가 가로되: "너를 전시회에 보내지 말았어야 했다. 그 프로그래머들은 세상사(世上事)를 초월(超越)한 사람들이니라. 그들은 삶을 어리석은 것으로 여기며, 우연(偶然)의 일치(一致)로 생각한다. 그들은 아무런 거리낌 없이 다닌다. 그들은 아무 것에도 신경쓰지 않으니, 그것은 그들이 프로그램만을 위해 살기 때문이다. 왜 그들이 사회적(社會的)인 관습(慣習) 따위에 신경을 쓰겠느냐?"

"그들은 도(道) 속에 살고 있느니라."

2.4

제자(第子)가 스승에게 묻기를: "저 프로그래머는 설계(設計)도 않고, 문서(文書) 작성(作成)도 않으며 자기(自己) 프로그램을 테스트해 보지도 않습니다. 하지만 모두 그를 세계(世界)에서 가장 뛰어난 프로그래머라고 칭송(稱頌)합니다. 그 이유(理由)가 무엇입니까?"

스승이 답하기를: "그 프로그래머는 도(道)를 깨달았느니라. 그는 더 이상 설계(設計)할 필요성(必要性)을 느끼지 않는다; 그는 시스템이 다운되도 화내지 않으며 그저 우주(宇宙)의 질서(秩序)를 거리낌없이 받아들이기 때문이다. 그는 더 이상 문서(文書)를 작성(作成)할 필요가 없다; 그는 다른 사람이 자기(自己)가 짠 코드를 이해하건 말건 더 이상 신경쓰지 않기 때문이다. 그는 테스트할 필요(必要)가 없다; 그가 작성(作成)한 프로그램은 모두 그 자체(自體)로 완벽(完璧)하며, 고요하고 또 우아(優雅)하다. 그의 프로그램은 모두 그 목적(目的)이 스스로 뚜렷하기 때문이다. 아, 그는 진정(眞情)으로 도(道)의 비의(秘意)를 깨달은 사람이니라."


설계(設計)
권(卷) 3

도사(道士) 프로그래머 가라사대:
"프로그램을 테스트하고 있을 때는
설계(設計)를 변경(變更)하기엔 이미 늦은 다음이니라."


3.1

옛날에 컴퓨터 전시회(展示會)에 참석(參席)한 사람이 있었다. 그는 매일 전시장(展示場)에 들어가면서 문 앞에 선 경비원(警備員)에게 이렇게 말했다:

"나는 상점(商店)을 터는 기술(技術)로 유명(有名)한 도둑이오. 미리 경고(警告)하지만 이 전시회(展示會)도 내 손길을 벗어나진 못할 것이외다."

그의 말에 경비원은 무척 신경이 쓰였다. 전시회에 출품(出品)된 컴퓨터 장비(裝備)의 가치(價値)들이 가히 수십억원에 이르렀기 때문이다. 경비원은 자칭(自稱) 도둑의 일거수일투족을 감시(監視)하였다. 하지만 그는 휘파람을 불면서 전시장에서 전시장으로 돌아다닐 뿐이었다.

자칭 도둑이 전시회장을 나갈 때 경비원은 그를 옆으로 데려가 몸수색을 실시하였다. 하지만 몸에는 아무 것도 없었다.

전시회의 다음날, 그는 다시 돌아와 경비원의 약을 올렸다: "나는 어제 엄청난 수확(收穫)을 올렸소. 오늘은 더 많은 것을 훔치고 말테요." 그래서 경비원은 그를 더욱 철저(徹底)히 감시하였다. 하지만 아무런 소득(所得)도 없었다.

전시회가 끝나는 날, 경비원은 호기심을 도저히 억누를 수가 없었다. "도선생(盜先生)," 그는 말했다, "나는 도저히 이해할 수 없소. 궁금증으로 인해 나는 밤잠을 이룰 수 없을 것 같군요. 제발 나를 깨우쳐 주시오. 당신이 훔친 것은 대체 무엇이오?"

도둑은 가볍게 미소를 지었다. "나는 아이디어를 훔치고 있소," 그가 말했다.

3.2

옛날에 한 스승 프로그래머는 늘 구조화(構造化)되지 않은 프로그램을 짰다. 한 제자(弟子)가 그를 흉내내기 위하여 구조화되지 않은 프로그램을 짜기 시작했다. 제자가 스승에게 자신(自身)의 성장(成長)을 평가(評價)해달라고 하자 스승은 프로그램이 구조화되지 않았다며 꾸짖었다: "뱁새가 황새를 따라가면 가랭이가 찢어지는 법이다. 구조를 초월하기 전에 먼저 도를 깨달아야 하느니라."

3.3

위(魏)나라의 조정(朝廷)에 한 프로그래머가 있었다. 위후(魏候)가 프로그래머에게 묻기를: "회계(會計) 프로그램과 운영체제(運營體制) 중에 설계(設計)하기 쉬운 것은 어느 쪽이요?"

"운영체제이옵니다." 하고 프로그래머가 답했다.

위후는 믿을 수 없다는 표정으로 반문하였다. "어찌 회계 프로그램처럼 하찮은 것이 운영체제의 복잡함을 능가(凌駕)한다는 말이요?"

"그렇지 않사옵니다." 라고 프로그래머가 대답했다. "회계 프로그램을 설계할 때는 프로그래머가 서로 다른 생각을 지닌 사람들을 조율(調律)해야만 하옵니다: 회계 프로그램이 어떻게 작동해야 하며, 보고서(報告書)는 어떤 양식(樣式)으로 출력(出力)되어야 하며, 세법(稅法)에는 어느 정도로 충실해야 하는지 각양각색으로 떠들기 마련이옵니다. 반면에 운영체제의 외양(外樣)에는 아무도 신경쓰지 않사옵니다. 운영체제를 설계할 때는 프로그래머는 기계와 아이디어의 가장 단순(單純)한 조화(調和)만 추구하면 되옵나이다. 이것이 운영체제가 설계하기 더 쉬운 까닭이옵니다."

크게 감탄(感嘆)한 위후(魏候)가 미소(微笑)를 지으며 다른 질문(質問)을 던졌다. "그렇구려, 그런데 어느 쪽이 더 디버깅하기 쉽소?"

프로그래머는 아무런 답(答)도 하지 못했다.

3.4

관리자(管理者)가 도사(道士) 프로그래머를 만나 새 애플리케이션의 요구사항(要求事項)을 담은 문서(文書)를 건네주었다. 관리자가 묻기를: "다섯명의 프로그래머를 투입(投入)한다면 시스템을 설계하는데 얼마나 걸리겠소?"

"일년(一年)이 걸릴 것입니다." 도사가 간단(簡單)하게 대답하였다.

"하지만 우리는 이 시스템이 지금 당장 필요하단 말이요! 프로그래머를 열명 투입하면 어떻겠소?"

도사는 인상을 지푸렸다. "그렇다면 이년이 걸릴 것입니다."

"프로그래머를 백명 투입한다면 어떻겠소?"

도사는 가볍게 한숨을 쉬며 답하였다. "그 경우에는 시스템이 결코 완성되지 않을 것입니다."


코딩
권(卷) 4

도사(道士) 프로그래머 가라사대:
"잘 짠 프로그램은 그 자체(自體)로 천국(天國)이며;
못 짠 프로그램은 그 자체(自體)로 지옥(地獄)이니라."


4.1

프로그램은 작고 민첩(敏捷)해야 하며, 그 서브루틴은 마치 진주(眞珠) 목걸이처럼 연결(連結)되어 있어야 한다. 프로그램의 내용(內容)과 정신(精神)은 일관적(一貫的)이어야 한다. 프로그램은 너무 작아도 너무 많아도 아니되며, 필요없는 루프나 필요없는 변수(變數)가 있어서는 아니되며, 구조(構造)가 없어도 아니되며 지나치게 경직(勁直)되어도 아니된다.

프로그램은 `최소(最少) 경악(驚愕)의 법칙(法則)'을 따라야 한다. 이 법칙이 무엇이냐고? 프로그램은 사용자를 최소로 놀라게 하는 방향(方向)으로 반응(反應)해야 한다는 뜻이다.

프로그램은 아무리 복잡(複雜)하더라도 하나의 개체(個體)처럼 동작해야 한다. 프로그램은 외관(外觀)보다는 내부의 논리(論理)에 따라 작성되어야 한다.

프로그램이 이러한 요구조건(要求條件)을 따르지 못하면 무질서(無秩序)와 혼란(混亂)이 발생한다. 이를 고치는 유일(唯一)한 방법은 프로그램을 다시 작성하는 것 뿐이다.

4.2

제자(弟子)가 스승에게 묻기를: "프로그램을 짰는데 때로는 작동하고 때로는 죽습니다. 프로그래밍의 법칙을 모두 따랐는데 왜 이런 일이 생기는지 도무지 알 수가 없습니다. 이유가 무엇입니까?"

스승이 답하기를: "너는 도를 깨닫지 못했기에 당황(唐慌)하는 것이니라. 사람들이 이성적(理性的)으로 행동하리라 믿는 것은 오직 바보뿐이다. 너는 어찌하여 사람이 만든 기계(機械)로부터 이성적인 행동을 바라느뇨? 컴퓨터는 결정성(決定性)을 흉내내는 것 뿐이다; 오직 도(道)만이 완전(完全)하다.

프로그래밍의 법칙은 일시적(一時的)이며, 오직 도(道)만이 영원(永遠)하다. 따라서 너는 깨달음을 얻기 위해 도를 명상(瞑想)해야 할 것이니라."

"하지만 제가 깨달음을 얻었는지 어떻게 알 수 있습니까?" 제자가 물었다.

"그때가 되면 프로그램이 제대로 돌아갈 것이다." 스승이 답했다.

4.3

스승이 도(道)의 본질(本質)을 제자에게 설명하고 있었다. "도(道)는 모든 소프트웨어--그것이 아무리 사소(些少)한 것일지라도--내(內)에 존재(存在)한다." 스승이 말했다.

"휴대용 계산기에도 도(道)는 존재합니까?" 제자가 물었다.

"그러느니라." 스승의 대답이었다.

"비디오 게임에도 도(道)는 존재합니까?" 계속 제자가 물었다.

"비디오 게임에도 도(道)는 존재하느니라." 스승이 말했다.

"개인용 컴퓨터의 도스에도 도(道)는 존재합니까?"

스승은 불편한 듯 헛기침을 하더니 자세를 조금 바꾸었다. "오늘의 수업(修業)은 여기까지다." 스승이 말했다.

4.4

프라이스 왕의 프로그래머가 소프트웨어를 짜고 있었다. 그의 손가락이 키보드 위에서 춤을 추었다. 프로그램은 에러 메시지 하나 없이 컴파일되었고 마치 봄바람처럼 가볍게 실행(實行)되었다.

"기가 막히군!" 프라이스가 감탄하며 말했다. "당신의 기술(技術)은 완전무결(完全無缺)하구려!"

"기술이라구요?" 프로그래머가 터미널에서 몸을 돌리며 말했다. "내가 따르는 것은 모든 기술을 넘어선 도(道)입니다. 내가 처음 프로그램을 작성하기 시작했을 때는 프로그램 전체(全體)가 한 덩어리로 보였습니다. 삼년(三年)이 지나자 더 이상 덩어리로 보이지 않았습니다. 대신 그 때부터 나는 서브루틴을 사용하기 시작했지요. 하지만 이제 내게는 아무 것도 보이지 않습니다. 내 존재(存在)는 형태(形態)없는 무(無) 속에 존재합니다. 나는 아무런 감각(感覺)도 느낄 수 없습니다. 내 정신(精神)은 아무런 계획(計劃)도 세우지 않고 자유(自由)롭습니다. 그저 본능(本能)의 지시(指示)에만 따를 뿐. 간단히 말해 내 프로그램은 스스로 작성되는 것입니다. 가끔 어려운 문제(問題)가 발생하는 것은 사실입니다. 어려움이 다가오는 것을 봅니다. 다가오면 속도(速度)를 늦춥니다. 그리고 조용히 관찰(觀察)합니다. 그리곤 코드에서 한 줄만 바꾸면 어려움은 마치 연기(煙氣)처럼 사라지고 말지요. 그리고나선 프로그램을 컴파일합니다. 나는 조용히 앉아 작업(作業)의 즐거움이 내 존재(存在)를 가득 채우도록 버려둡니다. 나는 잠깐 눈을 감고 명상(瞑想)한 다음 터미널을 끕니다."

프라이스 왕이 가로되, "내가 고용(雇傭)한 모든 프로그래머들이 그대처럼 현명(賢明)하기를!"


유지(維持)
권(卷) 5

도사(道士) 프로그래머 가라사대:
"프로그램의 길이가 세줄밖에 안되더라도,
언젠가는 손 볼 필요가 생기느니라."


5.1

조심스레 사용한 문의 경첩에는 기름을 칠 필요가 없다.
흐르는 물에는 이끼가 끼지 않는다.
소리도 생각도 진공(眞空)을 지나갈 수는 없다.
사용하지 않은 소프트웨어는 똥된다.

이들은 모두 위대(偉大)한 미스테리들이다.

5.2

관리자가 어느날 프로그래머를 불러서 지금 짜고 있는 프로그램이 언제 끝날 것 같은 지를 물었다. "내일까지 끝내지요." 프로그래머가 즉시 답했다.

"좀 비현실적(非現實的)인 얘기같군요." 관리자가 다시 물었다. "정말로 언제까지 끝낼 수 있습니까?"

프로그래머는 잠깐 생각을 하더니 말했다. "사실은 약간 추가(追加)하고 싶은 기능이 있습니다. 그걸 다 하려면 적어도 두 주(週)는 걸리겠는데요."

"그것도 사실 기대하기 힘든 것 같군요." 관리자가 툴툴대며 말했다. "그냥 프로그램이 완성되면 알려주시오."

프로그래머는 그러마고 답했다.

많은 해가 지나 관리자는 은퇴(隱退)하게 되었다. 은퇴식장에 가던 도중 그는 프로그래머가 터미날 앞에서 잠들어 있는 것을 보게 되었다. 그는 어제 밤을 새가며 프로그래밍을 했던 것이다.

5.3

어느날 제자 프로그래머가 간단한 재무(財務) 프로그램을 짜라는 지시를 받았다.

제자는 많은 날을 열심히 일했다. 스승이 그의 프로그램을 점검해보니 스크린 에디터와 범용(汎用) 그래픽 처리 루틴 몇 가지와 인공지능(人工知能)을 응용한 인터페이스가 구현되어 있었다. 하지만 어디에도 재무와 관련된 기능은 없었다.

스승이 이에 대해 묻자, 제자가 시큰둥하게 대답했다. "그렇게 급하게 재촉하지 마세요. 언젠가는 재무에 관련된 기능을 넣을테니까요."

5.4

훌륭한 농부(農夫)가 자신이 심은 쌀 한 톨을 소홀히 하는 것을 보았는가?
훌륭한 선생(先生)이 반(班)에서 가장 어리석은 학생이라고 무시하는 것을 보았는가?
훌륭한 아버지가 아이를 굶주리게 하는 것을 보았는가?
훌륭한 프로그래머가 코드의 유지보수(維持補修)를 거부하는 것을 보았는가?


관리(管理)
권(卷) 6

도사(道士) 프로그래머 가라사대:
"프로그래머는 많이 고용(雇傭)하고 관리자(管理者)의 수(數)는
줄여라 -- 생산성(生産性)이 절로 향상될 것이다."


6.1

관리자가 끝도 없는 회의(會議)를 하면 프로그래머는 게임을 짠다. 회계사가 사분기(四分期) 이익에 대해 떠들면 개발 예산은 삭감될 위기에 처한다. 수석 과학자가 푸른 하늘을 논하면 구름이 몰려든다.

아, 이것은 진정한 프로그래밍의 도(道)가 아니다.

관리자가 결론(結論)을 내면, 게임 프로그램은 잊혀진다. 회계사가 장기(長期) 계획을 세우면 조화(調和)와 질서(秩序)가 회복된다. 수석 과학자가 당면(當面) 문제에 신경쓰기 시작하면 그것은 곧 해결된다.

아, 이것이 진정한 프로그래밍의 도(道)이다.

6.2

프로그래머는 왜 생산성(生産性)이 낮은가?
그들의 시간이 회의로 낭비(浪費)되기 때문이다.

프로그래머가 왜 툴툴거리는가?
관리자가 지나치게 참견하기 때문이다.

프로그래머가 왜 하나씩 회사를 떠나는가?
지쳤기 때문이다.

무능력(無能力)한 관리자 밑에서 일하는 프로그래머는 자신의 직업(職業)을 소중히 여기지 않는다.

6.3

관리자가 해고(解雇)될 위기에 쳐했다. 하지만 그 밑에서 일하던 프로그래머가 새로운 소프트웨어를 개발하여 큰 성공(成功)을 거두었다. 결과적으로 관리자는 자리를 지킬 수 있었다.

관리자는 보너스를 주려고 하였지만, 프로그래머는 거절(拒絶)하였다. 프로그래머 가로되. "나는 이 프로그램이 재미있다고 생각했기 때문에 시작했을 뿐입니다. 따라서 나는 아무런 보상도 바라지 않습니다."

이 말을 들은 관리자가 말하기를, "이 프로그래머는, 비록 비천(卑賤)한 자리에 있으나, 종업원의 맡은 바 책무(責務)가 무엇인지 잘 알고 있다. 그를 보조 관리자로 승진시키도록 하자!"

그러나 이 말을 들은 프로그래머는 다시 한 번 거절하였다. "나는 프로그램을 짤 수 있기 때문에 존재합니다. 만일 승진한다면 다른 사람의 시간을 갉아먹게 될 뿐입니다. 이제 가도 됩니까? 지금 짜고 있는 프로그램이 하나 있거든요."

6.4

관리자가 프로그래머들을 찾아가서 말하기를: "당신의 출근 시간을 조정하기로 했소. 이제부터 아침 9시에 나오고 5시에 퇴근하도록 하시오." 이 말을 들은 프로그래머들은 모두 분노(忿怒)하였고, 몇몇은 즉석에서 회사를 그만두었다.

그래서 관리자가 말하기를: "좋아요. 그렇다면 작업 시간을 자유롭게 정하도록 하시오. 맡은 프로젝트를 스케쥴에 맞게 끝내기만 하면 상관하지 않겠소." 만족한 프로그래머들은 이제 정오에 출근하여 이른 새벽까지 일했다.


운용(運用)의 묘(妙)
권(卷) 7

명인(名人) 프로그래머 가라사대:
"사장(社長)에게 컴퓨터 프로그램을 보여줄 수는 있다.
그러나 그가 컴맹에서 벗어나게 할 수는 없다."


7.1

제자가 스승에게 묻기를: "동방(東方)에는 `본사(本社)'라고 부르는 거대(巨大)한 트리 구조가 있습니다. 그것은 부사장과 관리자들로 지나치게 비대(肥大)해졌습니다. 그것은 `이리 가라' 또는 `저리 가라'는 메모를 무수히 내려 보냅니다. 하지만 아무도 그 메모의 진정한 뜻이 무엇인지는 이해하지 못합니다. 그 가지에는 매년(每年) 새로운 이름들이 나붙지만 결국엔 아무런 소용도 없지요. 어떻게 이렇게 부자연스러운 존재가 있을 수 있습니까?"

스승이 답하여 가로되: "너는 이 방대(尨大)한 구조의 존재를 깨달고, 거기에 아무런 이성적(理性的)인 목적(目的)도 없다는 사실에 당황하고 있는 것이다. 본사의 그 끊임없는 방향 전환에서 아무런 즐거움도 느끼지 못하겠느냐? 우리를 보호하는 가지 아래서 아무런 방해도 받지않고 프로그래밍할 수 있는 즐거움을 깨닫지 못했느냐? 왜 본사의 존재가 무가치하다는 데 신경을 쓰는 것이냐?"

7.2

동방(東方)에는 어떤 물고기보다도 더 큰 상어가 있다. 이 상어는 대붕(大鵬)이라는 이름의 새로 변한다. 이 새가 일으키는 바람은 하늘을 가득 채우는 구름과도 같다. 대붕이 땅을 가로지르면 본사(本社)에서 보내는 메시지를 가져 온다. 이 메시지는 갈매기가 해변에 떨어뜨리는 똥처럼 프로그래머의 수중에 떨어진다. 그 후 대붕은 바람을 타고 푸른 하늘을 등에 업은 채 집으로 돌아간다.

초보(初步) 프로그래머는 놀란 눈으로 대붕을 바라본다. 이해(理解)할 수 없기 때문이다. 보통(普通) 프로그래머는 대붕을 두려워한다. 대붕이 가져오는 메시지가 무섭기 때문이다. 도사(道士) 프로그래머는 터미날 앞에 앉아 일을 계속한다. 대붕이 다녀간 것을 알아차리지 못하기 때문이다.

7.3

상아탑(象牙塔)에 사는 위대한 마법사(魔法士)가 새로운 발명품을 스승 프로그래머에게 가져왔다. 마법사는 거대한 검은 상자를 밀며 스승의 사무실로 들어왔다. 스승은 조용히 그를 지켜볼 뿐이었다.

"이것은 통합적으로 분산된 범용(汎用) 워크스테이션이오." 마법사가 자랑스레 말하기 시작했다. "인간환경공학적으로 설계된 독점 운영체제와 제6세대 언어, 그리고 복수의 최신 사용자 인터페이스를 탑재하고 있지요. 이 워크스테이션을 제작하기 위해 수백명의 조수들이 몇 년이나 일해야 했소이다. 멋지지 않습니까?"

스승은 눈썹을 약간 치켜뜨며 대답했다. "정말 멋지군요."

마술사는 계속 말한다. "본사에서는 모든 사람들이 이 워크스테이션을 이용해서 새로운 프로그램을 개발해야 한다고 지시했소이다. 그러시겠습니까?"

"물론이지요." 스승이 대답했다. "워크스테이션을 즉시 컴퓨터실로 옮겨두겠습니다!" 마법사는 만족하여 자신의 탑으로 돌아갔다.

며칠 후 제자가 스승 프로그래머의 사무실로 들어와서 물었다. "새로 짠 프로그램의 리스트가 어디있는지 모르겠어요. 혹시 어디 있는지 아세요?"

"그래." 스승이 대답했다. "컴퓨터실에 있는 검정색 상자 위에 있다."

7.4

도사 프로그래머는 프로그램에서 프로그램으로 아무런 두려움 없이 옮겨다닌다. 관리자가 어떻게 변해도 그의 위치는 변하지 않는다. 그는 프로젝트가 취소되더라도 해고되지 않는다. 왜 그럴까? 도사 프로그래머는 도(道)로 충만(充滿)하기 때문이다.


하드웨어와 소프트웨어
권(卷) 8

도사(道士) 프로그래머 가라사대:
"바람이 불지 않으면, 풀은 움직이지 않는다.
소프트웨어가 없으면 하드웨어는 쓸모가 없다."


8.1

제자가 스승에게 묻기를: "한 컴퓨터 회사는 다른 회사들에 비해 월등히 큽니다. 난장이들 사이에 선 거인(巨人)처럼 보입니다. 이 회사의 한 부서(部署)만으로도 산업(産業)을 일으킬 수 있을 정도입니다. 왜 그렇습니까?"

스승이 답하여 가로되, "왜 그런 어리석은 질문을 하는가? 그 회사는 크기 때문에 큰 것이니라. 만일 그 회사가 하드웨어만 만들었다면 아무도 사지 않았을 것이다. 그 회사가 시스템의 유지보수만 했다면, 사람들은 그 회사를 하인(下人)처럼 다루었을 것이다. 하지만 그 회사는 이 모든 일을 하기 때문에 사람들은 그 회사를 신(神)으로 여기는 것이다! 그들은 남들과 경쟁하려 들지 않기 때문에, 아무런 어려움없이 세상을 정복하는 것이다."

8.2

어느날 스승이 제자의 곁을 지나치고 있었다. 스승은 제자가 휴대용 게임기에 열중해 있음을 알았다. "미안하지만 내가 좀 볼 수 있을까?" 스승이 물었다.

제자는 깜짝 놀라 게임기를 스승에게 건네주었다. "이 게임은 기초(基礎), 보통(普通), 고난도(高難度) 등 세 단계로 이루어져 있구나." 스승이 말했다. "하지만 이런 게임기에는 모두 또다른 레벨이 하나 더 존재하고 있다. 이 레벨에서는 게임기가 사람을 정복하려 들지 않으며, 사람도 게임기를 정복할 수 없다."

"대단하십니다, 스승님." 제자가 탄성을 질렀다. "어떻게 게임기에 또다른 숨겨진 레벨이 있다는 사실을 알아내셨나이까?"

스승은 게임기를 땅에 떨어뜨리더니 발로 밟아버렸다. 그러자 갑자기 제자는 깨달음을 얻었다.

8.3

개인용 컴퓨터로 작업을 하는 프로그래머가 있었다. 어느날 그는 자신의 작업실에 놀러온 메인프레임 프로그래머에게 자랑하기 시작했다. "나를 좀 보라구. 나 혼자만 쓸 수 있는 운영체제와 화일 저장장치도 있어. 컴퓨터 자원(資源)을 다른 사람과 나누어 쓸 필요도 없지. 소프트웨어는 성능이 우수할 뿐 아니라 쓰기도 편해. 왜 메인프레임처럼 불편한 환경에서 일을 하는 거지?"

그러자 메인프레임 프로그래머는 자신의 시스템을 친구에게 설명하기 시작했다. "메인프레임은 컴퓨터실에서 명상(瞑想)하는 고대(古代)의 현인(賢人)처럼 앉아 있다네. 그 디스크 드라이브는 마치 거대한 기게의 바다처럼 서로 연결되어 있지. 소프트웨어는 다이아몬드처럼 다양한 면(面)을 지니고 있으며, 원시림(原始林)처럼 서로 얽혀있네. 각각 독특한 프로그램들은 마치 거세게 흐르는 강물처럼 시스템으로 들어왔다 나가지. 그게 내가 메인프레임을 좋아하는 이유라네."

개인용 컴퓨터 프로그래머는 이 말을 듣고 할 말을 잃었다. 하지만 두 프로그래머는 죽을 때까지 친하게 지냈다.

8.4

갠지즈강으로 가던 하드웨어가 소프트웨어를 만났다. 소프트웨어 가로되, "너는 음(陰)이요 나는 양(陽)이로다. 우리가 함께 여행한다면 크게 유명해지고 많은 돈을 벌 수 있음에 틀림이 없도다." 그리하여 그들은 한쌍이 되어 세상을 정복할 야심을 품게 되었다.

그들은 찢어진 누더기를 입고 가시나무 지팡이를 집은 채 절름거리는 펌웨어를 만나게 되었다. 펌웨어가 그들에게 가로되, "도는 음과 양을 넘어 존재하느니라. 도는 호수(湖水)의 물처럼 조용하고 움직이지 않느니라. 도는 명성(名聲)을 구하지 않으며, 따라서 아무도 그 존재를 알지 못하느니라. 도는 부(富)를 구하지 않으니, 도는 그 자체(自體)로 완전(完全)하기 때문이니라. 도는 시간과 공간을 넘어 존재하느니라."

크게 부끄러워진 소프트웨어와 하드웨어는 집으로 돌아가고 말았다.


발문(跋文)
권(卷) 9

마침내 도사(道士) 프로그래머 가라사대:
"하산(下山)할 때가 되었다."