dkmqflx's blogGithub

해커와 화가를 읽고

2024.02.17

들어가며

Y Combinator의 공동 설립자인 폴 그레이엄의 "해커와 화가"는 프로그래밍을 단순한 기술적 작업이 아닌 예술적 창조 활동으로 바라보는 새로운 시각을 제시합니다.


지은이의 글 - 컴퓨터 세상은 '지성'의 서부개척시대

해커라고? 그들은 남의 컴퓨터를 침범하는 족속들 아닌가? 문외한에게는 그렇게 받아들여질 것이다.

하지만 컴퓨터 세상에서 사물에 정통한 프로그래머들이 자신을 스스로 해커라고 부른다.

컴퓨터 세상은 지성의 서부개척시대와 같다. 원한다면 우엇이든지 생각할 수 있지만, 그에 따르는 결과는 스스로 책임져야 한다

01 / 공부벌레는 왜 인기가 없을까 - 그들은 게임판 위의 말에는 관심이 없다

어떤 분야에 속하지 않은 사람들은 그 분야에서 성공을 거두기 위해 얼마나 지속적으로 로도 노력해야 하는지 알지 못한다.

예를 들어서 사람들은 그림을 잘 그리는 사람을 보면 재능을 타고 났을 것이라고 생각한다. 하지만 그림을 "잘 그리는" 사람들은 그림을 그리는 데 많은 시간을 투자해 왔다.

인간은 일하기를 좋아한다. 사람이 하는 일은 대개 그 사람의 정체성을 결정한다.

02 / 해커와 화가 - 해커는 화가, 소설가, 건축가와 같은 예술 창조자다

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

해커들에게 있어서 컴퓨터는 자기를 표현하기 위한 매체에 불과하다. 건축가에게는 콘크리트가, 화가에게는 그림이 그런 역할을 하는 것과 마찬가지다. 소스코드도 마찬가지로 스스로를 잘 설명해야 한다. 만약 프로그래밍에 대해서 뭔가 한마디 인용하는 것은 컴퓨터 프로그램의 구조와 해석의 시작 부분에 나와 있는 다음과 같은 문구다

프로그램은 오직 사람이 읽기 위해서 작성해야 한다. 컴퓨터가 그것을 실행하는 것은 부차적인 일이다 당신은 단지 사용자를 위해서 감정이입을 하는 것이 아니라 당신의 소스코드를 읽는 독자를 위한 감정이입도 해야한다. 당신 스스로가 얼마 후에는 그 소스코드를 읽는 독자 가운데 한 사람이 될 것이기 때문이다

해커는 과학자라기보다 창조자에 가깝기 때문에 적절하게 비유할 대상을 찾을 수 있는 곳은 과학 분야 가 아니라 창조자가 있는 다른 분야다. 그림 그리기가 우리에게 가르쳐 주는 것이 해킹 말고 다른 무엇이 있겠는가?

우리가 그림에서 배울 수 있는 것은, 혹은 적어도 확인할 수 있는 것은 바로 해킹을 어떻게 할 것인가 하 는 점이다. 그림을 그리는 기술은 무엇인가를 그림으로써 학습한다. 해킹도 마찬가지다. 대부분의 해커가 대학에서 프로그래밍 수업을 받는 것으로 해킹을 배우지는 않는다. 그들은 13살이었을 때 직접 프로그램을 만들면서 해킹을 배웠다.

이와 마찬가지로 위대한 소프트웨어는 아름다움을 향해서 뜨겁게 타올라야 한다. 좋은 소프트웨어 내부를 들여다보면 아무도 들여다볼 것이라고 생각되지 않는 곳조차 아름답다는 사실을 알게 될 것이다.

대부분의 소프트웨어는 그림과 마찬가지로 사람을 위해서 만들어진다. 해커가 위대한 해서는 화가와 마찬가지로 감정이입을 할 줄 알아야 한다. 즉, 사물을 사용자의 입장에 야 한다. 대부분의 창조자는 관객을 위해서 작품을 만들어 낸다. 이때 다른 사람의 주의를 끌기 위해서는 그들 필요한 것이 무엇인지 이해해야만 한다.

위대한 그림은 대부분이 사람을 그리고 있다. 왜냐하면, 사람들을 다른 사람에게 관심을 가지기 때문이다. 아마도 감정이입이야말로 좋은 해커와 위대한 해커를 구분하는 결정적인 차이점일 것이다.

어떤 해커들 은 상당히 영리하지만, 감정이입이라는 면에서는 혼자서 화투를 치는 사람처럼 자기중심적이다. 그들은 사물을 사용자의 관점에서 바라볼 줄 모르기 때문에 위대한 소프트웨어를 디자인하기 어렵다

04 / 모범적인 '불량 태도' - 해커는 규칙을 깨면서 성장한다

대부분의 언론 매체에서는 "해커"를 남의 컴퓨터에 침입한 사람이라는 의미로 사용한다 프로그래머 사이에서는 좋은 프로그래머라는 의미다.

이 두 가지 의미는 서로 연결되어 있다. 프로 어서 "해커"란 문자 그대로 어떤 것에 정통했다는 의미를 담고 있다.

즉, 컴퓨터가 원하든 아니든 자기가 원하는 대로 조작할 수 있는 사람이라는 의미다.

06 / 부자가 되는 법 - 부를 창조하는 최상의 방법, 스타트업

경제적으로 보았을 때 스타트업이란 한 사람이 평생 할 일을 몇 년이라는 짧은 시간으로 압축시키는 것이다. 낮은 밀도로 40년을 일하는 대신, 당신이 할 수 있는 최고의 밀도로 딱 4년만 일하는 것이다.

이렇게 일하는 태도는 빠른 속도가 삶과 죽음을 가르는 테크놀로지 분야에서는 큰 장점이다 프로그래머에게는 부를 창출하는 능력이 사람마다 매우 다르다는 사실이 분명하게 보인다.

비아웹 시절에 우리는 생산력이 괴물 수준에 가까운 친구를 본 적이 있었다. 어느 날 나는 그가 밤을 새우면서 수행한 일이 실제로 수십만 달러에 달하는 가치를 갖는 것으로 평가하기도 했다. 평범한 프로그래머는 그와 같은 시간에 제로 혹은 마이너스(쓸데없는 버그를 양산함으로써)에 해당하는 부를 더 했을 것이었다.

최고의 프로그래머가 대개 자유주의자인 까닭이 여기에 있다. 우리가 속한 세계에서는 물 위에서 수영 을 하거나 아니면 물속으로 가라앉거나 둘 중 하나다. 거기에 변명은 필요 없다. 부의 창출로부터 멀리 떨 어져 있는 사람들, 즉 대학생, 기자, 정치가 같은 사람들은 5%의 부자가 전체적인 부의 절반을 차지하고 있다는 말을 들으면 부당하다고 생각한다.

경험이 풍부한 프로그래머라면 오히려 그 정도밖에 안될까? 라고 생각할 것이다. 상위의 5%에 속하는 프로그래머가 제대로 된 소프트웨어의 99%를 작성하는 것이다. 부는 판매되지 않아도 창출될 수 있다. 적어도 최근에 이르기까지 과학자들은 그들이 창출한 부를 실질적으로 사회에 기부해 온 셈이다.

우리가 감염되어 죽을 확률이 그만큼 낮아졌다는 의미에서 페니실린 발 견은 우리 모두를 부유하게 한 것과 마찬가지다. 부란 사람들이 원하는 것인데, 누구도 죽음을 원하지 않기 때문이다. 해커들은 누구나 무료로 이용할 수 있는 오픈소스 소프트웨어를 작성함으로써 그들이 창출 한 부를 사회에 제공한다.


부자가 되기 위해서는 두 가지를 갖춘 환경에 있어야 한다. 두 가지란 바로 정당한 평가와 영향력이다. 무엇보다도 우선 사람들의 능력을 공평하게 평가하는 곳에 있어야 한다. 그렇지 않으면 더 많이 일해서 더 많이 받는 것이 불가능하기 때문이다. 그와 동시에 영향력도 있어야 한다. 당신이 내린 결정이 뭔가 큰 영 향을 행사할 수 있는 상황을 만들 필요가 있다는 뜻이다.

그러나 정당한 평가만으로는 충분하지 않다. 정당한 평가는 이루어지지만 영향력을 발휘할 수 없을 때 도 있다. 가령 스웨터 가게에서 바느질하는 것이 한 예다. 바느질의 성과는 정확하게 측정되기 때문에 정확히 일한 만큼 지급받지만, 바느질이 어떤 결정에 영향을 미치지는 않는다.

바느질을 하는 상황에서 당신이 내릴 수 있는 의사결정이라는 것은 고작해야 일을 얼마나 빨리할 것인가 정도에 불과하다. 그런 결정을 잘 내리면 당신이 버는 수입을 2배나 3배까지 늘릴 수는 있다.


역사를 보면, 부의 창출로 부자가 된 사람들은 대개 새로운 테크놀로지를 개발해서 부자가 된 것으로 나타난다. 계란 프라이나 머리를 깎는 일은 아무리 잘해도 부자가 될 수 있을 만큼 빠르게 할 수 없다.

1200년에 피렌체 사람들을 부자로 만들어 준 것은 당대의 최첨단 하이테크였던 결이 고운 옷감을 만드는 새로운 기술의 발견이었다. 1600년대에 네덜란드인을 부자로 만들어 준 것은 극동 지역의 바다를 점령할 수 있도록 하는 새로운 항해기술과 조선기술의 발견이었다.

우리는 소프트웨어에 더할 수 있는 기능이 두 가지 있을 때, 그리고 기능이 가진 가치가 어려운 정도에 비레한다고 했을 때, 언제나 어려운 쪽을 선택했다. 더 많은 가치를 위해서가 아니라, 더 어렵기 때문이었다. 우리는 크고 느린 경쟁자들이 힘난한 산속에서 우리의 뒤를 찾아오는 모습을 보기를 좋아했다.

스타트업은 게릴라처럼 중앙 정부군이 쫒차올 수 없는 복잡한 지형을 선호한다. 나는 아직도 지독하게 어려운 기술적인 문제를 안고 씨름을 하다가 완전히 지쳐서서 나가떨어진 날들을 기억한다. 하지만 우리에게 어려움이라는 것은 경쟁자에게는 불가능을 의미했기에 우리는 그렇게 힘든 남에도 즐거움을 잃지 않았다.

09 / 창조자의 심미적 취향 - 위대한 디자인에 이르는 길

좋은 디자인은 어렵다. 위대한 작품을 탄생시킨 사람들이 가진 공통점은 그들이 엄청난 노력을 기율였 다는 사실이다. 당신이 지금 엄청난 노력을 기울이고 있지 않다면, 스스로 시간을 낭비하고 있는 것이다.

어려운 문제는 엄청난 노력을 요구한다. 수학에서 어려운 증명은 언제나 천재적인 해결책이 필요하다.

좋은 디자인은 뛰어난 사람들의 모임에서 나온다. 15세기의 피렌체에서는 어떤 특별한 일이 벌어지고 있었다. 유전 때문이라고는 할 수 없다. 그런 일이 지금은 일어나지 않기 때문이다. 레오나르도와 미켈란젤로가 날 때부터 가지고 있었던 재능이 뛰어났다고 하더라도, 밀라노에서 태어난 사람들 중에서도 그에 버금가는 재능을 가지고 있는 사람이 있었다고 가장 하는 것이 옳다. 그렇다면 도대체 밀라노의 레오나르도에게는 무슨 일이 일어난 것일까?

지금 미국엔 15세기 밀라노 인구의 1,000배에 달하는 사람들이 살고 있다. 그리하여 1,000명의 레오나르도 1.000명의 미켈턴젤로가 우리와 함께 걸어 다니고 있다고 말할 수 있다. DNA의 규칙에 따르자면 우리는 거장에 둘러싸여 문화의 이기를 누려야 하는 셈이다.

그러나 실제로 그렇지는 않다. 레오나르 도가 만들어지기 위해서는 타고난 재능 이외에 무연가가 더 있어야 하기 때문이다. 즉, 1450년의 피렌체가 필요한 것이다. 재능 있는 사람이 모셔서 관련된 문제를 연구하는 커뮤니티보다 강력한 것은 없다.


마치며

해커와 화가는 프로그래밍을 단순한 기술적 작업이 아닌, 예술과 창조의 영역으로 바라보게 해준 책입니다.

책을 읽고 나서, 해커는 마치 화가처럼 끊임없이 스케치하고, 실험하며, 창조하는 존재라는 생각이 들었습니다. 좋은 프로그래밍이란 단순한 기술적 완성에 그치지 않고, 기술을 사용하는 사용자의 경험까지 고려하는 과정에서 완성된다는 점을 다시금 깨달았습니다.

이 책은 프로그래머뿐 아니라, 창의적인 일을 하는 모든 사람에게도 깊은 영감을 줄 수 있는 책이라 생각합니다.
프로그래밍을 예술로 바라보는 시각, 창조적인 환경에서 일하는 방법, 그리고 부를 창출하는 사고방식까지, 20여 년이 지난 지금도 여전히 많은 개발자에게 통찰을 주는 책이라고 생각합니다.

결국, 해커는 과학자가 아니라 예술가이며, 그들의 작품은 우리가 살아가는 세상을 더 아름답게 만든다는 것이 이 책에서 말하고자 하는 바인 것 같습니다.