해커와 화가를 읽고

undefcat·2021년 6월 6일
1

X를 읽고

목록 보기
4/5
post-thumbnail

책을 읽게 된 배경

제가 이 책을 어떤 경로로 알게 됐는지 지금은 기억이 나지 않습니다. 한가지 확실한건 개발자의 필수 교양서로 많은 추천이 있었다는 것만 기억이 나는데, 최근에 함께 자라기를 읽고 난 뒤 문득 다시 생각이 나서 리디북스에서 재빨리 구입하여 순식간에 읽었습니다.

책 간략 소개

저자인 폴 그레이엄Hacker News를 만든 사람이기도 합니다. 이제야 왜 Hacker News인지 조금은 알 것 같네요. 참 Hacker라는 표현을 좋아하시는 분인 것 같습니다.

이 책은 저자의 에세이를 모아 발간됐습니다. 각 목차의 내용이 이어지진 않고, 각각 저자의 통찰을 엿볼 수 있는 형식으로 구성됐습니다.

이 책은 정말 다양한 주제들을 다루는데요. 개발자의 너드적 특성에 관한 고찰부터 스타트업이 지향해야 할 방향, 어떻게 하면 부자가 될 수 있는지, 프로그래밍 언어 등 다양한 내용들을 다룹니다.

그리고 책을 읽다 보면 놀랄 수 밖에 없는데요. 이 책이 발간된 년도가 2004년도이며, 에세이들은 그 이전에 작성됐음에도 불구하고 그 당시 예측한 미래(지금은 현재)가 거의 다 맞아 떨어졌다는 점입니다. 조금 과장하자면, 마치 2001 스페이스 오디세이를 보고, 영화의 제작년도를 알게 됐을 때의 그런 느낌과 비슷한 느낌을 받았습니다.

저는 책 제목을 맨 처음 봤을 때, 양극단에 놓여 있는 두 직군의 부조화가 느껴졌지만 이내 바로 납득하게 만드는 이목을 끄는 제목이라고 생각했습니다. 예체능과 이공계, 서로 멀리 떨어져 있는 것 같은 두 직군은 결국 둘 다 무언가를 창조하는 일을 합니다. 그리고 현재 IT업계에서는 서로 뗄래야 뗄 수 없는 관계가 됐죠. 가끔은 서로가 으르렁 거리곤 하지만요(개발자가 디자인 배우기 vs 디자이너가 개발 배우기).

후기

기승전Lisp

다른 분들은 어떠실지 모르겠지만, 저는 이 책을 보고 난 뒤 머릿속에는 Lisp밖에 없는 것 같습니다. 저자가 그동안 걸어왔던 길, 보여준 통찰력 등을 봤을 때 뛰어난 개발자라는 생각이 드는데, 이렇게 뛰어난 개발자가 찬양하는 언어를 궁금해하지 않을 개발자가 과연 있을까 합니다(그러라고 Lisp에 관한 내용을 책 후반부에 배치한 걸까요?).

당시 저자는 실제로 Lisp을 가지고 웹서비스를 개발했었는데, 그때만 해도 저자가 생각하기에는 Lisp이 최선의 선택이라고 판단했기 때문에 그랬을 것입니다. 당시 저자가 생각(그리고 지금 봐도 유효한 통찰)하기에

한 가지만 말하자면 이 시장(웹)에서는 앞으로 빠른 개발이 중요해질 것이라는 점이 분명했다. 우리는 모두 밑바닥에서 시작했다. 그래서 경쟁자보다 한발 앞서서 새로운 기능을 추가할 수 있는 회사는 커다란 이득을 취할 수 있을 것이었다.

즉, 빠른 개발과 이를 곧바로 서비스에 적용하여 출시할 수 있는 언어로 Lisp을 꼽았던 것입니다. 이러한 변화는 PHP를 거쳐 최근에는 node.js와 Python으로 이동한 것으로 보여집니다.

또한 Lisp과 관련하여 Eric Raymond의 말도 인용하고 있는데,

리스프는 그것을 마침내 손에 넣게 되었을 때 경험하게 되는 심오한 깨달음을 위해서라도 배울 가치가 있다. 리스프를 이용할 일이 그렇게 많지 않다고 할지라도 그 경험은 그 자체만으로도 당신을 훨씬 훌륭한 프로그래머로 만들어 줄 것이다.

실제로 현업에서 C언어를 사용할 일이 드문 요즘이지만(적어도 웹 서비스 내에서는), C언어를 공부함으로써 배울 수 있는 내용들이 도움이 된다고 많은 개발자들은 생각합니다. Lisp도 이와 비슷하다고 보면, 충분히 해볼만한 가치가 있다는 생각이 듭니다.

원숭이도 나무에서 떨어진다.

저자가 훌륭한 통찰을 보여주긴 하지만, 글 중간에 이런 내용도 나옵니다.

내가 당신이라면 자바스크립트조차 사용하지 않을 것이다. 비아웹(저자가 CEO였던 서비스)에서는 사용하지 않았다. 웹에서 보게 되는 자바스크립트는 대부분 불필요하고, 많은 수가 버그를 안고 있다. 그리고 이제 휴대폰이나 PDA(혹은 토스터)를 이용해서 웹을 브라우징하는 시절이 온다면 도대체 자바스크립트가 지원될 거라고 어떻게 장담할 수 있는가?

바야흐로 자바스크립트의 시대라 해도 과언이 아닌 지금 보면 살짝 미소를 지을 수 있는 내용인 것 같습니다. 물론 아이폰의 발매일이 2007년임을 생각해 볼 때, 휴대폰으로 웹을 브라우징하는 시절이 온다는 통찰은 정말 뛰어나다고 생각됩니다.

새로운 시각

이 책을 읽다 보면, 저자의 통찰에 압도되어 저 또한 새로운 시각으로 여러 현상들을 보게 되는 것 같은데요. 예를 들어, 본문 중 저자는 디자인 패턴에 관해 이런 얘기를 합니다.

어려운 문제를 해결하고자 한다면, 충분히 강력한 언어를 사용할 것인가 하는 것이 질문의 핵심이 아니다. 핵심은 (a)강력한 언어를 사용하고 (b)그것을 위한 사실상의 인터프리터를 작성할 것인가, 아니면 (c)당신 자신이 그 언어를 위한 인간 컴파일러가 될 것인가 하는 것이다.

예를 들어서, OO 세계에서는 "패턴"이라는 말을 흔히 듣게 된다. 나는 그 패턴이라는 것이 사실상 위에서 본 (c)의 경우, 즉 인간 컴파일러에 대한 증거가 아닐까 의심스럽다. 나는 프로그램 안에서 패턴을 발견하면 그것을 뭔가 문제가 발생하고 있다는 신호로 받아들인다. 프로그램의 형태는 오직 그것이 해결해야 하는 문제만 반영해야 한다. 코드에 존재하는 그 밖의 모든 정형성은 최소한 나에게 있어서 내가 충분히 강력하지 않은 추상을 이용하고 있다는 신호로 다가온다.

피터 노르빅은 디자인 패턴에 나오는 23개 패턴 중에서 16개가 Lisp(또리슾)에서는 "보이지 않거나 더 간단하다."는 사실을 발견했다.

저는 이 내용을 보고 정말 탄성을 내뱉지 않을 수 없었습니다. 생각해보니 정말 그렇습니다. 디자인 패턴은 경험적으로 비슷한 유형의 문제들을 해결하기 위한 패턴입니다. 그렇다는 것은, 애초에 어떤 한계가 있기 때문에 이를 계속 비슷한 방식으로 해결해왔다고 생각할 수 있습니다. 어떻게 보면 중복된 코드와도 같은 맥락인거죠. 사실 이에 관해서는 많은 이견이 있을 수 있을 것 같지만, 저자가 첫 머릿말에 언급했던 말을 상기해보며 다시 한 번 모든 현상에 대해 의문을 가질 수 있도록 해야겠습니다(심지어 그것이 Best Practice일 지라도요).

좋은 해커는 모든 것에 대해서 의문을 품는 습관을 가지고 있다.

profile
undefined cat

0개의 댓글