pg.gimran.org

Великие хакеры

Июль 2004 · Все эссе

Перевод эссе Пола Грэма «Великие хакеры». Оригинал: https://paulgraham.com/gh.html. Машинный перевод (Gemini).

Translation of Paul Graham's essay 'Great Hackers'. Original: https://paulgraham.com/gh.html. Machine translation (Gemini).

(Это эссе основано на докладе на конференции Oscon 2004.)

Несколько месяцев назад я закончил новую книгу, и в рецензиях мне постоянно попадаются такие слова, как «провокационная» и «спорная». Не говоря уже об «идиотской».

Я не стремился сделать книгу спорной. Я пытался сделать её эффективной. Мне не хотелось тратить время людей, рассказывая им то, что они уже знают. Гораздо эффективнее просто выдать им diff'ы. Но, полагаю, в итоге неизбежно должна была получиться тревожная книга.

Эдисоны

Нет никаких сомнений в том, какая идея вызывает больше всего споров: предположение, что неравенство в богатстве, возможно, не такая уж большая проблема, как принято считать.

В книге я не утверждал, что имущественное неравенство само по себе является благом. Я сказал, что в некоторых ситуациях оно может быть признаком хороших вещей. Пульсирующая головная боль — не благо, но она может быть признаком хорошего: например, того, что вы приходите в сознание после удара по голове.

Неравенство в богатстве может быть признаком неравенства в продуктивности. (В обществе из одного человека они тождественны.) А это уже почти наверняка хорошо: если в вашем обществе нет разницы в продуктивности, то вряд ли потому, что каждый — Томас Эдисон. Скорее всего, дело в том, что у вас просто нет Томасов Эдисонов.

В низкотехнологичном обществе разница в продуктивности едва заметна. Если у вас есть племя кочевников, собирающих хворост для костра, насколько лучший сборщик веток окажется продуктивнее худшего? В два раза? Но когда вы даёте людям в руки сложный инструмент вроде компьютера, разброс в том, что они могут с ним сделать, становится колоссальным.

Это не новая мысль. Фред Брукс писал об этом ещё в 1974 году, а исследование, на которое он ссылался, было опубликовано в 1968-м. Но я думаю, что он недооценил разницу между программистами. Он измерял продуктивность строками кода: лучшие программисты могут решить заданную задачу в десять раз быстрее. Но что, если задача не задана заранее? В программировании, как и во многих других областях, самое трудное — не решать задачи, а решать, какие задачи стоит решать. Воображение трудно измерить, но на практике именно оно преобладает над той продуктивностью, которую измеряют строками кода.

Продуктивность варьируется в любой сфере, но мало где этот разброс настолько велик. Разница между программистами настолько огромна, что переходит в качественное отличие. Впрочем, я не думаю, что дело в самой специфике программирования. В любой области технологии многократно усиливают различия в производительности. Мне кажется, в программировании просто возник огромный технологический рычаг. Но рычаг удлиняется везде, поэтому разброс, который мы наблюдаем здесь, со временем проявится во всё большем числе областей. И успех компаний и государств будет всё сильнее зависеть от того, как они с этим справляются.

Если с развитием технологий разница в продуктивности растёт, то вклад наиболее продуктивных людей станет не просто несоразмерно большим, но и продолжит увеличиваться со временем. Когда вы достигаете точки, где 90% результатов группы создаётся 1% её участников, вы колоссально теряете, если что-то (будь то набеги викингов или централизованное планирование) сбивает их производительность до среднего уровня.

Если мы хотим извлечь из них максимум, нам нужно понять этих сверходарённых людей. Что ими движет? Что им нужно для работы? Как их распознать? Как убедить их прийти работать к вам? И, наконец, остаётся вопрос: как самому стать таким человеком?

Больше чем деньги

Я знаю горстку суперхакеров, поэтому сел и задумался, что у них общего. Их главное отличительное качество, вероятно, в том, что они по-настоящему любят программировать. Обычные программисты пишут код, чтобы оплачивать счета. Великие хакеры видят в этом занятие ради удовольствия и искренне радуются, когда выясняется, что за это ещё и платят.

Иногда говорят, что великим программистам безразличны деньги. Это не совсем так. Правда состоит в том, что всё, что их действительно волнует, — это интересная работа. Но если заработать достаточно денег, можно заниматься вообще чем угодно, и по этой причине идея огромного богатства привлекает хакеров. Но пока им всё ещё приходится каждый день ходить на работу, их куда больше заботит то, чем они там занимаются, а не то, сколько им платят.

С экономической точки зрения это факт исключительной важности, потому что он означает: вам вовсе не обязательно платить великим хакерам столько, сколько они стоят на самом деле. Великий программист может быть в десять или в сто раз продуктивнее обычного, но сочтёт за удачу, если ему будут платить хотя бы втрое больше. Как я объясню позже, отчасти это связано с тем, что великие хакеры не осознают, насколько они хороши. Но ещё и с тем, что деньги — вовсе не главное, чего они хотят.

Чего же хотят хакеры? Как и любые мастера, хакеры любят хорошие инструменты. На самом деле, это ещё мягко сказано. Хорошие хакеры просто органически не переваривают плохие инструменты. Они наотрез откажутся работать над проектами с неправильной инфраструктурой.

В стартапе, где я когда-то работал, на доске объявлений висела реклама IBM. Там было изображение AS400, а заголовок гласил, кажется: «Хакеры её презирают». [1]

Выбирая инфраструктуру для проекта, вы принимаете не просто техническое решение. Вы принимаете социальное решение, и оно может оказаться куда более важным. Например, если вашей компании нужно разработать программное обеспечение, написание его на Java может показаться осмотрительным выбором. Но, выбирая язык, вы одновременно выбираете и сообщество. Программисты, которых вы сможете нанять на Java-проект, окажутся не такими умными, как те, кого удалось бы привлечь на проект, написанный на Python. А уровень ваших хакеров, пожалуй, важнее, чем выбранный язык. Хотя, откровенно говоря, сам факт того, что хорошие хакеры предпочитают Python, а не Java, уже должен о многом вам сказать относительно достоинств этих языков.

Люди от бизнеса предпочитают самые популярные языки, потому что воспринимают их как стандарты. Они не хотят ставить судьбу компании на Betamax. Но штука в том, что языки — это не просто стандарты. Если вам нужно передавать биты по сети, то, конечно же, используйте TCP/IP. Но язык программирования — это не просто формат. Язык программирования — это средство самовыражения.

Я читал, что Java только что обогнала Cobol как самый популярный язык. В качестве стандарта о лучшем нельзя и мечтать. Но как средство самовыражения она оставляет желать много лучшего. Из всех великих программистов, которых я знаю, найдётся лишь один, кто стал бы писать на Java добровольно. А среди тех великих программистов, кто не работает в Sun над самой Java, таких и вовсе ноль.

Великие хакеры также, как правило, настаивают на использовании открытого программного обеспечения. Не только потому, что оно лучше, но и потому, что оно даёт им больше контроля. Хорошие хакеры непреклонны в вопросах контроля. Это одна из тех черт, что делают их первоклассными специалистами: если что-то сломалось, им необходимо это починить. Вы ведь хотите, чтобы они относились так к программам, которые пишут для вас? Тогда не стоит удивляться, что точно так же они относятся и к операционной системе.

Пару лет назад мой друг, венчурный капиталист, рассказал мне о новом стартапе, в котором он участвовал. Всё звучало многообещающе. Но в следующий раз он сообщил, что они решили строить софт на базе Windows NT и только что наняли очень опытного разработчика под NT на должность технического директора. Услышав это, я подумал: эти парни обречены. Во-первых, технический директор не мог быть первоклассным хакером, потому что для того, чтобы стать выдающимся разработчиком под NT, ему пришлось бы использовать NT добровольно и неоднократно, а я не мог представить великого хакера за этим занятием; во-вторых, даже будь он хорош, ему было бы крайне трудно нанять к себе кого-то толкового, если проект пишется под NT. [2]

Последний рубеж

После софта самым важным инструментом для хакера, пожалуй, является его рабочий кабинет. Крупные компании считают, что назначение офисного пространства — демонстрировать статус. Но хакеры используют свои кабинеты для большего: для них это место, где можно думать. А если вы технологическая компания, их мысли — это ваш продукт. Поэтому заставлять хакеров работать в шумной обстановке, где их постоянно отвлекают, — всё равно что открыть фабрику красок с воздухом, полным сажи.

В комиксах «Дилберт» много внимания уделяется офисным перегородкам-кьюбиклам, и вполне заслуженно. Все знакомые мне хакеры презирают их. Одной лишь перспективы того, что тебя прервут, достаточно, чтобы помешать хакеру взяться за сложную проблему. Если вы хотите сделать что-то стоящее в офисе с перегородками, у вас есть два выхода: работать из дома либо приходить пораньше, засиживаться допоздна или работать по выходным, когда никого нет. Неужели компании не понимают, что это явный признак поломки системы? Офисная среда создана для того, чтобы помогать работать, а не быть тем, вопреки чему приходится трудиться.

Такие компании, как Cisco, гордятся тем, что у каждого сотрудника есть свой кьюбикл, даже у генерального директора. Но они далеко не так прогрессивны, как думают: очевидно, они всё ещё рассматривают рабочее место как знак служебного положения. Обратите внимание и на то, что Cisco известна крайне малым объёмом внутренних разработок. Новые технологии они получают, скупая создавшие их стартапы — где у хакеров, по-видимому, было тихое место для работы.

Одна из крупных компаний, понимающих потребности хакеров, — это Microsoft. Однажды я видел их рекрутинговое объявление с огромной фотографией двери. Суть сводилась к следующему: работайте у нас, и мы предоставим вам место, где вы действительно сможете продуктивно трудиться. И знаете, Microsoft выделяется среди технологических гигантов тем, что способна разрабатывать софт собственными силами. Не сказать чтобы прекрасно, но достаточно неплохо.

Если компании хотят высокой продуктивности от хакеров, им стоит взглянуть на то, как те обустраивают работу дома. Дома хакеры устраивают всё так, чтобы успевать как можно больше. И когда они работают дома, они не сидят в шумных открытых пространствах; они работают в комнатах с дверями. Они обустраиваются в уютных, жилых районах, где вокруг есть люди и можно пройтись, когда нужно что-то обдумать, а не в стеклянных коробках посреди акров асфальтированных парковок. У них есть диван, где можно вздремнуть при усталости, вместо того чтобы сидеть за столом в коматозном состоянии, имитируя бурную деятельность. Там нет бригады уборщиков с пылесосами, с рёвом проносящейся каждый вечер прямо в прайм-тайм для хакерства. Там нет совещаний и, упаси боже, корпоративных выездов и тренингов по тимбилдингу. А если взглянуть на то, что запущено на их компьютерах, вы увидите подтверждение моим словам об инструментах. Возможно, на работе им приходится использовать Java и Windows, но дома, где выбор остаётся за ними, вы с гораздо большей вероятностью обнаружите Perl и Linux.

На самом деле эта статистика о том, что Cobol или Java являются самыми популярными языками, может вводить в заблуждение. Чтобы понять, какие инструменты действительно хороши, нужно смотреть на то, что выбирают хакеры, когда у них есть полная свобода, то есть в собственных проектах. Задавшись этим вопросом, вы обнаружите, что операционные системы с открытым исходным кодом уже занимают доминирующую долю рынка, а языком номер один, вероятно, является Perl.

Интерес

Наряду с хорошими инструментами хакерам нужны интересные проекты. Что делает проект интересным? Ну, разумеется, работать над заведомо привлекательными приложениями вроде самолётов-невидимок или программ для спецэффектов само по себе увлекательно. Но любое приложение может стать интересным, если оно ставит нестандартные технические задачи. Поэтому трудно заранее предсказать, какие задачи понравятся хакерам: ведь некоторые из них становятся увлекательными лишь тогда, когда работающие над ними люди находят принципиально новое решение. До появления ITA (разработавшей программное ядро Orbitz) люди, занимавшиеся поиском авиабилетов, вероятно, считали это одним из скучнейших приложений на свете. Но ITA сделала его захватывающим, переформулировав задачу гораздо более амбициозно.

Думаю, то же самое произошло и в Google. Когда создавался Google, среди так называемых порталов бытовало общепринятое мнение, что поиск — это скучно и неважно. Но парни из Google не считали поиск скучным делом, и именно поэтому они делают его так хорошо.

Это та область, где менеджеры способны сыграть решающую роль. Подобно тому как родитель говорит ребёнку: «Спорим, ты не уберёшь всю комнату за десять минут?», хороший менеджер порой может переформулировать задачу так, чтобы она стала намного интереснее. Стив Джобс, кажется, преуспел в этом особенно сильно — отчасти благодаря исключительно высоким стандартам. До Mac существовало множество небольших недорогих компьютеров. Он переформулировал задачу: сделайте так, чтобы он был прекрасен. И это, вероятно, подстегнуло разработчиков сильнее любых кнутов и пряников.

И результат превзошёл все ожидания. Когда Mac только появился, его даже не нужно было включать, чтобы понять, насколько он хорош; это было ясно уже по корпусу. Несколько недель назад я шёл по улице в Кембридже и увидел в чьём-то мусоре что-то похожее на сумку для переноски Mac. Я заглянул внутрь — там лежал Mac SE. Я принёс его домой, включил в розетку, и он загрузился. Улыбающийся значок Macintosh, затем Finder. Боже мой, как же всё было просто. Прямо как... Google.

Хакерам нравится работать на людей с высокими стандартами. Но мало быть просто требовательным. Нужно требовать правильных вещей. А это обычно означает, что вы и сами должны быть хакером. Мне изредка попадаются статьи о том, как управлять программистами. На самом деле статей должно быть две: одна — о том, что делать, если вы сами программист, и вторая — что делать, если нет. Причём вторую можно было бы свести всего к двум словам: бросьте это.

Проблема не столько в повседневном руководстве. По-настоящему классные хакеры практически не нуждаются в управлении. Проблема в том, что, не будучи хакером, вы не способны отличить хорошего специалиста от плохого. Похожая проблема объясняет, почему американские автомобили такие уродливые. Я называю это парадоксом дизайна. Можно подумать, что для создания красивых продуктов достаточно нанять выдающегося дизайнера. Но если у вас самих нет хорошего вкуса, как вы распознаете хорошего дизайнера? По определению, вы не сможете понять это по его портфолио. Нельзя полагаться и на полученные им награды или прежние должности, ведь в дизайне, как и в большинстве областей, всё это определяется модой и полезными знакомствами, а реальный талант стоит на далёком третьем месте. Иного пути нет: вы не можете управлять процессом создания прекрасных вещей, не понимая, что такое красота. Американские машины уродливы потому, что во главе американских автомобильных компаний стоят люди с дурным вкусом.

Многие в этой стране считают вкус чем-то неуловимым или даже легкомысленным. Это ни то ни другое. Чтобы направлять дизайн, менеджер должен быть самым требовательным пользователем продуктов своей компании. И если у вас действительно хороший вкус, вы сможете, подобно Стиву Джобсу, превратить стремление угодить вам в ту самую задачу, над которой с радостью будут трудиться талантливые люди.

Мерзкие мелкие задачки

Довольно легко определить, какие задачи не представляют интереса: те, где вместо решения нескольких крупных и ясных проблем приходится разгребать кучу мерзких мелких неполадок. Один из худших типов проектов — написание интерфейса к софту, который кишит ошибками. Другой — когда приходится подгонять что-то под сложные и невнятные запросы отдельного клиента. Для хакеров подобные проекты подобны мучительной казни тысячей порезов.

Отличительная черта мерзких мелких задачек состоит в том, что они ничему вас не учат. Написание компилятора интересно тем, что учит вас тому, как устроен компилятор. Но написание интерфейса к забагованной программе ничему не учит, поскольку баги случайны. [3] Так что хорошими хакерами, избегающими мерзких мелких проблем, движет не просто привередливость. Это скорее вопрос самосохранения. Работа над мерзкими мелкими задачами отупляет. Хорошие хакеры избегают их ровно по той же причине, по которой фотомодели избегают чизбургеров.

Конечно, некоторым проблемам этот характер присущ изначально. И в силу соотношения спроса и предложения за них платят особенно щедро. Поэтому компания, которая нашла бы способ заставить великих хакеров работать над нудными задачами, добилась бы огромного успеха. Но как этого достичь?

Один из вариантов — стартапы. В нашем стартапе системным администратором работал Роберт Моррис. Это всё равно что пригласить Rolling Stones сыграть на бар-мицве. Специалиста такого уровня невозможно просто нанять со стороны. Но ради компании, основателем которой являешься, люди готовы на любую рутину. [4]

Более крупные компании решают этот вопрос разделением структуры. Они привлекают умных людей, создавая отдельный исследовательский департамент (R&D), где сотрудникам не приходится напрямую возиться с мерзкими мелкими проблемами клиентов. [5] В такой модели научный отдел работает подобно шахте. Они добывают новые идеи, а остальная часть компании, возможно, найдёт им применение.

Возможно, доходить до таких крайностей и не нужно. Программирование снизу вверх предлагает другой способ разделения компании: пусть умные люди работают создателями инструментов. Если ваша компания производит софт для задачи X, пусть одна группа создаёт инструменты для разработки такого софта, а другая использует их для написания самих приложений. Таким образом вам, возможно, удастся задействовать умных людей в написании 99% вашего кода, сохранив их почти в такой же изоляции от пользователей, как и в традиционном исследовательском отделе. У разработчиков инструментов пользователи останутся, но ими будут лишь собственные программисты компании. [6]

Если бы Microsoft использовала этот подход, их софт не изобиловал бы дырами в безопасности, потому что менее сообразительные сотрудники, пишущие конечные приложения, не касались бы низкоуровневых вещей вроде выделения памяти. Вместо написания Word напрямую на C они бы просто соединяли вместе крупные блоки языка Word из конструктора Lego. (Кажется, профессиональный термин для этого — Duplo.)

Кучкование

Наряду с интересными задачами хорошим хакерам нужны другие хорошие хакеры. Великие хакеры склонны сбиваться в стаи — порой совершенно поразительным образом, как в Xerox Parc. Поэтому приток хороших хакеров будет расти не пропорционально качеству созданной среды, а скорее пропорционально её квадрату из-за этой склонности кучковаться. Так что победитель получает всё. В любой момент времени существует лишь десяток или два мест, где хакеры мечтают работать больше всего, и если ваша компания не входит в их число, у вас будет не просто меньше великих хакеров — у вас их не будет вовсе.

Впрочем, наличия великих хакеров самого по себе недостаточно для процветания компании. Это прекрасно сработало для Google и ITA — двух эпицентров притяжения прямо сейчас, — но не спасло Thinking Machines или Xerox. У Sun всё шло отлично некоторое время, но их бизнес-модель катилась на лифте вниз. В такой ситуации вас не выручат даже лучшие хакеры.

И всё же я считаю, что при прочих равных компания, способная привлечь великих хакеров, получит колоссальное преимущество. Найдутся те, кто с этим не согласится. Когда в 1990-х мы ходили по венчурным фондам, несколько человек сказали нам, что софтверные компании побеждают вовсе не за счёт создания великолепного софта, а за счёт бренда, контроля над каналами дистрибуции и грамотных сделок.

Они искренне верили в это, и мне кажется, я понимаю почему. По-моему, многие венчурные инвесторы, хотя бы подсознательно, ищут «новую Microsoft». И если ориентироваться на Microsoft, то, конечно, не стоит искать компании, рассчитывающие выиграть за счёт великолепного софта. Но инвесторы ошибаются в поисках новой Microsoft, ведь ни один стартап не сможет повторить её путь, если какая-нибудь другая компания не согласится прогнуться в самый подходящий момент и стать новой IBM.

Брать Microsoft за образец ошибочно, поскольку вся их культура выросла из той единственной счастливой случайности. Microsoft — это аномальная точка данных. Если отбросить её, станет очевидно: качественные продукты действительно побеждают на рынке. Инвесторам стоило бы искать новую Apple или новый Google.

Думаю, Билл Гейтс прекрасно это понимает. В Google его беспокоит не сила их бренда, а то, что у них хакеры лучше. [7]

Распознавание

Так кто же они, великие хакеры? Как распознать такого, встретив лично? Это оказывается невероятно трудно. Даже сами хакеры не способны этого понять. Сейчас я абсолютно уверен, что мой друг Тревор Блэквелл — великолепный хакер. Возможно, вы читали на Slashdot о том, как он собрал собственный Segway. Самое примечательное в этом проекте то, что всю программную часть он написал за один день (кстати говоря, на Python).

Для Тревора это в порядке вещей. Но при первой встрече он показался мне полным идиотом. Он стоял в кабинете Роберта Морриса и без умолку лепетал о чём-то, а я стоял позади него и отчаянно жестикулировал Роберту, призывая выставить этого психа вон, чтобы мы могли пойти пообедать. Роберт признаётся, что поначалу тоже недооценил Тревора. Похоже, когда Роберт впервые встретил его, Тревор как раз затеял новую систему: он записывал вообще всё о каждом аспекте своей жизни на стопку учётных карточек, которые повсюду носил с собой. Кроме того, он только что приехал из Канады, говорил с сильным канадским акцентом и носил стрижку маллет.

Ситуация усугубляется тем, что хакеры, вопреки своей репутации людей социально неосведомлённых, порой прикладывают немало усилий, чтобы казаться умными. Во время учёбы в аспирантуре я частенько наведывался в лабораторию искусственного интеллекта MIT. Поначалу это немного пугало. Все вокруг говорили так быстро! Но вскоре я раскусил секрет быстрой речи. Думать быстрее вовсе не обязательно — достаточно использовать вдвое больше слов, чтобы выразить ту же мысль.

При таком количестве шума в сигнале трудно сходу распознать хорошего хакера. Я не умею этого делать даже сейчас. По резюме этого тоже не понять. Похоже, единственный надёжный способ оценить хакера — поработать с ним над общим проектом.

Именно по этой причине центры высоких технологий возникают исключительно вокруг университетов. Главный действующий фактор здесь — даже не профессора, а студенты. Стартапы вырастают вокруг университетов, потому что университеты собирают вместе перспективную молодёжь и заставляют её работать над одними проектами. Сообразительные замечают таких же сообразительных и вместе затевают уже собственные начинания.

Поскольку великого хакера невозможно распознать, не поработав с ним рука об руку, сами хакеры тоже не представляют, насколько они хороши. До некоторой степени это справедливо для большинства сфер. Я заметил, что люди, достигшие в чём-то истинного величия, вовсе не убеждены в собственном превосходстве — их скорее ставит в тупик вопрос, почему все остальные вокруг кажутся настолько некомпетентными.

Но хакерам особенно трудно осознать свой уровень, потому что их работу трудно сопоставить. В большинстве других областей это куда проще. В беге на сто метров уже через десять секунд ясно, кто быстрее всех. Даже в математике существует общее согласие насчёт того, какие задачи сложны и что считать хорошим решением. Но хакерство сродни писательству. Кто сможет определить, какой из двух романов лучше? Уж точно не их авторы.

В случае с хакерами другие хакеры, по крайней мере, способны составить суждение. Дело в том, что в отличие от романистов они работают над проектами сообща. Когда тебе доводится перебросить через сетку пару сложных задач, довольно быстро понимаешь, с какой силой партнёр отбивает мяч обратно. Но хакеры не могут наблюдать за собой со стороны. Поэтому, если спросить великого хакера, насколько он хорош, он почти наверняка ответит: «Не знаю». И это не просто скромность. Он действительно не знает.

И никто из нас не знает наверняка, за исключением людей, с которыми нам довелось работать лично. Из-за этого мы оказываемся в странном положении: мы не знаем, кто должен быть нашими героями. Хакеры, обретающие известность, обычно становятся знаменитыми благодаря случайным прихотям пиара. Время от времени мне нужно привести пример великого хакера, и я никогда не знаю, кого назвать. Первыми на ум всегда приходят люди, которых я знаю лично, но приводить их в пример кажется неловким. Поэтому я думаю: может быть, назвать Ричарда Столлмана, или Линуса Торвальдса, или Алана Кэя, или кого-то столь же известного. Но я понятия не имею, великие ли они хакеры. Я никогда ни над чем с ними не работал.

Если в хакерстве и есть свой Майкл Джордан, то об этом не знает никто, включая его самого.

Взращивание

Наконец, вопрос, который волнует всех хакеров: как стать великим хакером? Не знаю, можно ли целенаправленно сделать себя таковым. Но совершенно точно можно совершать поступки, которые делают вас глупее, а если можно стать глупее, то, вероятно, можно стать и умнее.

Ключ к тому, чтобы быть хорошим хакером, возможно, заключается в том, чтобы заниматься тем, что тебе нравится. Когда я думаю о знакомых мне великих хакерах, их объединяет одна черта: их невероятно трудно заставить работать над тем, чего они делать не хотят. Не знаю, причина это или следствие; возможно, и то и другое.

Чтобы делать что-то хорошо, нужно это любить. Поэтому в той степени, в какой вам удается сохранять хакерство делом, которое вы любите, вы, скорее всего, будете успешны в нем. Постарайтесь сохранить то чувство изумления от программирования, которое было у вас в 14 лет. Если вы беспокоитесь, что нынешняя работа размягчает ваш мозг, то, скорее всего, так оно и есть.

Лучшие хакеры, разумеется, обычно умны, но это справедливо для многих сфер. Есть ли какое-то качество, присущее исключительно хакерам? Я спросил нескольких друзей, и первым делом они назвали любопытство. Я всегда предполагал, что все умные люди любопытны — что любопытство является просто первой производной от знания. Но, судя по всему, хакеры любопытны в особенности, особенно по части того, как всё устроено. В этом есть смысл, ведь программы по сути — это гигантские описания того, как всё работает.

Несколько друзей отметили способность хакеров к концентрации — их умение, как выразился один из них, «отключать всё, что находится вне их собственной головы». Я определенно это замечал. И я слышал от нескольких хакеров, что даже после полубутылки пива они вообще не могут программировать. Так что, возможно, хакерство действительно требует особой способности к фокусировке. Возможно, великие хакеры могут удерживать в голове огромный объем контекста, так что, глядя на строчку кода, они видят не просто эту строчку, а всю программу целиком вокруг нее. Джон Макфи писал, что успех Билла Брэдли как баскетболиста был отчасти обусловлен его выдающимся периферическим зрением. «Идеальное» зрение означает около 47 градусов вертикального периферического обзора. У Билла Брэдли было 70; он мог видеть корзину, глядя в пол. Возможно, у великих хакеров есть схожая врожденная способность. (Я же жульничаю, используя очень плотный язык, который уменьшает размеры площадки.)

Это могло бы объяснить взаимное непонимание по поводу офисных закутков-кубиклов. Возможно, люди, отвечающие за организацию пространства, сами не обладая никакой концентрацией, которую можно было бы разрушить, понятия не имеют, что работа в кубикле ощущается хакером так, будто его мозг сунули в блендер. (Тогда как Билл, если слухи об аутизме правдивы, знает об этом слишком хорошо.)

Одно отличие между великими хакерами и просто умными людьми, которое я заметил, заключается в том, что хакеры более политически некорректны. Если среди хороших хакеров и существует тайное рукопожатие, то это момент, когда они узнают друг друга достаточно хорошо, чтобы высказывать мнения, за которые широкая публика забила бы их камнями. И я понимаю, почему неполиткорректность может быть полезным качеством в программировании. Программы очень сложны и, по крайней мере в руках хороших программистов, очень текучи. В таких условиях полезно иметь привычку ставить предположения под сомнение.

Можно ли развить эти качества? Не знаю. Но по крайней мере можно их не подавлять. Вот мой лучший вариант рецепта. Если великим хакером вообще можно стать, путь к этому может заключаться в следующей сделке с самим собой: вы никогда не работаете над скучными проектами (если только в противном случае вашей семье не грозит голодная смерть), а взамен никогда не позволяете себе халтурить. Все знакомые мне великие хакеры, похоже, заключили именно такую сделку, хотя, возможно, ни у кого из них не было другого выбора.

Примечания

[1] Справедливости ради надо сказать, что IBM делает приличное железо. Я написал это на ноутбуке IBM.

[2] Они действительно оказались обречены. Они закрылись несколько месяцев спустя.

[3] Думаю, именно это люди имеют в виду, когда говорят о «смысле жизни». На первый взгляд, это кажется странной идеей. Жизнь — это не высказывание; как у нее может быть смысл? Но она может обладать свойством, которое очень похоже на смысл. В таком проекте, как компилятор, приходится решать множество проблем, но все они укладываются в закономерность, как в полезном сигнале. Тогда как случайные проблемы, которые приходится решать, кажутся просто шумом.

[4] Эйнштейн в свое время работал над конструкцией холодильников. (У него была доля в бизнесе.)

[5] Трудно сказать точно, что именно представляет собой исследовательская деятельность в компьютерном мире, но в первом приближении это софт, у которого нет пользователей.

Не думаю, что лучших хакеров привлекает в исследовательские отделы возможность публиковаться. Думаю, дело главным образом в том, что там не нужно сидеть на трехчасовом совещании с продакт-менеджером, обсуждая проблемы интеграции корейской версии Word 13.27 с говорящей скрепкой.

[6] Нечто подобное уже давно происходит в строительной индустрии. Когда пару сотен лет назад вам строили дом, местные строители сами делали в нем абсолютно всё. Но со временем строители всё чаще просто собирают готовые компоненты, спроектированные и произведенные кем-то другим. Это, как и появление настольных издательских систем, дало людям свободу экспериментировать самым катастрофическим образом, но это определенно более эффективно.

[7] Google куда опаснее для Microsoft, чем была в свое время Netscape. Возможно, опаснее любой другой компании в истории. Не в последнюю очередь потому, что они полны решимости бороться. На странице с вакансиями они заявляют, что одна из их «ключевых ценностей» — «Don't be evil» («Не будь злом»). Для компании, продающей соевое масло или горнодобывающее оборудование, такое заявление было бы просто эксцентричным. Но я думаю, все мы в компьютерном мире прекрасно понимаем, кому этим объявлена война.

Спасибо Джессике Ливингстон, Роберту Моррису и Саре Харлин за прочтение ранних версий этого доклада.