컴퓨터 이야기 #3 – 계산기에서 컴퓨터로

지난번 컴퓨터 이야기 #1에서 다룬 것처럼 버네버 부쉬(Vannevar Bush)의 막대기들로 이루어진 아날로그 계산기는 1940년대까지 전쟁터를 포함한 전세계 곳곳에서 사용됐다. 그리고 곧 클라우드 섀년(Claude Shannon)에 의해 수식계산뿐 아니라 논리연산까지도 기계로 표현할 수 있음을 알게됐다. 1940년대는 숨막히는 2차대전의 열기만큼, 계산기에서 컴퓨터로 넘어가고자 하는 과학자들의 열정이 뜨거운 시대였다. 이 시기 넘어야했던 가장 큰 두가지 산은 이렇게 요약할 수 있다:

1. 기계식 계산에서 전자식으로 발전

2. 계산기에서 사람처럼 논리를 수행하는 진짜 컴퓨터로의 발전 (이를 위해선 if/else와 같은 조건문, for 와 같은 반복문 수행이 필요하다)

두가지 산을 가까스로 넘은 첫 발명품이 바로 우리가 어렸을적 배운 최초의 컴퓨터 에니악이다. 여기서 한가지 짚고 넘어갈 점은 사람들마다 인류 최초의 컴퓨터가 무엇이냐에 의견이 다르다는 점이다. 혹자는 1820년대 디자인된 찰스 베비지(Charles Babbage)의 미분방정식 계산기가 최초라 주장하고, 최근에 와서는 에니악보다 5년이 앞섰다고 밝혀진 독일의 Z3 머신 (Konrad Zuse)이 최초다라는 주장도 있다. 하지만 컴퓨터를 정의하는 여러가지 관점들 — 즉 막대기들로 이루어진 기계식도 컴퓨터냐? 아니면 계산기도 컴퓨터냐? — 에 따라 다른 답이 나오기 때문에 정답은 없다고 생각한다. 다만 개인적으로도 그렇고 많은 학자들도 동의하는 것은, 현대식 컴퓨터를 처음 상상한 사람은 지난회 소개한 앨런 튜링 (Alan Turing)이라는 사실이다.

거인의 뇌 에니악

80년대 초등학교를 다닌 사람에게 “세계 최초 컴퓨터는?” 이라는 질문을 던지면 자동으로 “에니악!” 이라는 답이 튀어나올 것이다. 그리고 그 순간 머리속엔 괴물같은 거대한 검은 기계와 그 아래 작게 서있는 가운입은 과학자의 이미지가 그려질 것이다. 그렇게 컴퓨터를 소개해야했던 그 시대의 교과서가 한편으론 좀 씁쓸하다. 차라리 그 당시에 한창 히트하던 애플 컴퓨터를 소개했으면 좀 더 컴퓨터가 친숙하게 와닿았을걸… 아무튼 교과서가 거짓말하진 않았다. 실제 에니악의 생김새는 그 당시 사람들에게도 “거인의 뇌” 라고 불릴만큼 쇼킹한 모습이었으니 말이다.

에니악은 1943년 펜실베니아 대학교에서 만난 30대의 물리학자 마우쿨리(John Mauchly)와 20대의 전기과 대학원생 에커트(J. Presper Eckert)에 의해 만들어진 최초의 전자식 범용(all-purpose) 컴퓨터였다. 에니악은 당시 포탄의 궤적계산을 위해 미 육군이 추진한 프로젝트였다. 에니악은 과학 천재(예를들어 튜링)에 의한 놀라운 상상의 결과물이라기 보단,  노력파 엔지니어 마우쿨리와 에커트의 열정이 낳은 작품이라고 해야 적절할 것같다. 이전에도 비슷한 형태의 전자식 계산기, 예를 들어 아이오와 대학의 ABC 컴퓨터등이 이미 만들어졌고 에니악의 개발자들은 이것들을 참조했으니 말이다. 하지만 에니악이 대단한 것은 그때까지 현실성 없어보였던 진공관 컴퓨터를 실제 유용한 계산에 쓰일수 있을 정도로 성능과 안정성면에서 혁신시켰기 때문이다.

왼쪽 그림은 실제 에니악에 쓰인 진공관인데, 1940년대까지 진공관은 라디오나 TV등의 전자제품에 사용된 기본 부품이었다. 기계식 계산기에서는 막대의 회전 각도에 따라 숫자를 표현했다면 진공관에선 전류의 흐름 여부와 강도에 따라 숫자를 표현할 수 있고, 여러개의 진공관을 배열해서 덧셈등을 수행하는 기본 연산기를 제작할 수 있었다. 하지만 진공관의 문제는 쉽게 타버리는 불안정성에 있었다. 에니악은 17,468개의 진공관으로 이루어졌는데 한개의 진공관이 탈때마다 컴퓨터는 정지했고, 사람이 들어가 진공관을 교체해야만 컴퓨터를 다시 가동할 수 있었다. 에니악의 완성전까지 사람들이 프로젝트의 성공을 의심한 이유가 여기에 있었다.

하지만 마우쿨리와 에커트는 뛰어난 전기설계능력과 근성을 발휘해, 결국 에니악을 미육군이 흡족해할만한 수준으로 완성했고, 에니악은 1955년까지 수소폭탄 설계나 포탄의 궤도계산을 위해 사용된다. 에니악의 성능과 안정성을 요약하면 이렇다.

  • 평균 이틀에 한번 꼴로 컴퓨터가 멈췄고, 진공관을 가는데엔 15분 정도 걸렸다.
  • 초당 5,000번의 덧셈/뺄셈과 357번의 곱셈을 수행할 수 있었다 (참고로 아이폰 3GS는 약 20억번의 곱셈을 수행할수 있다; 즉 에니악보다 5천만배 빠르다)


에니악의 결정적 한계는 프로그래밍에 있었다. 새로운 계산프로그램을 에니악에 집어넣기 위해선 위 그림처럼 사람 (6인의 여성)이 직접 케이블을 연결하고 스윗치를 On/off 하는 과정을 거쳐야 했고 흔히 며칠이 소요됐다. 즉 새로운 소프트웨어를 돌리기위해 사람이 기계를 고쳐야 했던건 버네버 부쉬의 아날로그 계산기와 마찬가지였다. 이것은 튜링의 상상과는많이 달랐다. 튜링머신에선 소프트웨어를 테이프에 텍스트로 쓰고 범용 튜링머신(하드웨어)이 텍스트로 기록된 소프트웨어를 수행한다. 고쳐야 하는 계산기와 이론적인 튜링머신, 그 사이 간극을 연결한 “마법사”가 바로 폰 노이먼이다.

마법사 폰 노이먼 (John Von Neumann, 1903-1957)

폰 노이먼을 도대체 어떻게 설명할 수 있을까? 지금 블로그의 모티브가 된 책 [1]에선 그를 “마법사 (Wizard)” 라고 표현했는데, 그 보다 더 적절한 표현을 찾을수 없을것 같다. 헝가리 출신으로 미국에서 활동한 유대인 학자. 그의 동료 학자들은 그를 “마지막 위대한 수학자”, “두려운 능력자”, 혹은 “인류보다 고등한 존재의 뇌를 가진 사람”등으로 표현했다. 폰 노이먼은 건드리지 않은 현대 과학 분야가 없을 정도로 많은 분야에 빛나는 업적을 남긴다.
예를들어:

  • 경제학에 지대한 영향을 미친 게임이론을 창시
  • 양자역학과 논리학(logic), 집합론(set theory)에 결정적 공헌
  • 맨하탄 프로젝트에서 핵무기의 폭발에 관한 수학 모델을 세우고 계산
  • 현대식 컴퓨터 구조를 수립 (폰 노이먼 구조라 흔히 불림)

그 시대 폰 노이먼의 무게는 프린스턴의 고등과학원이 설립되며 초빙된 4인중 한명(아인슈타인, 괴델과 함께)이었다는 사실에서 쉽게 짐작할 수 있다. 1930년 독일의 수학학회에서 무명의 괴델은 “라이프니츠의 꿈은 이룰 수 없음”을 증명하는 이론을 내놓았는데, 그 당시 그 의미를 다른 수학자들 누구도 이해하지 못할때, 폰 노이먼은 그 자리에서 “논리학은 이제 끝장을 봤구나” 인식하고 다신 논리학쪽으로 고개를 돌리지 않았다.

폰 노이먼은 천재성에 더해 어쩌면 운이 좋은 사람인지도 모른다. 왜냐하면 그는 수학자로서 당시 비교적 알려지지 않은 튜링의 논문을 읽고 그 중요성을 간파한 소수의 사람중 하나였고, 동시에 맨하탄 프로젝트의 멤버로 에니악 프로젝트에 참여해 실물 컴퓨터를 경험한 특혜받은 인물이었기 때문이다. 즉 튜링의 이상적인 컴퓨터와 고쳐야 하는 계산기 ‘에니악’ 두가지를 모두 이해한 천재에게, 현대 컴퓨터의 첫 실물 모형 EDVAC의 개발은 어쩜 너무 당연한 수순이었는지도 모른다. 그는 에니악 다음 모델의 컴퓨터 EDVAC을 디자인한 리포트 “First Draft of a Report on the EDVAC (1945)”를 쓰고  현대식 컴퓨터의 아버지라는 명예를 얻는다. 그가 쓴 리포트는 실물 EDVAC뿐 아니라 곧 미국과 유럽에서 에니악 다음 세대의 컴퓨터 디자인에 기본 모델이 되었다. 리포트는 이런 내용을 담고 있다.

  1. 컴퓨터의 메모리에 프로그램과 데이터를 모두 저장해서, 사람의 개입없이 자동으로 프로그램의 명령어를 하드웨어가 수행하도록 한다 (stored program). 에니악은 사람이 케이블과 스위치를 조작해서 프로그램 해야 했다.
  2. 이진법을 사용한다 (에니악은 10진법).
  3. Program Counter 등의 레지스터를 사용한다.
  4. 수리연산 (덧셈, 뺄셈등)들의 회로 설계

리포트의 가장 중요한 내용은 프로그램이 데이터와 함께 메모리에 올려진다는 stored program 이었고 이는 프로그램이 테이프에 기록된다는 튜링 머신의 실물구현이었다. 아인슈타인에 버금가는 사회적 존경을 받았던 폰 노이먼은 불행한 두 천재 튜링, 괴델과는 다른 삶을 살았다. 명성 얻기를 주저하지 않았던 그는 그의 리포트에 튜링의 영향에 대해 전혀 밝히지 않는다. 후세의 연구에 의해 그가 튜링의 논문에서 직접적으로 아이디어를 얻었음이 발견됐을 뿐이다. 폰 노이먼이 프린스턴에서 박사를 마친 튜링에게 그의 조교 자리를 제안했던 사실은 그가 얼마나 튜링에게 관심이 있었는지를 말한다. 또한 폰 노이먼은 마우쿨리와 에커트와 함께 아이디어를 구상했으면서도 단독 저자로 리포트를 작성했다. 이로인해 이들 사이에선 훗날 특허 싸움을 치르기도 한다. 이상적인 컴퓨터와 현실적인 기계 사이의 간극을 연결한 폰 노이먼, 하지만 그 둘 모두를 자신의 업적으로 드러내고 싶었던 것은 지나친 욕심이 아니었을까?

튜링 (Alan Turing) – 진정한 소프트웨어의 아버지

튜링은 수학자로서 가상의 튜링머신을 상상하는 것에 그치지 않았다. 영국으로 돌아가 EDVAC과는 다른 형태의 컴퓨터 ACE (1946)를 구체적으로 하드웨어 레벨까지 설계하고 심지어 11,200 파운드라는 구현 비용까지 산정했다. 하지만 비전없는 영국 정부 (심지어 그를 자살로까지 내몰았으니)에 의해 ACE 프로젝트는 이리저리 표류하고 우울한 성격의 튜링을 더 좌절시키고 만다.

폰 노이먼이 비록 20세기의 빛나는 천재이긴 하지만 컴퓨터, 특히 소프트웨어의 진짜 아버지는 튜링이라고 할 수 있다. ACE 컴퓨터는 하드웨어의 역할은 최소한으로 하고 소프트웨어가 복잡한 연산을 수행하는 구조인데, 70년대 들어 개발된 RISC 프로세서가 그 연장선이라 할 수 있다. 폰 노이먼이 컴퓨터의 역할을 빠른 계산기 정도로 규정하고, 컴퓨터 프로그래밍을 단순 노동으로 치부한 것은 그가 EDVAC에 어셈블러 (프로그래밍 도구로 사람의 언어를 이진법 코드로 변환) 를 구현하려한 그의 학생에게 화를 냈다는 일화에서 잘 드러난다 [2]. 반면 튜링은 1947년 ACE 컴퓨터를  설명하며 사람과 대결하는 체스 프로그램을 예제로 소개해, 아직 실물 컴퓨터를 구경조차 못해본  수학자들을 놀라게 했다(이 당시엔 O/S, 컴파일러등 소프트웨어라는 개념 자체가 존재하지 않았다). 50년이 지난 1996년에 드디어 딥블루 컴퓨터가 체스 챔피언을 이겼다는 사실은 튜링의 비전 그 깊이를 알게 한다. 튜링에게 있어 컴퓨터는 사람처럼 생각하고 사람과 대화할 수 있는, 가리워져 있으면 사람인지 컴퓨터인지 구별할 수 없는 지적 존재였던 것이다. 이 글의 처음 에니악 사진을 다시 한번 보고 튜링을 생각한다. 그의 상상력의 깊이에 무한한 감사를 표현하고 싶다.

– 박상민 http://twitter.com/#!/sm_park

[1] The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal
[2] The Universal Computer: The Road from Leibniz to Turing by Martin Davis

컴퓨터 이야기 #2 – 천재들의 행진

2차대전을 둘러싼 시기(1940-60)는 아마도 “천재들의 행진”이라고 불러도 될만큼 컴퓨터 역사에 큰 발자취를 남긴 거인들이 가득하다. 전쟁이 조성해 놓은 급박한 분위기가 천재들의 상상력에 불을 지폈고, 때마침 히틀러의 나치즘을 피해 미국, 특히 보스톤 지역으로 몰려든 유럽의 천재들 (예: 아인슈타인, 커트 고델, 폰 노이먼..)은 MIT, 하버드를 중심으로 서로 아이디어를 나누고 토론하며 현재까지도 영향력을 미치는 학문 분야들을 만들어간다. 지난번 포스팅 [1]에서 다룬 인물 버네버 부쉬가 지휘하는 가운데, 미국 정부와 육/해/공군은 독일을 위협할 수 있는 잠재적 기술들에 아낌없이 연구자금을 지원했고, 이 당시에 연구됐던 기술들은 실제 무기로 개발되기도 했지만, 훗날 많은 학문 분야들과 IT산업의 근본을 이루었다는 점에서 더 큰 의미가 있었다.

컴퓨터의 개념과 결과물이 막 태어나는 시점이었던 1930-1945년의 특징은 수학, 철학, 인지학(두뇌를 다루는 학문), 심지어 생물학에 이르기까지의 분야를 섭렵했던 천재들이 혁명을 주도했다는 사실이다. 즉 단순히 기계의 조합, 계산기 수준의 생각으로는 컴퓨터의 탄생을 이룰 수 없었다. 17세기 라이프니츠의 꿈 (무엇이든 대답할 수 있는 꿈의 방정식)을 이해하고, 더 나아가 사람의 본질과 생각(reasoning)의 원리에 대해 끊임없이 고민하는 사람들이 컴퓨터를 상상해냈다. 그들에게는 컴퓨터란 독일군에게 보낼 포탄의 정확한 궤적을 계산하는 계산기 수준이 아닌, 사람의 마음(mind)을 심을 수 있는 기계였다. 그 천재들 중 하나가 노버트 와이너(Norbert Weiner) 였다.

노버트 와이너 (Norbert Weiner) (1894-1964)

한국에 천재소년 송유근이 있다면, 20세기 미국엔 노버트 와이너가 있었다. 와이너의 천재성은 그야말로 대단했다. 14세에 대학교를 졸업했고 17세에 하버드에서 수학 박사학위를 받는다. 그리고 그 과정에 수학, 동물학, 철학을 모두 공부했다. 학위를 마치고 유럽으로 날아가 스승으로 삼은 사람들의 면면도 대단하다. 지구 최고의 철학자 버틀랜드 러쎌 (Bertrand Russell), 수학자 데이빗 힐버트 (David Hilbert), 하디 (G.H. Hardy) 등등. 한마디로 20세기 모든 지식이 그의 머리안에 있었다고 해도 과언이 아닐것이다. 천재성 만큼이나 기행도 많았던 그는, 갑자기 노동문제에 관심이 생겨 기자로 일한다거나 전쟁시기엔 애국심때문에 군에 지원 복무하기도 하는등 “신동 증후군”을 톡톡히 앓았다. 그는 MIT의 수학과 교수로 평생을 연구에 몰두한다.

와이너가 컴퓨터의 발전에 미친 공적은 이것이다라고 하나를 내세우긴 힘들다. 그의 업적은 “피드백”이라는 개념을 공식적으로 도입한 학문분야 싸이버네틱스(Cybernetics)라 할 수 있는데, 싸이버네틱스의 피드백 컨트롤 개념은 훗날 인공지능, 인지학, 철학등에 걸쳐 다양하게 영향을 미친다. 말하자면 와이너는 인공지능과 로봇의 선구자쯤으로 요약할 수 있겠다.  피드백 컨트롤의 개념은 아래 그림처럼 아주 간단하다. 어떤 대상 (컴퓨터, 사람, 동물 등등. 그림에선 Process)에 인풋(Input)을 가하게 되면 그 대상은 그 인풋에 영향받아 측정할 수 있는 결과(Output)를 보인다. 그때 인풋과 아웃풋 사이에 대상의 행동을 제어할 수 있는 제어기(그림에선 Comparator)를 달아서 원하는 방식으로 대상을 제어하는 것이다.

이 간단한 피드백 루프(loop)의 응용은 아주 광범위한데, 예를 들어 실내 온도 조절기엔 “아웃풋=온도, 인풋=냉난방기를 적용하게 되면, 제어기는 자동으로 원하는 온도를 맞추기 위해 냉난방기를 동작시키게 된다. 나아가 뉴럴 네트워크(Neural Network)이라는 인공지능 이론이 여기에서 출발한다. 사람의 뇌 기본은 뉴론(neuron)으로 이루어져있고 각각의 뉴론은 전자 신호를 인풋으로 받고 뉴론의 프로그램에 따라 다시 전자신호를 아웃풋으로 배출한다는 개념이다. 그리고 왼편 그림처럼 수도 없이 많은 뉴론들이 서로 통신하며 인풋/아웃풋으로 엮인 큰 네트웍을 형성한 것이 바로 인간의 뇌라는 개념이다. 이를 구현하면 곧 궁극의 AI 머신이 된다.

와이너는 인웃/아웃풋, 통신(Communication), 그리고 제어기(Controller)를 수학으로 표현(모델링)할 수 있음을 보였다. 그리고 이는 단지 전자기술 한 분야를 넘어 생물학, 인문학에 이르기까지 깊은 의미를 갖는다. 왜냐하면, 세상의 거의 모든 존재들은 인풋-아웃풋, 그리고 그 사이에 위치해서 인풋을 아웃풋으로 바꾸어주는 제어기로 표현할 수 있기 때문이다. 예를들어 지금 노트북 스크린을 보는 내 눈은 “인풋”, 그리고 키보드를 두드리는 내 손은 아웃풋, 둘 사이의 “보고 두드리는” 속도를 조절하는 뇌는 “제어기”라는 의미이다. 일종의 목적을 갖고 인풋/아웃풋을 조절해 주는 제어기, 이것을 현실에서 구현해 내는 것은 바로 우리 두뇌와 동일한 일을 하는 인공지능 기계를 만드는 일이다. 이렇게 와이너가 정의한 제어 이론은 현대의 전자공학, 인지과학, 인공지능등의 분야에 기초를 마련했다.

고독한 천재 튜링 (Alan Turing) (1912-1954)

애플 컴퓨터의 로고 “한입 베어문 사과”가 튜링이 자살하면서 베어 물었던 사과에서 비롯됐다는 이야기가 있다. 그게 사실인지 아닌지는 확인할 방법이 없지만, 애플을 좋아하는 사람들은 그 이야기가 사실이기를 바란다. 컴퓨터 역사에서 튜링만큼 매력적인 인물이 없기 때문이다. 컴퓨터의 아버지라 불릴만한 발견을 했고, 독일군의 암호를 해독하는 일을 했으며, 인공지능의 선구자 였던 사실들, 그보다 호사가들의 마음을 더 끄는 것은 그가 바로 게이였고, 영국정부로부터 강제로 호르몬 주사를 맞은 사실, 그리고 그로 인한 수치심에 독사과를 먹고 42세라는 젊은 나이에 자살한 비극 때문일 것이다. 어쩌면 그렇게 비극적인 죽음을 맞지 않았다면 컴퓨터의 역사는 다르게 쓰여지지 않았을까 생각이 든다. 말년에 그가 몰두한 연구는 인공지능이었고, 최근에 iPhone의 Siri가 큰 반응을 불러일으키는 것을 보면 말이다.

튜링이 컴퓨터의 아버지라 불리는 것은 그가 상상한 튜링 머신 때문이다. 튜링 머신은 이전 포스팅 [2] 에서도 소개했는데, 형체를 가진 기계가 아니다. 튜링이 고안한 일종의 가상의 기계인데, 사람이 사고(thinking)할때의 과정을 표현한 모델이다. 튜링 머신은 정보를 읽고 쓸수 있는 무한한 길이의 테이프 (카세트 테이프라고 생각해도 OK), 테이프 좌,우로 움직이며 정보를 읽거나 쓰는 헤드, 그리고 언제 어떻게 테이프 내용을 업데이트 할지를 결정하는 제어로직(현대용어론 프로그램)으로 구성되어 있다.

튜링머신을 이해하기 위해 간단한 곱셈을 예로 들어보자. 15×24 라는 곱셈을 할때, 우리는 이런 과정을 거친다 (암산이 가능한 천재들도 한번 따라해 주시길..).
    15
x  24
——–
60
+300
——–
=360

처음에 테이프엔 왼쪽 맨 윗처럼 문제만 써있다. 제어 로직엔 오른쪽처럼 우리가 알고 있는 곱셈 방법이 프로그램 돼있다. 헤드는 테이프 내용을 읽어가며 곱해질 숫자의 맨 끝자리 수(4)를 찾은 다음 그 전 수 (15)를 곱한 중간 결과(60)를 테이프에 적는다. 이번엔 곱하는 수의10의 자리 (2)를 찾아서, 다시 그 전 수(15)를 곱하고 중간 결과를 적는다 (300). 끝으로 헤드는 중간결과값 적은 자리를 찾아가서 60과 300을 각각 읽어 들이고 두개를 더한 값을 테이프의 맨 끝에 적고 계산을 마친다.  위의 간단한 곱셈식은 튜링 머신으로 할 수 있는 “논리적 사고(thinking)” 의 간단한 예다. 결론적으로 테이프, 헤드, 제어정보로만 이루어진 튜링 머신은 인간이 할 수 있는 모든 형태의 논리적 사고를 표현할 수 있다.

그 다음 튜링이 보인 결과는 더 경이롭다. 튜링은 제어로직과 인풋데이터로 이루어진 튜링머신을 텍스트로 쓰고, 이를 또 다른 튜링머신 (Universal Turing Machine)에게 주어서 시뮬레이션 할 수 있도록 만들수 있음을 보였다. 즉, 위의 예에서는 복잡한 곱셈에 쓰이는 제어 로직(일의 자리, 십의 자리 순으로 계속 곱해나가고, 중간 결과값을 더함)을  [*, +, 헤드 이동…] 등의 일련의 텍스트로,  15, 24라는 인풋 데이터와 함께 테이프에 기록하는 것이다. 그럼 유니버설 튜링머신은 테이프에 새겨진 곱셈의 제어로직이 하라는 그대로 인풋 데이터를 가지고 수행하게 된다. 아하, 이렇게 튜링은 컴퓨터를 인류 최초로 상상한 것이다! 다음편에 소개할 폰 노이먼에게 튜링의 상상은 한줄기 빛이 된다.

이렇게 천재들은 인류의 역사에 큰 공헌을 하지만 한편으로 그들의 인생은 불행하게 마치는 것이 공통적이다. 강제로 호르몬주사를 맞아 가슴이 여자처럼 커지는 수모를 겪고, 결국은 독사과를 베어 물고 죽어야했던 튜링 (최근 영국 정부는 튜링에게 공식적으로 사과했다). 기술이 전쟁에 미치는 영향을 목격한후, 정부의 연구 자금을 스스로 끊고 일생을 함께 보낸 친구들 (폰 노이먼등)과의 관계마저 절교해 말년을 외롭게 보낸 와이너. 그리고 여기에 언급하진 않았지만 튜링보다 앞서 라이프니츠의 문제에 답을 한, 20세기의 최고 수학자 커트 괴델(Kurt Godel) 의 말년은 더 슬프다. 괴델은 정신불안에 시달리며 자신 아내이외의 사람이 주는 음식에 독이 들어있다고 의심하고, 아내가 병으로 입원해있는 동안 홀로 굶어죽고 만다. 빛나는 천재의 마음(mind)은 세상을 밝게 만들었지만, 그 밝음만큼 내면에 간직해야 했던 어두움은 그들 자신의 인생을 불행으로 몰고 간 것이다.

(다음 편은 폰 노이먼과 에니악, 에드박등을 다룰 예정입니다 ^_^b).

– 박상민 http://twitter.com/#!/sm_park

[1] 컴퓨터 이야기 #1 – 생각에서 기계로
[2] 소프트웨어, 하드웨어의 아버지

컴퓨터 이야기 #1 – 생각에서 기계로

왜 옛날 이야기를 시작하지?

지난번 괜히 제목만 거창한 글 “소프트웨어, 하드웨어의 아버지” 이후로 계속 컴퓨터, 특별히 소프트웨어 역사 이야기를 해보고 싶었다. 컴퓨터의 역사만큼 흥미진진한 이야기가 더 있을까 싶을 정도로 지난 70년은 컴퓨터, 인터넷, 웹을 창조한 영웅들의 무용담으로 가득하다. 사실 17세기의 라이프니츠까지 거슬러 올라가야 진정 소프트웨어의 역사를 이야기할 수 있겠지만, 우선 한동안은 20세기 초, 현대식 컴퓨터가 처음 만들어지던 시절부터 현재 실리콘밸리가 번영하기까지의 스토리들을 짚어보고 싶다. 굳이 옛날 이야기들을 써내려가는 건 컴퓨터, 소프트웨어가 얼마나 즐겁고 흥분되는 학문, 직업인지 이야기 하고 싶어서다. 어린 학생들이 가장 기피하는 전공이 컴퓨터 사이언스가 되었다는 이야기, 40대 프로그래머의 미래는 치킨집 뿐이라는 이야기들 (그래서 대학생들 컴퓨터 숙제하다 막힐땐 동네 닭집으로 달려가야 한다는데…), 그런 우울한 소식들에 지쳐있는 다음 세대들에게 소프트웨어의 “환상적인” 역사들을 소개하고 그래서 조금이라도 더 이 분야에서 일하고 싶은 생각이 들게 한다면, 그럼 지금의 잉여짓도 큰 보람이 있을거란 생각이 든다. 그럼 시작해 볼까?

생각에서 기계로

17세기 라이프니츠의 발칙한 상상, “세상의 모든 질문에 답을 주는 기계를 만들 수 있을까?“, 은 결국 괴델과 튜링의 증명을 통해 불가능하다고 결론이 났다 (관련 내용은 지난번 포스팅 참조 [1]). 즉 “신은 존재하는가?”와 같은 인간이 던지는 모든 질문들 중 어떤 것들은 Yes/No의 대답이 불가능하다고 결론난 것이다. 괴델은 그런 기계(궁극의 알고리즘)가 존재할 수 없음을 우회적으로, 세상의 어떤 논리로도 증명할 수 없는 다른 차원의 수들이 있음을 보임으로써 증명했다. 튜링은 거기에서 더 나아가 대답할 수 없는 질문의 “예제(example)”를 선보였고, 바로 이것이 튜링의 Halting Problem 이었다 (여전히 이게 뭔 이야긴가 궁금하시면 [1]을 꼭 참조!). 고대의 철학, 논리학, 수학자들을 미궁가운데 빠뜨렸던 질문에 답을 했으니 이제 과학자들 스트레스는 좀 덜어졌겠다 생각하면 오산이다. 이유는 바로 전 세계에 몰아닥친 2차대전의 여파가 과학 세계에도 몰아쳤기 때문이다.

전장에 나가있는 젊은이들의 생명이 과학자들에게 맡겨지게 된건 바로 현대식 전투에서 복잡한 수식 계산이 쓰이기 시작했기 때문이다. 예를들어 장거리 포의 궤적을 정확히 예측하기 위해서는 거리, 중력, 바람의 방향과 속도등 다양한 변수들을 궤도 방정식에 적용해야 했다. 전장에서 수식표를 들고 다니며 대입하는 방식으로는 목표물과는 엉뚱한 방향으로 포를 날릴수 밖에 없었다. 더 나아가 미국이 본격적으로 핵무기를 개발하는 “맨하탄 프로젝트”를 시작했는데, 플루토늄 239를 오직 원하는 시점에 폭발시키기 위한 장치를 만들기 위해서는 대단히 복잡한 계산식을 풀어내야만 했다 (실제 폰 누이먼에게 맡겨진 일이었다). 독일군의 암호를 해독하기 위해서도 빠른 계산기가 필요했다. 이것이1930-40년대에 과학계에 던져진 숙제였다.

버네버 부쉬(Vannevar Bush) 와 아날로그 계산기

그림: 버네버 부쉬(1890-1974)와 그의 미분계산기

버네버 부쉬 [2]의 이름을 들어본 적이 있다면 아마도 그가 현대식 “월드 와이드 웹(WWW)”의 첫 고안자였다는 사실때문일 것이다. 하지만 그것 말고도, 버네버 부쉬의 업적은 20세기 미국 과학계에 전설로 남아있다. 그의 몇가지 역할만 예로 들자면, “맨하탄 프로젝트의 지휘자”, “군수업체 Raytheon 설립자”, “최초의 미국 대통령 과학 비서관”등이다. 현재 세계를 지배하는 미국의 힘이 과학에 있다고 한다면, 그같은 과학정책을 처음 디자인한 사람이 바로 버네버 부쉬라고 할만큼 그의 영향력은 지대했다.

과학계에서 그의 첫 업적은 기계식 계산기의 개발이었다 [3] . 1920년대 MIT의 전자공학 교수로 일하며 그는 미분 방정식을 계산해 낼 수 있는 거대한 기계를 만들어냈다. 그의 계산기는 설명 그대로 기계였다: 위 그림처럼 막대, 기어, 도르래를 엮어서 만들었고 변수에 값을 할당하기 위해서는 여러개의 막대들을 정확한 각도로 회전시켜야 했다. 계산기에 새로운 방정식을 프로그래밍하는 건 더한 노동이었다. 막대와, 기어, 도르래를 다시 연결해서 주어진 방정식과 가장 유사한 형태로 조합해야 했던 것이다. 즉, 지금 우리가 C 언어로 몇줄 안되게 짜내는 방정식 계산 프로그램을 만들기 위해 이 당시에는 대학원 학생들이 땀 뻘뻘흘리며 막대기와 도르래를 회전시켜야 했다는 말이다. 그리고 계산기에 달린 모터를 돌리기 시작하면 기어가 돌고 막대기가 회전하면서 2%내의 오차에서 정확한 답을 계산해 냈다. 지금 시대의 우리가 보기에 너무나 조악한 이 기계는 그 당시 전 세계  과학계를 환희로 물들인 최고의 발명품이었다. 미국과 유럽등의 대학들에 날개돋힌듯 복제되어 배포되었고, 훗날 2차대전중 복잡한 계산식을 풀어내는데 사용되었다.

그림: 버네버 부쉬의 메멕스 (Memex)

앞에서 언급한대로 버네버 부쉬는 월드 와이드 웹의 개념을 처음으로 “상상”한 사람이다. 정보의 홍수속에 웹을 타고 헤엄치는 우리에게는 덜 와 닿겠지만, 그 시대의 유일한 미디어는 책과 마이크로 필름 정도였다는 것을 생각해보면 그의 상상력이 얼마나 기막힌것이었는지 알수 있다. 부쉬는 사람이 생각할때 꼬리에 꼬리를 물고 생각의 끈이 이어진다는 사실에 착안했다. 그리고 곧 사람의 두뇌에서 일어나는 그 원리를 그대로 기계로 만들어보면 어떨까 상상했고, 메멕스(Memex)로 불린 그의 상상속 기계를 구체적으로 “As we may think” 라는 논문에서 기술했다 [4]. 즉 마이크로 필름들에 쓰여진 정보중 다른 정보로 연결(association/하이퍼링크) 하는 부분에 문자 코드를 입력해 놓고, 필름를 읽다가 책상위 버튼을 누르면 책상속 기계가 돌아가며 문자코드가 가리키는 마이크로 필름을 찾아서 영사기에 올리고 출력해 준다는 개념이다. 이것은 지금의 WWW와 얼마나 유사한가! 문자 코드는 하이퍼링크고, 버튼은 마우스 클릭, 책상밑 기계는 네트워크로 대체하면, 곧 그의 상상이 바로 월드 와이드 웹 이었음을 알 수 있다. 1945년에 이러한 시스템을 상상했다니, 그저 놀라울 뿐이다. 그런 비전을 가진 사람이 만든 과학정책이 아직도 세계를 지배한다는 건 어쩌면 당연한 일인지도 모르겠다.

클라우드 섀넌(Claude Shannon)의 충격적인 석사 논문

클라우드 섀넌 (Claude Shannon), 1916-2001

20세기 최고의 “석사” 논문을 뽑으라면 누구나 주저하지 않고 클라우드 섀넌(Claude Shannon) [5]의 1937년 논문 “A Symbolic Analysis of Relay and Switching Circuits [6]”을 꼽을 것이다. 솔직히 박사논문들과 비교해봐도 그보다 영향력있는 논문을 과연 찾을 수 있을까 싶다. 왜냐하면 그의 논문이 역사상 최초로 추상적인 논리가 현실에서 돌아가는 기계로 만들어질 수 있음을 보였기 때문이다.

1936년 스무살에 수줍은 성격의 섀넌은 미시건 대학을 졸업하고 위에 소개한 버네버 부쉬의 석사 학생으로 MIT에 입학했다. 그는 부쉬의 기계식 계산기를 사용하면서, 계산기에 사용된 스위치 (switch: 막대와 막대를 연결)의 동작에 흥미를 갖게 됐다. 그리고 그는 곧 모터에 의해 열리고 닫히는 스위치가 오래전부터 사용됐던 불(Boole)의 이진법 연산(Boolean logic)과 동일하다는 사실을 발견했다. 참고로 이진법 연산이란 변수에 숫자가 아닌 참/거짓을 할당하고 더하기, 빼기의 사칙연산이 아니라 AND, OR, NOT과 같은 연산을 사용해서 주어진 식의 최종적인 참/거짓 여부를 구하는 계산법이다. 사람이 생각하고 결론에 다다르기까지의 논리를 바로 이진법 연산으로 표현할 수 있다. 섀넌은 아래 그림처럼 스위치 두개를 직렬로 이어놓았을때는 AND 연산, 병렬로 이어 놓았을때는 OR 연산과 같은 결과가 나오는것을 발견했다. 더 나아가 스위치들을 좀 더 복잡하게 조합하면 이전 스위치의 결과 (참/거짓)에 따라 다음 스위치의 열고 닫히는 여부를 결정할 수 있음도 발견했다 (즉 if/else 문을 수행할 수 있다는 뜻).

  

그림: AND 연산                                                                      그림: OR 연산

“이게 뭐 별거라고 21세기 최고의 논문 운운하냐?” 혹 이렇게 생각한다면, 좀 더 깊이 그 의미를 음미해보기를 권한다. 그것은 곧,

“사람의 생각을 기계의 조합을 통해서 표현할 수 있다”

는 충격적인 (적어도 내게는) 뜻이기 때문이다. 1930년대엔 모터로 스위치를 여닫는 기계가 쓰였지만, 곧 같은 원리가 진공관, 전자회로, 집적회로, 실리콘등 물질을 바꾸어가며 지금의 CPU와 메모리까지 이어져왔기 때문이다. 사람의 생각을 기계로 표현하는 것, 즉 컴퓨터 하드웨어의 시작을 연 것이 충격적이 아니라면 뭐가 더 충격이 될수 있을까?

지도교수 부쉬와 마찬가지로 섀넌의 천재성은 여기서 끝나지 않았다. 섀년은 10여년후 1948년 또 다시 세계를 놀래키는 논문 (A Mathematical Theory of Communication)을 쓰고 정보이론 (Information Theory)의 아버지가 된다. 일설에 의하면 그는 그의 발견을 논문으로 쓰기 싫었지만(귀찮았지만) 일하던 벨 연구소의 보스가 강제로 시켜서 출판했다고 한다. 그는 천재적인 수학실력으로 정보가 채널을 통해 전달되는 과정을 수학으로 표현하고, 채널에 노이즈가 있다 하더라도 정보를 표현하는 방식을 달리하면(encoding/decoding) 정보의 의미를 잃지 않고 전달할 수 있음을 보였다. 사람이 소음이 많은 환경에서 대화할때 몇개 중요한 단어만 들어도 문장 전체의 의미를 잃지않고 전달할 수 있는것과 같은 맥락이다. 그의 발견은 단순히 전화나 인터넷과 같은 통신망의 개발에만 중요한 것이 아니다. 정보의 교환이 이루어지는 모든 분야, 즉 인지과학, 인공지능, 데이터압축, 암호학, 또한 Compact Disc등 미디어에 이르기까지 모든 산업과 학문분야에 걸쳐 정보이론은 중요한 토대가 되었다.

(다음 편에는 튜링, 노버트 와이너를 다룰 예정입니다 ^__^b)

– 박상민 http://twitter.com/#!/sm_park

[1] 소프트웨어, 하드웨어의 아버지
[2] Vannevar Bush (위키 아티클)
[3] Differential Analyzer (위키 아티클)
[4] Memex (위키 아티클)
[5] Claude Shannon (위키 아티클)
[6] A Symbolic Analysis of Relay and Switching Circuits (위키 아티클)
[7] Information Theory (위키 아티클)

버그의 축복

1. 얼리아답터

언제부터인가 난 얼리아답터 (early adapter) 였다. 아마도 10년전쯤 나온 PDA 소니 클리에를 사면서 시작된것 같다. 지난번 포스팅한 너드들 특징중 하나가 바로 이 얼리아답터 성향이다. 남들은 아~무도 신경 안쓰는 새 전자기기를 부모님들이 알면 까무라칠 가격으로 사들인다. 그리고 어딜 갈때든 주머니속에 꼬옥 넣고 다니다가 괜히 한번씩 꺼내보고는 씩 웃는다. 몰려든 여동생들이 “와 오빠 이거 신기하다~” 외치면 기분이 업되서 한참동안 어썸한 기능을 설명하곤 한다 (하지만 결혼을 하고 여자의 심리를 좀 더 이해한 지금, 여자들의 감탄에 속지 말아야 함을 밝힌다). 곧 아주 간단한 기능들 – 예를 들어 바로 옆 메모지를 놔두고 기어이 PDA에 꾹꾹 노트를 입력하는 일 -을 데모하다보면 안쓰럽게 바라보던 여동생들은 어디로 사라지고 나와 PDA만 남곤했는데…

2002년 로망 클리에

새 기계와 소프트웨어로 마냥 행복할 것 같은 얼리아답터에게도 고통은 있다. 초기 제품들의 “버그” 때문이다. 새 제품 A가 출시되면 얼리아답터 커뮤니티는 (예: clien.net) 흥분의 도가니가 된다.  A의 새 기능들을 침이 마르도록 칭찬하고, 서로 서로 지름을 권유하고 축하한다. 하지만 이도 잠시, 곧 몇주가 지나고 나면 하나 하나 발견해가는 A의 버그로 인해 게시판이 서서히 불만으로 달구어진다. 곧 나온다던 SW 업데이트가 미뤄질수록 게시판의 분노는 점점 하늘을 찌르고, 누군가 당기면 촛불시위라도 시작할듯 A에 대한 첫사랑은 잊혀지고 만다.

그런데 3년전 나는 색다른 커뮤니티 경험을 했다. 아마존에서 이북리더 킨들이 나오기 전 네델란드의 iRex라는 회사에서 DR시리즈라는 이북리더를 출시했다. 당시 DR시리즈는 여러가지로 혁신적이었는데, 8″와 10″의 대형 스크린, 와콤 타블릿등  e-ink 디바이스의 매력을 처음으로 제대로 보여줬다. 그게 너무 갖고 싶어 가난한 유학생임에도 난  8″와 10″ 두 버전을 연이어 약 $400, $600 의 가격으로 샀다. 그리고 곧 인터넷의 DR시리즈 포럼에 드나들기 시작했다. 하지만 곧 얼리아답터의 고통이 비싼 가격만큼이나 강렬하게 찾아왔다. 수없이 많은 버그들을 발견했고, 어떤것들은 너무 치명적이었다. 그런데 곧 SW를 업데이트한다던 회사는 몇달이 지나도 감감무소식이었다. 더이상 참을 수 없던 나는 회사에 항의 메일을 써보내기 시작했고 나와 함께할 “동지”가 없는지 게시판 분위기를 살폈다. 헌데, 그곳 포럼은 이상하리만치 차분했다. 어떤 사람은 DR시리즈의 소프트웨어를 분석하며 왜 업데이트가 늦는지 설명했고 (그곳 직원이 아님에도), 어떤 사람은 DR이 오픈소스였던걸 활용해 몇가지 버그를 고쳐서 사람들에게 배포했다. 난 전공이 CS요, 시간많은 대학원생이었음에도 항의 메일이나 보내고 있는데, 비전공자를 포함한 너드들은 직접 문제를 해결하기 시작한 것이다.

몇년이 지나고 오픈소스 회사에서 일하고 있는 지금에서야, 그 경험이 바로 실리콘밸리의 고유한 해커 문화인걸 깨달았다.

2. 갑과 을 – 고통스런 파트너

뼛속 깊이 한국인인 내게 우리 소프트웨어 업계를 지배하는 ‘갑’과 ‘을’의 문화는 당연하게 다가온다. 얼마전 대기업에서 일하는 선배형이 페이스북에 남긴 메시지는, “금요일 퇴근하며 을에게 전화해 월요일까지 고칠수 있냐고 물었다. 미안하지만 할수없지….” 이런 것이었다. 여기서 SW개발을 두고 벌어지는 ‘갑’과 ‘을’ 가상의 시나리오를 한번 펼쳐보자.

  • 갑: 데이터 정렬(sorting)하는 프로그램 필요한데, 누가 해볼래?
  • 을:  제가 할 수 있습니다. 맡겨 주십쇼!
  • 갑: 기한은 일주일. 오케이?
  • 을: [월-화요일: 디자인] 바쁘다 바빠, quicksort를 쓸까 mergesort를 쓸까? [수-금요일: 구현] 제일 빠른 quicksort로 구현하자. 거의 다 됐다.
  • 갑: [금요일 오후] 아 참, 데이터 추출이 많은데, 당연히 해쉬테이블 썼지?
  • 을: 그런 얘기 안 하셨잖아요 ㅠㅠ
  • 갑: 그랬나?…이런 미안 ^__^ 월요일날 봐~
  • 을: [토-일요일]  출근하며 핸펀주소록 갑의 이름을 “멍멍이 키즈”로 바꿈.

스펙을 중간에 바꾸는 ‘갑’의 부도덕한 행위는 꼭 ‘을’에게만 고통을 주는건 아니다. ‘갑’ 자신도 즐거워야 할 주말에 일을 강요해야 하는 사실이 미안하고 부담스러울 수 밖에 없다.

3. 갑과 을  – 깔끔한 파트너

위 사례에서 몇가지만 수정하면 깔끔한 ‘갑’과 ‘을’의 관계를 만들 수 있다. 즉, ‘갑’이 월요일 정확한 스펙(해쉬테이블)을 넘겼다거나, 금요일 스펙을 변경하면서 일주일의 기한을 더 주었다면 ‘을’은 마음편히 주말을 보냈을 것이고, ‘갑’도 ‘을’ 보기에 미안하지 않았을 것이다. SW 계약시에 ‘갑’은 정확하게 스펙을 던져주고, 프로그래밍 실력이 출중한 ‘을’은 스펙의 기능을 버그 없이, 기한안에 완성해 낸다면, 이게 진짜 소프트웨어 유토피아 아니겠는가? 그런데 문제는,

두 사례 모두 소프트웨어 망국으로 향하는 길이라는 사실이다!

4. 버그와 혁신

위의 얼리아답터 사례에 비춰봤을때 나는 ‘갑’이었고, DR을 판 회사는 ‘을’이었다. 나는 당연히 ‘갑’의 마인드로 스펙과 기한을 못 맞춘 ‘을’에게 분노하고 심지어 고소를 운운했다. 그런데, 커뮤니티의 다른 ‘갑’들은 태도가 달랐다. 끈기있게 업데이트를 기다려주거나, 스스로 버그를 고쳐나가기 시작한 것이다. 그 당시 이해되지 않았던 그 현상의 의미를, 지금 오픈소스 회사에서 일하며 SW를 판매하는 미국판 ‘을’이 되고 나서야 깨달았다. 우리 소프트웨어(eucalyptus)는 약 60만 라인의 복잡도 만큼이나 버그가 많다. 며칠간은 잘 작동하다가도, 갑자기 어이없는 버그가 출현해 우리를 당황시키곤 한다. 그때마다 한국적 ‘을’의 마인드를 가지고 있는 나는 마치 내가 큰 실수 한듯 미안해하며 급히 고치겠다고 사과한다. 하지만 내게 더 당황스러운 것은, 별일 아니라고 하며 쉽게 넘어가주는, 심지어 스스로 우리 소스코드를 고쳐 다시 우리에게 제공해주는 해커 ‘갑’ 들의 모습, 그리고 그들의 회사들이다. 우리에게 돈을 지불한 그들이 우리 제품을 고쳐서 사용하고 결과물을 다시 우리에게 돌려주는 것이다!

이것이 바로 실리콘밸리에서 일어나는 버그를 통한 혁신이라고 생각한다. 오픈소스 프로젝트의 바이블인 Cathedral and the bazaar [1]에서 설명하듯이 새로운 SW프로젝트의 시작은 기존의 유사한 SW가 가지고 있는 버그나 결함에서 출발한다. SW를 사용하면서 불편함을 느낄때 혹은 새 요구조건을 기존 SW가 충족시키지 못할때 자연스럽게 창조의 욕구가 생겨나고 이는 곧 혁신적인 다음 세대 SW의 출현으로 이어진다. 그래서 오늘 ‘갑'(사용자)의 자리에서 불편함을 느끼며 SW를 사용하는 사람이 내일 ‘을'(개발자)의 모습으로 변해 새롭게 SW를 써내려가는 것이다. 그리고 종종 이 불편함에서 출발한 아이디어가 전 세계를 강타하는 초대형 SW로 탄생하는 것이다. Minix 라는 기존 O/S를 즐겨 사용하던 리누스 토발즈는 모뎀 기능이 없다는 사소한 불편함때문에  새로 리눅스를 만들었다. SW업계의 “쾌남” 래리 엘리슨도 메인 프레임 DB 프로그래밍하며 느낀 불규칙한 인터페이스의 불편함에 착안해 오라클을  시작했다.

불편함을 감수하는 얼리 아답터는 개인에게만 해당되는 것이 아니다. 스타트업에게 바이블중 하나인 Crossing the chasm [2] 을 읽다보면 실리콘밸리 기업들이 얼마나 조직적으로 이 불편함을 감수하는지 알수 있다. 기업들은 새로운 기술을 선보인 작은 회사들 SW를 전략적으로 구입하고, 그 기업이 성장하기까지의 과정을 유심히 지켜본다. 그들은 SW를 사가면서 완벽함을 기대하지 않는다. 새롭게 시작하는 회사의 비전을 믿어주고, 비전이 성공했을경우 자신들에게 돌아오는 혁신에 투자하는 것이다. 우리 회사는 직원 60명의 작은 규모지만, 고객중에 대기업들이 많다. 그리고 그 기업들의 엔지니어들은 꾸준히 자신이 고친 우리 소스코드를 우리에게 피드백한다. 대기업은 스타트업의 제품을 사서 스타트업의 생명을 이어가게 하고, 버그를 통해 스타트업의 혁신을 수혈받는 것이다.

5. 결론

우리에게 문제는 “버그(과정) = 고통” 이라는 등식이다. 깔끔한 솔루션을 원하는 ‘갑’에게 있어 버그는 ‘을’의 계약 위반이고, ‘을’이 어떻게든 해결해야 하는 그들의 “고통”이다. ‘을’에게 있어 버그는 SW 배달전 모조리 잡아야 할(아님 감춰야 할) 치욕이다. ‘갑’이 버그를 발견했을때 받을 더 큰 서러움(혹은 더러움)을 피하기 위해서는 기한전에 고통을 감수하는게 낫다. 버그없는 SW는 존재하지 않기 때문에 하나 하나 잡아내는 버그는 SW의 진화 과정 그 자체다. ‘갑’에게도 ‘을’에게도 이 과정은 피하고 싶은 고통일 뿐이다. 우리에겐 깔끔한 솔루션이 가장 달콤하다. 그리고 그 달콤함에 탐닉하는 동안 SW산업은 서서히 경쟁력을 잃어가는 것이다.

그래서 SW의 참 경쟁력은 버그를 해결해가는 과정과 거기에 참여한 개인, 기업들의 시너지에 있다. 그리고 실리콘밸리의 해커와 기업들은 그 과정을 기꺼이 즐긴다. 각자 짠 코드의 버그를 발견할때마다 한번씩 그 뉘앙스에 웃어주고, 누가 먼저할 것 없이 고쳐나가는 사람들.  하지만 뼛속까지 한국인인 나를 돌아볼때 너무나 자주, 결과의 깔끔함에 집착하고 과정을 즐기지 못하는, 달리 표현하면 높은 “생산성”에만 몰두하는 자신을 발견한다. 나와 내 동료들이 일의 과정을 대하는 다른 자세, 그 이유는 무엇일까 많이 궁금하다. 어쩌면 새마을 시절부터 “지금 삽질은 힘들지만, 훗날 떵떵거리고 살수있다” 는 토목 정신이 흘러서 그런가? 그런데, 지금 많이 넉넉해진 우리는 왜 여전히 불안하고 고통스러워 하는건지…  초중고교 시절을 이어온 주입식 교육 -배움은 고통이고, 극복하면 밝은 미래 – 이 여전히 뇌신경 줄기마다 박혀있어서 그런건지도 모르겠다. 오랫동안 유토피아를 갈망해온 우리에게 진짜 유토피아는 우리가 지나오던 그 길 이었는지도 모른다. 소프트웨어의 축복이 버그에 있듯이.

“It is better to travel hopefully than to arrive. – R L Stevenson”

— 박상민 http://twitter.com/#!/sm_park

[1] The Cathedral and Bazaar by Eric S. Raymond
[2] Crossing the chasm by Geoffrey A. Moore