위대한 해커들

스타트업을 시작하고 싶으신가요? Y Combinator에서 자금을 지원받으세요.


2004년 7월

(이 에세이는 2004년 Oscon 강연에서 발췌한 것입니다.)

몇 달 전 새 을 마쳤는데, 서평에서 '도발적'이라는 단어와 '논란의 여지가 있는'이라는 단어가 계속 눈에 띄었습니다. '멍청한'이라는 말은 말할 것도 없고요.

저는 책을 논란의 여지가 있게 만들 의도는 없었습니다. 효율적으로 만들려고 노력했습니다. 사람들이 이미 알고 있는 것을 말해주면서 시간을 낭비하고 싶지 않았습니다. 그저 차이점(diffs)만 알려주는 것이 더 효율적입니다. 하지만 저는 그것이 놀라운 책을 낳을 수밖에 없다고 생각합니다.

에디슨들

부의 격차가 우리가 생각하는 것만큼 큰 문제가 아닐 수 있다는 제안만큼 논란의 여지가 있는 아이디어는 없습니다.

저는 책에서 부의 격차 자체가 좋은 것이라고 말하지 않았습니다. 어떤 상황에서는 좋은 것의 징후일 수 있다고 말했습니다. 지끈거리는 두통은 좋은 것이 아니지만, 좋은 것의 징후일 수 있습니다. 예를 들어, 머리를 맞은 후 의식을 회복하고 있다는 신호일 수 있습니다.

부의 격차는 생산성 격차의 징후일 수 있습니다. (단일 사회에서는 동일합니다.) 그리고 _그것_은 거의 확실히 좋은 것입니다. 만약 당신의 사회에 생산성 격차가 없다면, 그것은 아마도 모든 사람이 토마스 에디슨이기 때문이 아닐 것입니다. 아마도 토마스 에디슨이 없기 때문일 것입니다.

저기술 사회에서는 생산성 격차가 그리 크지 않습니다. 불을 피우기 위해 나뭇가지를 모으는 유목민 부족이 있다면, 가장 잘 모으는 사람이 가장 못 모으는 사람보다 얼마나 더 생산적일까요? 두 배 정도일까요? 반면에 컴퓨터와 같은 복잡한 도구를 사람들에게 건네주면, 그들이 그것으로 할 수 있는 일의 격차는 엄청납니다.

이것은 새로운 아이디어가 아닙니다. 프레드 브룩스는 1974년에 이에 대해 썼고, 그가 인용한 연구는 1968년에 발표되었습니다. 하지만 저는 그가 프로그래머들 간의 격차를 과소평가했다고 생각합니다. 그는 코드 라인 수로 생산성에 대해 썼습니다. 최고의 프로그래머는 주어진 문제를 10분의 1의 시간 안에 해결할 수 있습니다. 하지만 문제가 주어지지 않는다면 어떨까요? 프로그래밍에서는 다른 많은 분야와 마찬가지로, 문제를 해결하는 것이 아니라 어떤 문제를 해결할지 결정하는 것이 어려운 부분입니다. 상상력은 측정하기 어렵지만, 실제로는 코드 라인 수로 측정되는 생산성을 지배합니다.

생산성은 모든 분야에서 다양하지만, 이렇게까지 크게 다양한 분야는 거의 없습니다. 프로그래머들 간의 격차는 너무 커서 종류의 차이가 됩니다. 하지만 저는 이것이 프로그래밍에 본질적인 것이라고 생각하지 않습니다. 모든 분야에서 기술은 생산성 격차를 증폭시킵니다. 프로그래밍에서 일어나는 일은 단지 우리가 많은 기술적 지렛대 효과를 가지고 있기 때문이라고 생각합니다. 하지만 모든 분야에서 지렛대가 길어지고 있으므로, 우리가 보는 격차는 시간이 지남에 따라 점점 더 많은 분야에서 나타날 것입니다. 그리고 기업과 국가의 성공은 그것을 어떻게 다루느냐에 점점 더 의존하게 될 것입니다.

생산성 격차가 기술과 함께 증가한다면, 가장 생산적인 개인들의 기여는 불균형적으로 클 뿐만 아니라 실제로 시간이 지남에 따라 증가할 것입니다. 그룹의 생산량 90%가 구성원의 1%에 의해 생성되는 지점에 도달하면, 바이킹의 습격이든 중앙 계획이든 어떤 것이 그들의 생산성을 평균으로 끌어내린다면 큰 손실을 입게 됩니다.

그들로부터 최대한의 것을 얻으려면, 우리는 이 특별히 생산적인 사람들을 이해해야 합니다. 무엇이 그들을 동기 부여하는가? 그들이 일을 하기 위해 무엇이 필요한가? 그들을 어떻게 알아보는가? 그들을 어떻게 당신을 위해 일하게 하는가? 그리고 물론, 어떻게 그들 중 한 명이 되는가 하는 질문도 있습니다.

돈 그 이상

저는 소수의 슈퍼 해커들을 알고 있어서, 그들이 공통적으로 가지고 있는 것이 무엇인지 앉아서 생각해 보았습니다. 그들의 결정적인 특징은 아마도 그들이 프로그래밍을 정말로 사랑한다는 것입니다. 평범한 프로그래머들은 생계를 위해 코드를 작성합니다. 위대한 해커들은 그것을 재미로 하는 일이라고 생각하며, 사람들이 그것에 대해 돈을 지불한다는 사실에 기뻐합니다.

위대한 프로그래머들은 때때로 돈에 무관심하다고 말해집니다. 이것은 완전히 사실이 아닙니다. 그들이 정말로 신경 쓰는 것은 흥미로운 일을 하는 것이라는 점은 사실입니다. 하지만 충분한 돈을 벌면 원하는 어떤 일이든 할 수 있고, 그런 이유로 해커들은 정말 많은 돈을 버는 아이디어에 끌립니다. 하지만 매일 출근해야 하는 한, 그들은 돈을 얼마나 받는지보다 그곳에서 무엇을 하는지에 더 신경 씁니다.

경제적으로 이것은 매우 중요한 사실인데, 이는 위대한 해커들에게 그들이 가치 있는 만큼의 돈을 지불할 필요가 없다는 것을 의미하기 때문입니다. 위대한 프로그래머는 평범한 프로그래머보다 10배 또는 100배 더 생산적일 수 있지만, 3배 더 많은 돈을 받는 것에 대해 운이 좋다고 생각할 것입니다. 나중에 설명하겠지만, 이는 위대한 해커들이 자신이 얼마나 뛰어난지 모르기 때문이기도 합니다. 하지만 돈이 그들이 원하는 주된 것이 아니기 때문이기도 합니다.

해커들은 무엇을 원하는가? 모든 장인들처럼, 해커들은 좋은 도구를 좋아합니다. 사실, 그것은 절제된 표현입니다. 좋은 해커들은 나쁜 도구를 사용하는 것을 참을 수 없어 합니다. 그들은 잘못된 인프라를 가진 프로젝트에서는 단순히 일하기를 거부할 것입니다.

제가 한때 일했던 스타트업에서는 게시판에 IBM 광고가 붙어 있었습니다. AS400 사진이었고, 헤드라인은 '해커들은 그것을 경멸한다'고 쓰여 있었던 것 같습니다. [1]

프로젝트에 사용할 인프라를 결정할 때, 당신은 기술적인 결정만 내리는 것이 아닙니다. 당신은 또한 사회적인 결정을 내리는 것이며, 이것이 둘 중 더 중요할 수 있습니다. 예를 들어, 당신의 회사가 어떤 소프트웨어를 작성하고 싶다면, 자바로 작성하는 것이 신중한 선택처럼 보일 수 있습니다. 하지만 언어를 선택할 때, 당신은 또한 커뮤니티를 선택하는 것입니다. 자바 프로젝트에 고용할 수 있는 프로그래머들은 파이썬으로 작성된 프로젝트에 고용할 수 있는 프로그래머들만큼 똑똑하지 않을 것입니다. 그리고 해커들의 품질이 당신이 선택하는 언어보다 더 중요할 수 있습니다. 솔직히 말해서, 좋은 해커들이 자바보다 파이썬을 선호한다는 사실은 그 언어들의 상대적인 장점에 대해 무언가를 말해줄 것입니다.

사업가들은 언어를 표준으로 보기 때문에 가장 인기 있는 언어를 선호합니다. 그들은 베타맥스에 회사를 걸고 싶어 하지 않습니다. 하지만 언어의 특징은 단순히 표준이 아니라는 것입니다. 네트워크를 통해 비트를 전송해야 한다면, 당연히 TCP/IP를 사용하세요. 하지만 프로그래밍 언어는 단순히 형식이 아닙니다. 프로그래밍 언어는 표현 매체입니다.

자바가 코볼을 제치고 가장 인기 있는 언어가 되었다는 기사를 읽었습니다. 표준으로서는 더 바랄 나위가 없습니다. 하지만 표현 매체로서는 훨씬 더 나은 것을 할 수 있습니다. 제가 생각할 수 있는 모든 위대한 프로그래머들 중에서, 자바로 자발적으로 프로그래밍할 사람이 한 명밖에 없다는 것을 압니다. 그리고 썬에서 자바를 위해 일하지 않는 모든 위대한 프로그래머들 중에서, 저는 그런 사람이 한 명도 없다는 것을 압니다.

위대한 해커들은 또한 일반적으로 오픈 소스 소프트웨어 사용을 고집합니다. 더 좋기 때문만이 아니라, 더 많은 통제권을 주기 때문입니다. 좋은 해커들은 통제권을 고집합니다. 이것이 그들을 좋은 해커로 만드는 부분입니다. 무언가 고장 나면, 그들은 그것을 고쳐야 합니다. 당신은 그들이 당신을 위해 작성하는 소프트웨어에 대해 이런 식으로 느끼기를 원할 것입니다. 그들이 운영 체제에 대해서도 똑같이 느낀다고 해서 놀라서는 안 됩니다.

몇 년 전 벤처 캐피탈리스트 친구가 자신이 참여하고 있는 새로운 스타트업에 대해 이야기해 주었습니다. 유망하게 들렸습니다. 하지만 다음번에 그와 이야기했을 때, 그는 윈도우 NT 기반으로 소프트웨어를 구축하기로 결정했고, 매우 경험 많은 NT 개발자를 최고 기술 책임자로 고용했다고 말했습니다. 이 말을 들었을 때, 저는 이 사람들이 망할 운명이라고 생각했습니다. 첫째, CTO는 일류 해커가 될 수 없었습니다. 왜냐하면 저명한 NT 개발자가 되려면 자발적으로 NT를 여러 번 사용해야 했을 텐데, 위대한 해커가 그렇게 할 것이라고는 상상할 수 없었기 때문입니다. 둘째, 그가 유능하더라도, 프로젝트가 NT 기반으로 구축되어야 한다면 유능한 사람을 고용하기 어려울 것이었습니다. [2]

최후의 개척지

소프트웨어 다음으로 해커에게 가장 중요한 도구는 아마도 그의 사무실일 것입니다. 대기업들은 사무 공간의 기능이 직급을 표현하는 것이라고 생각합니다. 하지만 해커들은 그 이상으로 사무실을 사용합니다. 그들은 사무실을 생각하는 공간으로 사용합니다. 그리고 당신이 기술 회사라면, 그들의 생각은 당신의 제품입니다. 따라서 해커들을 시끄럽고 산만한 환경에서 일하게 하는 것은 공기가 그을음으로 가득 찬 페인트 공장을 운영하는 것과 같습니다.

만화 스트립 딜버트(Dilbert)는 큐비클에 대해 할 말이 많고, 그럴 만한 이유가 있습니다. 제가 아는 모든 해커들은 그것들을 경멸합니다. 방해받을 가능성만으로도 해커들이 어려운 문제에 집중하는 것을 막기에 충분합니다. 큐비클이 있는 사무실에서 실제 작업을 하고 싶다면 두 가지 선택지가 있습니다. 집에서 일하거나, 다른 사람이 아무도 없을 때 일찍 오거나 늦게 오거나 주말에 오는 것입니다. 회사들은 이것이 무언가 잘못되었다는 신호라는 것을 깨닫지 못할까요? 사무실 환경은 당신이 일하는 데 도움이 되어야 하는 것이지, 그럼에도 불구하고 일해야 하는 것이 아닙니다.

시스코(Cisco)와 같은 회사들은 CEO조차도 모든 사람이 큐비클을 가지고 있다는 것을 자랑스럽게 생각합니다. 하지만 그들은 생각만큼 발전하지 않았습니다. 분명히 그들은 여전히 사무 공간을 직급의 상징으로 보고 있습니다. 또한 시스코는 사내에서 제품 개발을 거의 하지 않는 것으로 유명합니다. 그들은 새로운 기술을 그것을 만든 스타트업을 인수함으로써 얻습니다. 아마도 그곳의 해커들은 조용히 일할 공간이 있었을 것입니다.

해커들이 무엇을 필요로 하는지 이해하는 한 대기업은 마이크로소프트입니다. 저는 한때 마이크로소프트의 채용 광고를 보았는데, 문이 크게 그려져 있었습니다. 우리를 위해 일하면, 실제로 일을 할 수 있는 공간을 제공하겠다는 전제였습니다. 그리고 아시다시피, 마이크로소프트는 대기업들 중에서 사내에서 소프트웨어를 개발할 수 있다는 점에서 주목할 만합니다. 아마도 잘하지는 못하겠지만, 충분히 잘합니다.

회사들이 해커들을 생산적으로 만들고 싶다면, 그들이 집에서 무엇을 하는지 살펴보아야 합니다. 집에서 해커들은 가장 많은 일을 할 수 있도록 스스로 환경을 조성할 수 있습니다. 그리고 집에서 일할 때, 해커들은 시끄럽고 개방된 공간에서 일하지 않습니다. 그들은 문이 있는 방에서 일합니다. 그들은 넓은 주차장 한가운데 놓인 유리 상자 대신, 사람들이 주변에 있고 무언가를 곰곰이 생각할 필요가 있을 때 걸을 수 있는 아늑하고 이웃 같은 장소에서 일합니다. 피곤할 때 책상에 앉아 혼수상태로 일하는 척하는 대신, 낮잠을 잘 수 있는 소파가 있습니다. 해킹의 황금 시간대에 매일 저녁 시끄럽게 청소하는 청소부들이 없습니다. 회의나, 신이시여, 기업 연수나 팀 빌딩 활동도 없습니다. 그리고 그들이 컴퓨터에서 무엇을 하는지 살펴보면, 도구에 대해 제가 이전에 말했던 것을 뒷받침한다는 것을 알게 될 것입니다. 그들은 직장에서 자바와 윈도우를 사용해야 할 수도 있지만, 스스로 선택할 수 있는 집에서는 펄과 리눅스를 사용하는 것을 더 자주 발견할 것입니다.

실제로, 코볼이나 자바가 가장 인기 있는 언어라는 통계는 오해의 소지가 있을 수 있습니다. 어떤 도구가 최고인지 알고 싶다면, 해커들이 자유롭게 선택할 수 있을 때, 즉 자신의 프로젝트에서 무엇을 선택하는지 살펴보아야 합니다. 그 질문을 하면, 오픈 소스 운영 체제가 이미 지배적인 시장 점유율을 가지고 있으며, 가장 인기 있는 언어는 아마도 펄일 것입니다.

흥미로운

좋은 도구와 함께, 해커들은 흥미로운 프로젝트를 원합니다. 무엇이 프로젝트를 흥미롭게 만드는가? 음, 스텔스 비행기나 특수 효과 소프트웨어와 같이 명백히 섹시한 애플리케이션은 작업하기에 흥미로울 것입니다. 하지만 어떤 애플리케이션이든 새로운 기술적 도전을 제기한다면 흥미로울 수 있습니다. 그래서 해커들이 어떤 문제를 좋아할지 예측하기 어렵습니다. 왜냐하면 어떤 문제들은 그것을 작업하는 사람들이 새로운 종류의 해결책을 발견할 때만 흥미로워지기 때문입니다. ITA(오비츠 내부 소프트웨어를 작성한 회사) 이전에는 항공권 요금 검색을 작업하는 사람들이 상상할 수 있는 가장 지루한 애플리케이션 중 하나라고 생각했을 것입니다. 하지만 ITA는 문제를 더 야심찬 방식으로 재정의함으로써 그것을 흥미롭게 만들었습니다.

저는 구글에서도 같은 일이 일어났다고 생각합니다. 구글이 설립되었을 때, 소위 포털들 사이의 일반적인 통념은 검색이 지루하고 중요하지 않다는 것이었습니다. 하지만 구글의 사람들은 검색이 지루하다고 생각하지 않았고, 그래서 그들은 그것을 아주 잘합니다.

이것은 관리자들이 변화를 만들 수 있는 영역입니다. 부모가 아이에게 '10분 안에 방 전체를 청소할 수 없을 걸?'이라고 말하는 것처럼, 좋은 관리자는 때때로 문제를 더 흥미로운 것으로 재정의할 수 있습니다. 스티브 잡스는 단순히 높은 기준을 가짐으로써 이것에 특히 능숙해 보입니다. 맥 이전에 작고 저렴한 컴퓨터는 많았습니다. 그는 문제를 '아름다운 것을 만들라'고 재정의했습니다. 그리고 그것은 어떤 당근이나 채찍보다 개발자들을 더 열심히 몰아붙였을 것입니다.

그들은 확실히 해냈습니다. 맥이 처음 나왔을 때, 그것이 좋을 것이라는 것을 알기 위해 전원을 켤 필요조차 없었습니다. 케이스만 봐도 알 수 있었습니다. 몇 주 전 저는 캠브리지 거리에서 걷고 있었는데, 누군가의 쓰레기통에서 맥 캐링 케이스처럼 보이는 것을 보았습니다. 안을 들여다보니 맥 SE가 있었습니다. 저는 그것을 집으로 가져와 전원을 꽂았고, 부팅되었습니다. 행복한 매킨토시 얼굴, 그리고 파인더. 세상에, 너무나 간단했습니다. 마치... 구글 같았습니다.

해커들은 높은 기준을 가진 사람들을 위해 일하는 것을 좋아합니다. 하지만 단지 까다롭기만 해서는 충분하지 않습니다. 올바른 것을 고집해야 합니다. 이는 보통 당신 자신이 해커여야 한다는 것을 의미합니다. 저는 프로그래머를 관리하는 방법에 대한 가끔 기사를 보았습니다. 사실 두 개의 기사가 있어야 합니다. 하나는 당신 자신이 프로그래머일 경우 무엇을 해야 하는지에 대한 것이고, 다른 하나는 당신이 프로그래머가 아닐 경우 무엇을 해야 하는지에 대한 것입니다. 그리고 두 번째는 아마도 두 단어로 요약될 수 있을 것입니다. 포기하라.

문제는 일상적인 관리가 아닙니다. 정말 좋은 해커들은 사실상 자기 관리적입니다. 문제는, 당신이 해커가 아니라면, 누가 좋은 해커인지 알 수 없다는 것입니다. 비슷한 문제가 미국 자동차가 왜 그렇게 못생겼는지 설명합니다. 저는 이것을 _디자인 역설_이라고 부릅니다. 당신은 훌륭한 디자이너를 고용하여 제품을 아름답게 만들 수 있다고 생각할지 모릅니다. 하지만 당신 자신이 좋은 취향을 가지고 있지 않다면, 어떻게 좋은 디자이너를 알아볼 수 있을까요? 정의상 그의 포트폴리오만으로는 알 수 없습니다. 그리고 그가 받은 상이나 가졌던 직업으로 판단할 수도 없습니다. 왜냐하면 디자인 분야에서도 다른 대부분의 분야와 마찬가지로, 그것들은 유행과 아부에 의해 좌우되는 경향이 있으며, 실제 능력은 훨씬 뒤떨어지기 때문입니다. 피할 수 없는 사실입니다. 아름다운 것이 무엇인지 모른다면 아름다운 것을 생산하려는 과정을 관리할 수 없습니다. 미국 자동차가 못생긴 이유는 미국 자동차 회사들이 나쁜 취향을 가진 사람들에 의해 운영되기 때문입니다.

이 나라의 많은 사람들은 취향을 파악하기 어렵거나 심지어 사소한 것으로 생각합니다. 둘 다 아닙니다. 디자인을 주도하려면 관리자는 회사 제품의 가장 까다로운 사용자여야 합니다. 그리고 정말 좋은 취향을 가지고 있다면, 스티브 잡스가 그랬듯이, 당신을 만족시키는 것을 유능한 사람들이 기꺼이 작업할 만한 문제로 만들 수 있습니다.

고약한 사소한 문제들

어떤 종류의 문제가 흥미롭지 않은지 말하기는 꽤 쉽습니다. 몇 가지 크고 명확한 문제를 해결하는 대신, 많은 고약한 사소한 문제들을 해결해야 하는 경우입니다. 최악의 프로젝트 중 하나는 버그로 가득 찬 소프트웨어에 대한 인터페이스를 작성하는 것입니다. 또 다른 경우는 개별 고객의 복잡하고 불분명한 요구 사항에 맞춰 무언가를 사용자 정의해야 할 때입니다. 해커들에게 이런 종류의 프로젝트는 천 번의 칼질로 죽는 것과 같습니다.

고약한 사소한 문제들의 특징은 그것들로부터 아무것도 배우지 못한다는 것입니다. 컴파일러를 작성하는 것은 컴파일러가 무엇인지 가르쳐주기 때문에 흥미롭습니다. 하지만 버그가 있는 소프트웨어에 대한 인터페이스를 작성하는 것은 아무것도 가르쳐주지 않습니다. 왜냐하면 버그는 무작위적이기 때문입니다. [3] 따라서 좋은 해커들이 고약한 사소한 문제들을 피하는 것은 단지 꼼꼼함 때문만이 아닙니다. 그것은 자기 보존의 문제입니다. 고약한 사소한 문제들을 작업하는 것은 당신을 멍청하게 만듭니다. 좋은 해커들은 모델들이 치즈버거를 피하는 것과 같은 이유로 그것을 피합니다.

물론 어떤 문제들은 본질적으로 이런 특성을 가지고 있습니다. 그리고 수요와 공급 때문에, 그것들은 특히 보수가 좋습니다. 따라서 위대한 해커들을 지루한 문제에 투입할 방법을 찾은 회사는 매우 성공할 것입니다. 어떻게 그렇게 할 수 있을까요?

이런 일이 일어나는 한 곳은 스타트업입니다. 저희 스타트업에는 로버트 모리스가 시스템 관리자로 일했습니다. 그것은 롤링 스톤즈가 바르 미츠바에서 연주하는 것과 같습니다. 그런 인재를 고용할 수는 없습니다. 하지만 사람들은 자신이 창업자인 회사라면 어떤 고된 일이라도 기꺼이 합니다. [4]

대기업들은 회사를 분할함으로써 문제를 해결합니다. 그들은 직원들이 고객의 고약한 사소한 문제에 직접적으로 작업할 필요가 없는 별도의 R&D 부서를 설립함으로써 똑똑한 사람들을 고용합니다. [5] 이 모델에서 연구 부서는 광산처럼 기능합니다. 그들은 새로운 아이디어를 생산하고, 아마도 회사의 나머지 부분은 그것들을 사용할 수 있을 것입니다.

이런 극단적인 방법까지 갈 필요는 없을 수도 있습니다. 상향식 프로그래밍은 회사를 분할하는 또 다른 방법을 제안합니다. 똑똑한 사람들이 도구 제작자로 일하게 하는 것입니다. 당신의 회사가 x를 하는 소프트웨어를 만든다면, 그런 유형의 소프트웨어를 작성하기 위한 도구를 만드는 그룹과, 이 도구를 사용하여 애플리케이션을 작성하는 그룹을 두세요. 이런 식으로 당신은 똑똑한 사람들이 코드의 99%를 작성하게 할 수 있지만, 여전히 전통적인 연구 부서에서만큼 사용자로부터 거의 격리된 상태를 유지할 수 있습니다. 도구 제작자들은 사용자를 가질 것이지만, 그들은 회사의 자체 개발자들뿐일 것입니다. [6]

마이크로소프트가 이 접근 방식을 사용했다면, 그들의 소프트웨어는 그렇게 많은 보안 취약점을 가지고 있지 않았을 것입니다. 왜냐하면 실제 애플리케이션을 작성하는 덜 똑똑한 사람들이 메모리 할당과 같은 저수준 작업을 하지 않았을 것이기 때문입니다. 워드를 C로 직접 작성하는 대신, 워드 언어의 큰 레고 블록을 조립했을 것입니다. (듀플로(Duplo)가 기술 용어라고 생각합니다.)

뭉침 현상

흥미로운 문제와 함께, 좋은 해커들이 좋아하는 것은 다른 좋은 해커들입니다. 위대한 해커들은 뭉치는 경향이 있습니다. 때로는 제록스 파크(Xerox Parc)에서처럼 놀랍도록 그렇습니다. 따라서 당신이 그들을 위해 얼마나 좋은 환경을 조성하느냐에 비례하여 좋은 해커들을 유치하지 못할 것입니다. 뭉치는 경향은 환경의 제곱에 비례하는 것과 같습니다. 따라서 승자 독식입니다. 어떤 시점에서든 해커들이 가장 일하고 싶어 하는 곳은 10~20곳에 불과하며, 당신이 그 중 하나가 아니라면, 더 적은 수의 위대한 해커를 가질 뿐만 아니라, 아예 없을 것입니다.

위대한 해커들을 보유하는 것만으로는 회사를 성공시키는 데 충분하지 않습니다. 현재 인기 있는 구글과 ITA에는 잘 작동하지만, 씽킹 머신즈(Thinking Machines)나 제록스(Xerox)에는 도움이 되지 않았습니다. 썬(Sun)은 한동안 잘 나갔지만, 그들의 비즈니스 모델은 하향 곡선입니다. 그런 상황에서는 최고의 해커들도 당신을 구할 수 없습니다.

하지만 저는 다른 모든 조건이 동일하다면, 위대한 해커들을 유치할 수 있는 회사가 엄청난 이점을 가질 것이라고 생각합니다. 이에 동의하지 않는 사람들도 있을 것입니다. 1990년대에 우리가 벤처 캐피탈 회사들을 방문했을 때, 몇몇은 소프트웨어 회사들이 훌륭한 소프트웨어를 작성함으로써 이기는 것이 아니라, 브랜드, 채널 지배, 그리고 올바른 거래를 통해 이긴다고 말했습니다.

그들은 정말로 이것을 믿는 것 같았고, 저는 그 이유를 아는 것 같습니다. 저는 많은 VC들이, 적어도 무의식적으로, 다음 마이크로소프트를 찾고 있다고 생각합니다. 그리고 물론 마이크로소프트가 당신의 모델이라면, 훌륭한 소프트웨어를 작성함으로써 이기기를 바라는 회사를 찾아서는 안 됩니다. 하지만 VC들이 다음 마이크로소프트를 찾는 것은 잘못입니다. 왜냐하면 다른 어떤 회사가 적절한 순간에 다음 IBM이 될 준비가 되어 있지 않다면 어떤 스타트업도 다음 마이크로소프트가 될 수 없기 때문입니다.

마이크로소프트를 모델로 사용하는 것은 실수입니다. 왜냐하면 그들의 전체 문화가 그 하나의 행운의 기회에서 비롯되었기 때문입니다. 마이크로소프트는 나쁜 데이터 포인트입니다. 그들을 제외하면, 좋은 제품이 시장에서 이기는 경향이 있다는 것을 알 수 있습니다. VC들이 찾아야 할 것은 다음 애플이나 다음 구글입니다.

빌 게이츠는 이것을 알고 있다고 생각합니다. 그가 구글에 대해 걱정하는 것은 그들의 브랜드 파워가 아니라, 그들이 더 나은 해커들을 가지고 있다는 사실입니다. [7]

인정

그렇다면 위대한 해커들은 누구인가? 그들을 만났을 때 어떻게 알아볼 수 있는가? 그것은 매우 어려운 일로 밝혀졌습니다. 해커들조차도 알 수 없습니다. 저는 이제 제 친구 트레버 블랙웰(Trevor Blackwell)이 위대한 해커라는 것을 꽤 확신합니다. 슬래시닷(Slashdot)에서 그가 어떻게 자신의 세그웨이를 만들었는지 읽어보셨을 수도 있습니다. 이 프로젝트의 놀라운 점은 그가 모든 소프트웨어를 하루 만에 작성했다는 것입니다 (우연히도 파이썬으로).

트레버에게는 그것이 늘 있는 일입니다. 하지만 제가 그를 처음 만났을 때, 저는 그가 완전한 바보라고 생각했습니다. 그는 로버트 모리스(Robert Morris)의 사무실에서 무언가에 대해 횡설수설하고 있었고, 저는 그의 뒤에 서서 로버트에게 이 미친놈을 사무실에서 쫓아내서 우리가 점심을 먹으러 갈 수 있게 해달라고 필사적으로 손짓했던 기억이 납니다. 로버트도 처음에는 트레버를 잘못 판단했다고 말합니다. 로버트가 그를 처음 만났을 때, 트레버는 자신의 삶의 모든 측면에 대한 모든 것을 인덱스 카드 더미에 적어 어디든 가지고 다니는 새로운 계획을 막 시작했다고 합니다. 그는 또한 캐나다에서 막 도착했고, 강한 캐나다 억양과 멀릿 헤어스타일을 하고 있었습니다.

해커들은 사회적 무관심으로 유명하지만, 때때로 똑똑해 보이려고 많은 노력을 기울인다는 사실 때문에 문제는 더욱 복잡해집니다. 제가 대학원생이었을 때 가끔 MIT AI 랩에 들르곤 했습니다. 처음에는 좀 위압적이었습니다. 그곳의 모든 사람들은 너무 빨리 말했습니다. 하지만 얼마 지나지 않아 저는 빨리 말하는 요령을 배웠습니다. 더 빨리 생각할 필요는 없습니다. 그저 모든 것을 말하기 위해 두 배 더 많은 단어를 사용하면 됩니다.

신호에 이 정도의 잡음이 있으면, 좋은 해커들을 만났을 때 알아보기 어렵습니다. 저는 지금도 알 수 없습니다. 그들의 이력서로도 알 수 없습니다. 해커를 판단하는 유일한 방법은 그와 함께 무언가를 작업하는 것 같습니다.

그리고 이것이 첨단 기술 지역이 대학 주변에서만 발생하는 이유입니다. 여기서 활성 성분은 교수라기보다는 학생들입니다. 스타트업은 대학 주변에서 성장합니다. 왜냐하면 대학은 유망한 젊은이들을 한데 모아 같은 프로젝트에서 일하게 하기 때문입니다. 똑똑한 사람들은 다른 똑똑한 사람들이 누구인지 배우고, 함께 자신들만의 새로운 프로젝트를 만들어냅니다.

위대한 해커는 그와 함께 일해봐야만 알 수 있기 때문에, 해커들 자신도 자신이 얼마나 뛰어난지 알 수 없습니다. 이것은 대부분의 분야에서 어느 정도 사실입니다. 저는 어떤 일에 뛰어난 사람들은 자신의 위대함을 확신하기보다는 다른 모든 사람들이 왜 그렇게 무능해 보이는지 의아해한다는 것을 발견했습니다.

하지만 해커들이 자신이 얼마나 뛰어난지 알기는 특히 어렵습니다. 왜냐하면 그들의 작업을 비교하기 어렵기 때문입니다. 이것은 대부분의 다른 분야에서는 더 쉽습니다. 100미터 달리기에서는 10초 안에 누가 가장 빠른지 알 수 있습니다. 심지어 수학에서도 어떤 문제가 풀기 어렵고, 무엇이 좋은 해결책을 구성하는지에 대한 일반적인 합의가 있는 것 같습니다. 하지만 해킹은 글쓰기와 같습니다. 두 소설 중 어느 것이 더 낫다고 누가 말할 수 있을까요? 작가들은 확실히 아닙니다.

적어도 해커들의 경우, 다른 해커들은 알 수 있습니다. 왜냐하면 소설가와 달리 해커들은 프로젝트에서 협력하기 때문입니다. 누군가에게 네트워크를 통해 몇 가지 어려운 문제를 던져보면, 그들이 얼마나 강하게 되받아치는지 꽤 빨리 알 수 있습니다. 하지만 해커들은 자신이 일하는 모습을 볼 수 없습니다. 그래서 위대한 해커에게 자신이 얼마나 뛰어난지 물어보면, 그는 거의 확실히 '모르겠습니다'라고 대답할 것입니다. 그는 단지 겸손한 것이 아닙니다. 그는 정말로 모릅니다.

그리고 우리 중 누구도, 실제로 함께 일해본 사람 외에는 알지 못합니다. 이것은 우리를 이상한 상황에 놓이게 합니다. 우리는 우리의 영웅이 누구여야 하는지 모릅니다. 유명해지는 해커들은 무작위적인 홍보 사고로 유명해지는 경향이 있습니다. 가끔 위대한 해커의 예를 들어야 할 때가 있는데, 누구를 사용해야 할지 전혀 모릅니다. 가장 먼저 떠오르는 이름은 항상 개인적으로 아는 사람들이지만, 그들을 사용하는 것은 좀 시시하게 느껴집니다. 그래서 저는 리처드 스톨먼(Richard Stallman)이나 리누스 토르발스(Linus Torvalds)나 앨런 케이(Alan Kay) 같은 유명한 사람을 말해야 할까 생각합니다. 하지만 저는 이 사람들이 위대한 해커인지 전혀 모릅니다. 저는 그들과 함께 아무것도 작업해 본 적이 없습니다.

해킹계의 마이클 조던이 있다면, 그를 포함하여 아무도 모릅니다.

양성

마지막으로, 해커들이 모두 궁금해했던 질문입니다. 어떻게 위대한 해커가 될 수 있는가? 저는 스스로 위대한 해커가 될 수 있는지 모르겠습니다. 하지만 스스로를 멍청하게 만드는 것은 확실히 가능하며, 스스로를 멍청하게 만들 수 있다면, 아마도 스스로를 똑똑하게 만들 수도 있을 것입니다.

좋은 해커가 되는 비결은 아마도 당신이 좋아하는 일을 하는 것일 겁니다. 제가 아는 위대한 해커들을 생각해보면, 그들이 공통적으로 가지고 있는 한 가지는 그들이 원하지 않는 어떤 일도 시키기 극도로 어렵다는 것입니다. 이것이 원인인지 결과인지는 모르겠습니다. 둘 다일 수도 있습니다.

무언가를 잘 하려면 그것을 사랑해야 합니다. 따라서 해킹을 당신이 사랑하는 것으로 보존할 수 있는 한, 당신은 그것을 잘 할 가능성이 높습니다. 14세 때 프로그래밍에 대해 가졌던 경이로움을 유지하려고 노력하세요. 현재 직업이 당신의 뇌를 썩게 하고 있다고 걱정한다면, 아마도 그럴 것입니다.

최고의 해커들은 물론 똑똑한 경향이 있지만, 그것은 많은 분야에서 사실입니다. 해커들에게만 고유한 어떤 특성이 있을까요? 몇몇 친구들에게 물어보니, 그들이 언급한 첫 번째는 호기심이었습니다. 저는 항상 모든 똑똑한 사람들이 호기심이 많다고 생각했습니다. 호기심은 단순히 지식의 1차 미분이라고 생각했습니다. 하지만 분명히 해커들은 특히 호기심이 많으며, 특히 사물이 어떻게 작동하는지에 대해 그렇습니다. 이것은 이치에 맞습니다. 왜냐하면 프로그램은 사실상 사물이 어떻게 작동하는지에 대한 거대한 설명이기 때문입니다.

몇몇 친구들은 해커들의 집중력, 즉 '자신의 머리 밖의 모든 것을 차단하는' 능력에 대해 언급했습니다. 저는 확실히 이것을 알아차렸습니다. 그리고 몇몇 해커들이 맥주 반 잔만 마셔도 전혀 프로그래밍을 할 수 없다고 말하는 것을 들었습니다. 그래서 해킹은 특별한 집중력이 필요할 수도 있습니다. 아마도 위대한 해커들은 많은 양의 맥락을 머릿속에 로드하여, 코드 한 줄을 볼 때 그 줄뿐만 아니라 그 주변의 전체 프로그램을 볼 수 있을 것입니다. 존 맥피(John McPhee)는 빌 브래들리(Bill Bradley)의 농구 선수로서의 성공이 부분적으로 그의 비범한 주변 시야 때문이라고 썼습니다. '완벽한' 시야는 약 47도의 수직 주변 시야를 의미합니다. 빌 브래들리는 70도였습니다. 그는 바닥을 보고 있을 때도 골대를 볼 수 있었습니다. 아마도 위대한 해커들은 이와 유사한 타고난 능력을 가지고 있을 것입니다. (저는 매우 밀도 높은 언어를 사용하여 코트 크기를 줄이는 방식으로 속임수를 씁니다.)

이것이 큐비클에 대한 불일치를 설명할 수 있습니다. 아마도 시설 담당자들은 깨뜨릴 집중력이 없어서, 큐비클에서 일하는 것이 해커에게는 뇌를 믹서기에 넣는 것과 같다는 것을 전혀 모를 것입니다. (반면에 빌은 자폐증 소문이 사실이라면 너무나 잘 알고 있습니다.)

위대한 해커들과 일반적인 똑똑한 사람들 사이에서 제가 알아차린 한 가지 차이점은 해커들이 더 정치적으로 올바르지 않다는 것입니다. 좋은 해커들 사이에 비밀 악수가 있다면, 그것은 그들이 일반 대중에게 돌에 맞아 죽을 만한 의견을 표현할 만큼 서로를 잘 알 때입니다. 그리고 저는 정치적 올바르지 않음이 프로그래밍에서 유용한 특성일 수 있다는 것을 이해할 수 있습니다. 프로그램은 매우 복잡하고, 적어도 유능한 프로그래머의 손에서는 매우 유동적입니다. 이런 상황에서는 가정에 의문을 제기하는 습관이 도움이 됩니다.

이러한 특성들을 기를 수 있을까요? 저는 모르겠습니다. 하지만 적어도 그것들을 억압하지는 않을 수 있습니다. 그래서 여기에 제가 제시하는 최선의 비법이 있습니다. 만약 스스로 위대한 해커가 될 수 있다면, 그 방법은 다음과 같은 자신과의 약속을 하는 것일 수 있습니다. 지루한 프로젝트에서는 절대 일하지 않을 것이며 (가족이 굶어 죽을 위기가 아니라면), 그 대가로 절대 어설픈 일을 하지 않을 것입니다. 제가 아는 모든 위대한 해커들은 그런 약속을 한 것 같습니다. 비록 그들 중 누구도 선택의 여지가 없었을 수도 있지만요.

주석

[1] 공정하게 말하자면, IBM은 괜찮은 하드웨어를 만듭니다. 저는 이 글을 IBM 노트북으로 작성했습니다.

[2] 그들은 결국 망했습니다. 몇 달 후 문을 닫았습니다.

[3] 저는 사람들이 '삶의 의미'에 대해 이야기할 때 이것을 의미한다고 생각합니다. 표면적으로는 이상한 생각처럼 보입니다. 삶은 표현이 아닙니다. 어떻게 의미를 가질 수 있을까요? 하지만 의미와 매우 흡사한 특성을 가질 수 있습니다. 컴파일러와 같은 프로젝트에서는 많은 문제를 해결해야 하지만, 그 문제들은 신호처럼 모두 패턴을 따릅니다. 반면에 해결해야 할 문제들이 무작위적일 때는 잡음처럼 느껴집니다.

[4] 아인슈타인은 한때 냉장고를 설계하는 일을 했습니다. (그는 지분을 가지고 있었습니다.)

[5] 컴퓨터 세계에서 연구가 정확히 무엇을 구성하는지 말하기는 어렵지만, 첫 번째 근사치로, 사용자 없는 소프트웨어입니다.

저는 최고의 해커들이 연구 부서에서 일하고 싶어 하는 이유가 출판 때문이라고 생각하지 않습니다. 주로 제품 관리자와 워드 13.27 한국어 버전과 말하는 종이 클립 통합 문제에 대해 세 시간짜리 회의를 할 필요가 없기 때문이라고 생각합니다.

[6] 건설 산업에서는 오랫동안 비슷한 일이 일어나고 있습니다. 몇 백 년 전 집을 지을 때, 지역 건축업자들이 모든 것을 지었습니다. 하지만 점점 더 건축업자들이 하는 일은 다른 사람이 설계하고 제조한 부품을 조립하는 것입니다. 이것은 데스크톱 출판의 등장과 마찬가지로 사람들이 재앙적인 방식으로 실험할 자유를 주었지만, 확실히 더 효율적입니다.

[7] 구글은 넷스케이프보다 마이크로소프트에게 훨씬 더 위험합니다. 아마도 다른 어떤 회사보다도 더 위험할 것입니다. 그들이 싸우기로 결심했기 때문만은 아닙니다. 그들의 채용 공고 페이지에는 그들의 '핵심 가치' 중 하나가 '악해지지 말라'고 명시되어 있습니다. 콩기름이나 광산 장비를 판매하는 회사에서 그런 진술은 단지 특이할 뿐일 것입니다. 하지만 컴퓨터 세계에 있는 우리 모두는 그것이 누구에게 대한 선전포고인지 인식한다고 생각합니다.

감사합니다 제시카 리빙스턴(Jessica Livingston), 로버트 모리스(Robert Morris), 사라 할린(Sarah Harlin)에게 이 강연의 이전 버전을 읽어주셔서 감사합니다.