메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

해커와 화가 (1)

한빛미디어

|

2005-11-09

|

by HANBIT

12,184

저자: 폴 그레이엄 / 임백준 역
출처: 해커와 화가(폴 그레이엄 저 / 임백준 역, 2005) 중에서 chapter 2. 해커와 화가



대학원에서 컴퓨터 사이언스 공부를 끝마쳤을 때 나는 그림을 공부하기 위해서 미술 대학에 들어갔다. 컴퓨터에 관심이 있는 사람이 그림에도 관심이 있는 것을 보고 많은 사람들이 놀란 것처럼 보였다. 그들은 해킹과 그림이 전혀 다른 종류의 일, 그러니까 해킹은 차갑고, 정밀하고, 체계적인 반면에 그림은 뭔가 원초적인 충동에 대한 광기어린 표현이라고 생각하는 것 같았다.

이런 인식은 완전히 잘못된 것이다. 해킹과 그림은 공통점이 많다. 사실 내가 아는 다양한 종류의 사람들을 생각해 보면 해커와 화가는 오히려 가장 비슷한 부류에 속할 정도다.

해커와 화가의 공통점은 우선 그들이 둘 다 무언가를 창조한다는 사실이다. 작곡가, 건축가, 작가와 마찬가지로 해커와 화가는 뭔가 좋은 무엇을 만들어 내기 위해서 노력한다. 그들은 연구(research) 자체를 수행하지는 않지만 창조의 과정에서 뭔가 새로운 기술을 발견하기도 한다.

나는 “컴퓨터 사이언스”라는 말이 마음에 들지 않는다. 세상에는 컴퓨터 사이언스라는 것이 존재하지 않기 때문이다. 컴퓨터 사이언스라는 말은, 예전에 유고슬라비아가 그랬던 것처럼, 그저 겉으로 보기에 서로 연관된 것처럼 보일 뿐인 영역을 한꺼번에 쓸어 담는 그릇에 불과하다. 그 그릇의 한쪽 끝에는 사실 수학자이지만 DARPA(Defense Advanced Research Projects Agency)에서 연구비를 타내기 위한 목적으로 자기가 컴퓨터 사이언스를 하고 있다고 주장하는 사람들이 존재한다. 그릇의 가운데에는 컴퓨터의 자연사, 예를 들어서 네트워크로부터 데이터를 라우팅(routing)하는 알고리즘에 이르기까지의 대상을 연구하는 사람들이 존재한다. 그릇의 반대편 끝에는 뭔가 재미있는 소프트웨어를 만들기 위해서 노력하는 해커들이 위치한다. 해커들에게 있어서 컴퓨터는 -건축가에게는 콘크리트가, 화가에게는 그림이 그런 것처럼- 자기를 표현하기 위한 매체에 불과하다. 결과적으로 컴퓨터 사이언스란 마치 수학자, 물리학자 그리고 건축가가 하나의 학과 안에 뒤섞여 있는 것과도 같다.

해커가 수행하는 일은 가끔 “소프트웨어 엔지니어링”이라는 말로 불리기도 하는데 이것은 컴퓨터 사이언스에 못지않게 잘못된 인식을 심어준다. 훌륭한 소프트웨어 설계자가 엔지니어가 아닌 것은 건축가가 엔지니어가 아닌 것과 다르지 않다. 건축과 공학의 경계선이 분명한 것은 아니지만 아무튼 그것은 존재한다. 그 경계선은 ‘무엇’과 ‘어떻게’ 라는 두 개념 사이에 놓여있다: 건축가는 무엇을 할지를 결정하고 엔지니어는 어떻게 할지를 알아낸다.

‘무엇’과 ‘어떻게’가 지나치게 분리되어야 할 이유는 없다. 다만 어떻게 해야 할지를 이해하지 못한 채 무엇을 할지 결정하면 심각한 문제에 부딪힐 가능성이 있다. 하지만 해킹이라는 것은 분명 주어진 요구사항(spec)을 단순히 어떻게 구현할 것인지 정하는 일이 아니다. 진정한 해킹이란 사실 요구사항 자체를 창조하는 것이다. 요구사항을 만들어내는 최선의 방법은 그것을 실제로 구현해 보는 것인 경우가 많다.

아마도 “컴퓨터 사이언스”라는 말은 유고슬라비아가 그런 것처럼 어느 날 갑자기 각각의 구성 부분으로 쪼개질지도 모른다. 그런 일이 일어난다면 그것은 아마 좋은 일일 것이다. 특히 그것이 나의 조국인 해킹의 독립을 의미하는 것이라면 더더욱.

이렇게 서로 다른 성격의 일들을 하나의 학과에 묶어 놓는 것이 행정적인 의미에서는 편할지 모르겠지만, 지적인 면에서는 심한 혼란을 초래할 뿐이다. 내가 “컴퓨터 사이언스”라는 말을 좋아하지 않는 또 하나의 이유가 그것이다. 논쟁의 여지는 있겠지만 그릇의 중간에 위치한 사람들이 수행하는 것은 일종의 실험과학(experimental science)이다. 하지만 양쪽 끝에 존재하는 사람들, 즉 해커와 수학자는 과학을 수행하고 있는 것이 전혀 아니다.

수학자들은 이러한 관점에 대해서 별로 불쾌해 하지 않는 것처럼 보인다. 그들은 실제 수학과에서 일하는 동료들이 그런 것처럼 수학 명제를 증명하는 일을 행복한 마음으로 수행한다. 그리고 그들이 축조하는 건축물이 바깥세상에서는 “컴퓨터 사이언스”로 불린다는 사실을 잊기까지 할 정도다. 하지만 해커에게 있어서는 이와 같은 딱지가 문제를 일으킨다. 그들이 수행하는 일이 과학이라고 불린다면 그들의 행동 역시 과학적이어야 한다는 부담감이 생기기 때문이다. 그래서 대학과 연구소에서 일하는 해커들은 아름다운 소프트웨어를 설계하는 것처럼 진심으로 원하는 일에 몰두하는 대신, 연구논문 같은 것을 작성해야 한다고 느끼게 된다.

좋게 보자면 그런 논문은 단지 형식일 뿐이다. 해커는 멋진 소프트웨어를 작성하고, 그에 대한 논문을 쓴다. 이런 경우 논문은 소프트웨어가 이루어낸 성취를 드러내는 대변인(proxy) 역할을 수행한다. 하지만 이들 역할의 불일치가 자주 문제를 일으킨다. 단지 논문 주제에 더 어울린다는 이유 하나만으로 아름다운 무엇을 창조하는 대신 별 볼 일 없는 것을 만드는 데 열중하는 일이 생기기 때문이다.

불행하게도 아름다운 대상이 언제나 논문을 위한 최선의 주제가 되는 것은 아니다. 연구는 우선 독창적이어야 하기 때문이다. 박사 논문을 써본 사람이라면 알겠지만 자기가 새로운 영역을 개척하고 있다는 사실을 확신하기 위한 방법은 어느 누구도 원하지 않는 영토에 과감하게 발을 들여놓는 것뿐이다. 그 다음으로 연구는 실질적이어야 한다. 연구의 과정에서 극복해야만 했던 장애물에 대해서 시시콜콜 설명하는 것이 가능하기 때문에, 후진 시스템일수록 오히려 더 내용이 충실한 논문을 산출하게 된다. 그런 면에서 보자면 틀린 전제에서 출발한 연구 이상으로 더 충실한 내용을 낳는 것이 없을 정도다. 인공지능(AI)은 이러한 법칙에 대한 좋은 예다. 만약 지식이라는 것이 추상적인 개념을 나타내는 정언(predicate) 논리의 연속으로 표현될 수 있다면, 여러분은 이러한 시스템이 제대로 작동하도록 만드는 방법에 대해서 수많은 논문을 작성할 수 있을 것이다. 리키 리카르도의 말을 빌리면 “루시, 설명해야 할 것이 너무 많아.”

무언가 아름다운 것을 만드는 방법은 대개 이미 존재하는 것을 살짝 뒤틀거나, 아니면 알려진 아이디어 몇 개를 새로운 방식으로 결합하는 것인 경우가 있다. 이와 같은 종류의 일은 연구 논문에서 설명되기 어렵다.

그렇다면 대학과 연구소들은 어째서 어느 해커가 이룬 성과를 그의 연구 논문에 의존해 평가하는 것일까? 그것은 다채로운 학습 능력(scholastic aptitude)이 아무 개념 없이 획일적으로 표준화된 시험에 의해서 측정되는 것, 혹은 프로그래머의 생산성이 코드의 줄 수로 평가되는 것과 거의 마찬가지다. 이러한 테스트는 적용하기 편리하다는 이점이 있는데, 사실 이렇게 손쉬운 측정 방법이 달리 없는 것도 사실이다.

해커가 진짜로 하는 일을 측정하는 것, 즉 그가 아름다운 소프트웨어를 설계하는지 여부를 가리는 것은 훨씬 어려운 일에 속한다. 좋은 설계인지 여부를 판단하기 위해서는 판단하는 사람 자신이 이미 좋은 설계에 대한 감각을 가지고 있어야 하기 때문이다. 좋은 설계를 인식하는 것과 인식할 수 있다고 스스로 확신하는 것은 별도의 문제다. 설령 이 두 가지에 어떤 관계가 있다고 해도 그것은 오히려 부정적인 관계에 불과할 것이다.

아름다운 소프트웨어인지 아닌지 측정할 수 있는 유일한 외부적인 방법은 시간이다. 시간이 지남에 따라서 아름다운 것은 번창하고 못난 것은 사라진다. 불행하게도 여기에서 이야기하는 시간은 사람의 수명보다 길 수도 있다. 사무엘 존슨은 한 작가에 대한 평판이 일정한 결론에 도달하기까지는 대략 백년 정도의 시간이 걸린다고 지적했다. 여론 형성에 영향을 미치는 작가의 친구와 추종자들이 모두 죽어서 없어질 때까지 기다려야 한다는 뜻이다.
TAG :
댓글 입력
자료실

최근 본 책0