저자인 폴 그레이엄은 대단한 능력을 가진 해커이고, 스타트 업 회사를 차려서 대성공을 거두고 젊은 나이에 막대한 부를 쌓은 인물이다. 이러한 프로필 만으로도 이 사람에 대한 흥미가 생기는데, 여기에 상당한 글 솜씨와 함께 미술, 역사, 철학, 문학 등에 대한 풍부한 인문학적 소양까지 갖추고 있어서 자신의 글을 매우 맛깔 나게 했다.
사실 이 책은 폴 그레이엄이 자신의 홈 페이지에 올렸던 에세이들을 모아서 책으로 엮은 것이다. 이와 유사하게 IT 블로그의 글들을 모아서 책으로 발간한 것 중에 유명한 책으로 “조엘 온 소프트웨어” 가 생각난다. “조엘 온 소프트웨어”는 CEO 인 조엘 스폴스키가 회사를 어떻게 운영해야 하는지, 어떤 직원들을 뽑아야 하는지, 그리고 개발 프로세스에 대한 이야기가 주를 이루었다면, “해커와 화가” 는 성공한 스타트 업의 창업자로서 스타트 업을 하려는 사람들에 대한 조언, 그리고 프로그래밍 언어인 Arc 의 설계자이자 Lisp 해커답게 프로그래밍 언어론에 대한 자신의 진지한 견해를 밝히는 내용이 주를 이루고 있다.
스타트 업과 관련해서는, 자신이 창업했던 비아웹(ViaWeb) 시절의 경험을 토대로 이야기를 하고 있다. 그레이엄은 1995년에 비아웹 이라는 온라인 쇼핑몰을 자동으로 만들어주는 서비스를 제공하는 회사를 창업해서 결국에는회사를 야후에 거액 ( 추정금액 550억원 )에 팔아 치우는데 성공하는데, 이 비아웹은 두 가지 측면에서 매우 주목할만한 점이 있었다.
첫째로 비아웹은 당시에는 (1995년) 매우 드물었던 웹 기반의 어플리케이션을 제공했다는 점이다. 자바 애플릿이나 MS 의 Active X 를 많이 사용하던 당시와 달리, 비아웹은 고객의 PC 에 아무것도 설치하지 않고 모든 솔루션이 웹 상에서만 존재하는 웹 기반의 어플리케이션 서비스를 제공하는 것을 고안했다. 웹 기반 어플리케이션은 PC 에 설치되는 어플리케이션과 비교해서 몇 가지 훌륭한 장점들을 가지고 있었다. (이러한 장점들은 오늘날에도 여전히 유효하다)
1. 고객 입장에서 어떠한 바이너리 파일도 자신의 PC 에 설치할 필요가 없으므로 배포가 매우 쉽고 PC 의 사양에 따른 제약도 거의 없다. 사용자 입장에서 필요한 것은 웹 브라우저뿐이다.
2. 개발자 입장에서도 별도의 패치를 통해서 업데이트를 할 필요가 없이 서버상에서 수정된 코드를 반영하면 사용자에게 즉시 업데이트된 내용이 전달되므로 업데이트 작업과 일관된 버전관리 측면에서 매우 편리하다.
3. 배포가 이렇게 쉽기 때문에 고객들에게 소프트웨어를 판매하는 것도 무척 쉬워진다. 고객 입장에서는 웹 브라우저를 통해서 트라이얼 버전을 사용해 보다가 구매를 원하면 온라인 상에서 결재만 하면 전체 기능을 사용할 수 있게 된다. 패키지를 별도로 배송을 받고, 배송 받은 패키지를 자신의 PC 에 복잡한 설치과정을 거쳐 설치할 필요성이 없이 결재만 이루어지면 모든 기능을 즉시 사용할 수 있다는 장점이 있다.
4. 온라인 상에서 고객의 모든 행위가 이루어지므로 개발자 입장에서는 고객의 사용 로그를 수집하기 쉽고, 이를 통해서 고객의 주로 사용하는 패턴을 분석해서 사용성을 개선 할 수 있다. 또한 고객이 자주 사용하는 기능과 자주 사용하지 않는 기능을 쉽게 파악할 수 있으므로 업데이트 작업의 우선순위를 정하기도 쉬워진다.
5. 보안 측면에서 보다 안전하다는 점을 꼽는다. 당연한 이야기이지만, 데이터가 사용자의 PC 에 존재하는 로컬 어플리케이션에 비해 모든 데이터가 개발사의 서버에 존재하는 서버 어플리케이션은 해킹이나 바이러스의 위협으로부터 상대적으로 안전하다.
이와 같은 장점에도 불구하고, 서버 어플리케이션은 부실한 UI 및 화면 반응속도, 퍼포먼스 때문에 본질적인 제약이 존재했다. 사실 RIA 기술과 AJAX 와 같은 웹 기반 어플리케이션을 위한 기술들이 개발되기 전까지는 웹 기반 어플리케이션은 로컬 어플리케이션에 비해 매우 뒤떨어지는 사용성을 가졌던 것이 사실이다. 하지만 그레이엄은 이에 대해, 자신들이 만들고자 했던 웹 기반 어플리케이션에서는 이 정도 수준의 UI 가 적정한 수준이었다는 견해를 밝히고 있다.
두 번째로 비아웹이라는 회사를 기술적으로 주목해야 한 점은, 비아웹의 온라인 스토어가 LISP 라는 언어로 개발되었다는 점이다. LISP 는 사용자 숫자가 극히 적을 뿐만 아니라 연구소 등에서만 사용하는 학술적인 언어 정도로 알려져 있는 매우 마이너 한 언어이다. LISP 로 상용 웹 어플리케이션이 개발되었다는 것은 사실 꽤 놀라운 일이다.
저자의 LISP 에 대한 찬양은 이 책의 많은 부분을 차지하고 있다. 사실 저자가 설계하고 있는 Arc 라는 언어도 LISP 의 변종 언어라는 점을 생각해 보면 LISP 에 대한 저자의 애정을 느낄 수 있는 부분이다. LISP 는 극도의 고도화된 추상적인 고급 언어로서 다른 언어에 비해서 매우 짧은 코드만으로 동일한 기능을 구현할 수 있고, 현대 언어가 제공하고 있는 다양한 고급 기능을 이미 제공하고 있다는 놀라운 사실을 이야기 하고 있다. (LISP 는 1958 년에 개발되었다)
저자가 언급하고 있는, LISP 에서 처음부터 제공하고 있음에도 나중에 탄생한 언어들이 하나씩 도입하기 시작한 혁명적인 개념들은 아래와 같다.
1. 조건문(Conditionals) : 지금은 당연한 이야기지만, 초기 어셈블리 언어들은 if~else 같은 조건문이 없었다.
2. 함수의 타입 (function type)
3. 재귀 (recursion) : 리스프는 재귀를 지원한 최초의 고급언어이다.
4. 동적 타입 체크 (Dynamic Typing) : 파이썬, 루비 등에서 도입되기 시작함
5. 가비지 컬렉션 (garbage collection) : Java, C# 에서 도입되기 시작
6. 표현으로 이루어진 프로그램. 표현과 명령문(statement)을 구분하는 포트란 이전의 언어들과 달리, LISP 의 프로그램은 표현으로 이루어진 트리이다.
7. 기호 타입(Symbol type): 기호는 해시 테이블 안에 저장된 문자열을 가리키는 포인터이다. 각각의 글자를 비교하는 것이 아니라 포인터만 비교한다.
8. 기호와 상수의 트리를 이용하는 코드를 위한 표기 방식(notation)
9. 리스프는 읽는 시간, 컴파일 시간, 실행 시간에 대한 진정한 구분이 없다. 최근에는 XML 을 통해서 이러한 개념이 점점 적용되고 있다.
놀랍게도 1 -5 까지는 초기 언어에서 지원하지 않던 기능들이지만 이제는 현대적인 고급 언어에서는 모두(그리고 필수적으로) 지원하고 있다. 다시 한번 말하지만, 리스프는 1958 년에 개발되었다. 6 과 7 은 최근 들어 주요 언어의 트렌드로 포함되고 있다고 설명하고 있다. (대표적인 예를 드는 것은 파이썬)
저자가 책에서 인용한 에릭 레이몬드(Eric Raymond)는 “어떻게 해커가 되는가(How to become a hacker)” 라는 에세이에서 해커가 되고 싶은 사람들이 배워야 할 언어로 5 가지를 꼽았다. 배우기 쉽다는 점에서 자바와 파이썬. 그리고 보다 심각한 해커가 되기 위해, 그리고 UNIX 를 해킹하기 위해 C 를, 시스템 관리와 CGI 스크립트를 위해 펄을 배우라고 했다. 하지만 진정한 해커는 리스프를 배울 것을 고민해 보라고 이야기하고 있다.
저자는 리스프를 라틴어에 비유한다. 라틴어 자체는 실제 생활에 있어서 큰 효용성이 없지만, 영어의 근원이 되는 라틴어를 익혀 두면 영어에 대해 이해도가 더욱 높아지고, 더 고급스러운 언어적인 사고가 가능하다는 이야기이다. 우리 식으로 치면 효용성이 다소 떨어지더라도 고차원적인 한국어를 구사하기 위해서는, 그리고 한국어에 대해 보다 깊이 있는 이해를 위해서는 한자를 반드시 공부해야 하는 것과 마찬가지의 논리이다.
리스프는 이와 마찬가지로, 실제로 리스프로 개발할 일이 적더라도 고급 프로그래밍적인 사고를 위해서 해커들이 반드시 익혀야 할 언어로 권장하고 있다. 특히나 사람들끼리 대화하는 데 사용되는 인간의 언어와 달리, 컴퓨터 프로그래밍 언어는 인간과 컴퓨터가 대화를 하는데 사용되기 때문에 리스프를 익혀 두면 컴퓨터와 대화하는 것에는 아무런 문제가 없기 때문에 적어도 라틴어보다는 더욱 개발자 입장에 있어서 도움이 된다는 점을 강조한다.
저자가 스타트 업 회사를 운영하면서 개발 언어로 리스프를 선택한 것은 역으로 기술적인 차별화 측면에서 보면 대단한 장점으로 작용하기도 했다. 리스프를 다룰 수 있는 개발자 자체가 매우 소수이기 때문에 비아웹의 소스 코드가 리스프로 만들어져 있다는 것 자체가 높은 기술적인 장벽을 쌓은 셈이 된다. 또한 보다 추상적으로 생산성이 높은 언어로 개발을 한다는 것은 시간 대비 더 많은 일을 할 수 있으므로 경쟁사를 빠르게 압도한다는 장점도 된다.
사실 이 책을 읽으면서 가장 땡겼던 부분은 리스프를 꼭 공부해야겠다는 생각이 들 정도로 LISP 에 대한 많은 매력들을 소개하는데 이 책의 많은 부분이 할당되어 있다.
저자는 해커이면서 또한 이탈리아의 미술 학교에서 미술을 공부한 특이한 이력도 갖고 있다. 그는 컴퓨터 프로그래밍과 그림을 그리는 것은 매우 유사한 점이 존재한다고 말한다. 여러 차례 다른 책에서 인용되 바 있는 유명한 문구로 다음과 같은 이야기가 나온다.
프로그램을 개발 할 때 설계와 구현이 분리된다는 생각은 잘못되었다. 대부분의 개발자들이 그러하듯이, 나 역시 코딩을 하는 도중에 생각난 프로그램 설계가 적용되는 경험을 많이 했다. 그리고 스스로 이러한 프로그래밍 방식에 대해 부끄러워했다. 하지만 화가나 건축가들은 이미 이러한 방식으로 일하고 있었고, 이를 지칭하는 특별한 이름이 있다는 사실을 깨달았다. 그것은 “스케치” 이다. 어린 시절에 내가 배운 프로그래밍 방식은 전부 잘못되었다. 소설가, 화가, 건축가가 그런 것처럼 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성해 나가면서 이해하게 되는 존재이다.
이 밖에도 저자의 뛰어난 식견이 드러나는 좋은 에세이들이 책에는 많이 등장한다. 부를 창출하려면 사람들이 많이 원하는 것이 무엇인지 알아야 한다. 그리고 이것을 제공함으로 써 부를 창출할 수 있다. (즉, 저자는 어떻게 해서 스타트 업이 시작되는지를 설명하고자 한 것이다.)
그리고 스팸 필터에 대한 바이블 적인 에세이인 “스팸을 위한 계획(A Plan for Spam)”을 통해서 베이지안 통계에 근거한 확률적인 스팸 필터에 대한 뛰어난 통찰력을 제공하였고, 이는 이후의 많은 개발자들에게 스팸 필터의 접근법에 대한 사고를 제공했다.
책의 내용이 쉽게 읽히는 내용은 아니라서 꼼꼼하게 완독을 하는데 적지 않은 시간이 걸렸지만, 훌륭한 영감을 나에게 준 좋은 책이라 평하고 싶다.
'여러가지 리뷰 > Book' 카테고리의 다른 글
[Book] 착한 맥주의 위대한 성공, 기네스 (0) | 2011.04.20 |
---|---|
[Book] 슈퍼 월급쟁이 (0) | 2011.04.10 |
[Book] 조엘이 엄선한 소프트웨어 블로그 베스트 29선 (0) | 2011.01.15 |
[Book] 하악하악 (0) | 2010.12.08 |
[Book] 아웃라이어(Outliers) (2) | 2010.10.27 |