Пол Грэм

Первоклассные хакеры

Июль 2004

Перевод: Илья Этингоф, 01/08/2004. Оригинал статьи находится по адресу http://www.paulgraham.com/gh.html

(Это статья написана по-материалам моего выступления на конференции Oscon 2004)

Несколько месяцев назад я выпустил книгу [11], в отзывах на которую часто встречались слова "провокационная" и "противоречивая", чтобы не сказать "идиотская".

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

Эдисоны

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

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

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

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

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

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

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

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

Не только деньги

Когда я пытаюсь понять, что же есть общего у того небольшого числа первоклассных хакеров, с которыми я знаком, то первейшим общим свойством оказывается их любовь к занятию программированием. Рядовые программисты работают в основном ради денег. Выдающиеся хакеры считают свою работу одним из величайших удовольствий а то, что кто-то еще и платит им за работу, как удачу.

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

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

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

Когда я работал в одном стартапе [12], в офисе, на доске объявлений, среди прочего висела рекламная листовка фирмы IBM, на которой был изображен компьютер серии AS400 а надпись поверх гласила: "Презираем хакерами". [1] Дело в том, что выбирая инструменты для работы над тем или иным проектом, вы принимаете не только и не столько техническое решение. Вы также выбираете еще и сообщество, которое сформируется для работы над проектом, а это, как представляется, еще важнее. Представьте, что Ваша компания решила разработать какую-то новую программу. Казалось бы, что в наше время для новых разработок следует использовать язык Java. Но выбрав язык мы автоматически выбираем и сообщество разработчиков. Программисты на Java, которых Ваша компания сможет нанять для работы над проектом, окажутся, в среднем, хуже подготовлены чем разработчики на языке Python.[2] А качество инженеров, работающих над проектом, вероятно важнее используемого языка программирования. Между прочим, если по-честному, тот факт, что первоклассные хакеры предпочитают язык Python языку Java, кроме прочего еще и характеризует относительные качества этих инструментов программирования.

Люди бизнеса предпочитают наиболее популярные языки потому, что рассматривают их как стандарты. Руководители компании едва ли пойдут по пути фирмы Сони, чей формат видеозаписи Бетамакс, в свое время, проиграл в конкурентной борьбе формату VHS, который, в отличие от Бетамакса, лицензировался многим независимым производителям. Но дело в том, что языки программирования это не просто стандарты. Когда Вам потребуется переслать биты данных из точки А в точку Б, то Вы, вероятно, используете самый распространенный в наши дни способ, протокол TCP/IP. А вот с языком программирования ситуация сложнее, поскольку он не только инструмент но еще и среда для творчества.

Я где-то читал, что язык Java не так давно стал самым популярным инструментом программирования, опередив по популярности Кобол. Для языка, как стандарта, это, безусловно, большой успех. Но в качестве среды для творчества языку Java еще есть к чему стремится. Из всех знакомых мне выдающихся программистов я знаю только одного человека, который бы добровольно выбрал бы язык Java для работы. И то в связи с тем, что этот человек работает в фирме Sun Microsystems. [13]

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

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

Последний оплот

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

Герою комиксов Дилберту было что сказать о кубиклах [14]. Все мои знакомые хакеры не любят их. Одна только перспектива в любой момент оказаться оторванным от решения сложной проблемы каким-нибудь проходящим мимо сотрудником не дает хакерам начать сложную работу в кубикле. В результате им остается работать дома или приходить в офис до или после рабочего дня или в выходные, когда в офисе никого нет. Удивительно, что крупные компании не замечают этой проблемы. Ведь офис предназначался для комфортной работы, а вовсе не для создания дополнительных помех сотрудникам.

Большие компании, такие как Cisco Systems, гордятся тем, что каждый их сотрудник, включая генерального директора, имеет собственный кубикл. К сожалению, они не так прогрессивны как им представляется: по-видимому они по-прежнему рассматривают кубиклы как аттрибут социального положения. Заметим, между прочим, что Cisco известна небольшими объемами собственных разработок. Вместо этого Cisco приобретает небольшие молодые компании, которые разработали ту или иную технологию. По-видимому эти компании как раз и есть та тихая заводь где водятся первоклассные хакеры.

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

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

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

Правильная работа

Помимо качественных инструментов, хакеры хотят работать над интересными задачами. Так что же делает проект интересным для хакеров? Разумеется, высокотехнологичные разработки вроде самолетов-невидимок или моделирования спецэффектов были бы им интересны. И хотя, в принципе, любая задача может оказаться привлекательной, если она требует решения новых технических проблем, не так то просто определить, какими проблемами заинтересуются хакеры. Ведь задача может стать им интересной лишь если в какой-то момент будет найдено какое-нибудь новое решение. До того, как компания ITA (которая разрабатывала ПО под эгидой фирмы Orpitz) занялась разработкой ПО для резервирования билетов на авиарейсы, программисты считали, что нет на свете более скучной задачи. Однако ITA переформулировала проблему и в менее однозначной редакции, та стала более интересной.

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

Это одна из областей, где управленцы могут на что-то повлиять. Подобно родителю, который бьется о заклад с ребенком о том, что тот не сможет убрать свою комнату за 10 минут, менеджеры иногда могут переформулировать проблему в более интересном ключе. Кажется, Стив Джобз в этом особенно преуспел - в части поддержания высокой планки. В те времена, когда фирма Apple начинала свой бизнес, рынок уже был насыщен недорогими персоналками. Так вот, задача, в формулировке Джобса, была: сделать симпатичную персоналку. И это, вероятно, подействовало на инженеров Apple не хуже, чем морковка или палка на осла.

И у них получилось! Когда только появился первый Mac, не нужно было даже включать его чтобы понять, что это отличная разработка. Это было видно по корпусу. Несколько недель назад я прогуливался по Кэмбриджу и вот в чьем-то мусорном ведре я увидел то, что оказалось сумкой для Mac-а. Я открыл сумку и увидел Mac SE. Я отнес его домой, включил, и он загрузился. Улыбка Макинтоша а затем и его знаменитый палец. Ох, это было так просто. Просто как... Google.

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

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

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

Дурацкая работа

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

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

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

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

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

Большие компании решают эту проблему разделяясь на части. Они привлекают толковых людей приглашая их в отдельный исследовательский отдел, куда не добираются конечные пользователи со своими неинтересными проблемами. [5] При такой организации, исследовательский отдел выполняет роль генератора идей, которые, возможно, смогут использовать остальные отделы компании.

Однако это не единственно возможный подход. Методика программирования "снизу вверх" предлагает иной способ специализации внутри компании: можно привлечь толковых инженеров к производству инструментария для создания продукта компании. В таком случае 99% кода конечного продукта окажется написано профессионалами, но вместе с тем они, как и в случае с выделенным исследовательским отделом, будут почти полностью изолированны от конечных пользователей. Производители инструментария будут иметь конечных пользователей, но ими окажутся собственные разработчики компании. [6]

Возможно, если бы Microsoft использовал подобный метод разработки, то их программы не содержали бы такое количество ошибок, поскольку наиболее критичные части кода (вроде управления памятью) были бы написаны наиболее толковыми инженерами. Вместо того, чтобы писать программу Word полностью на языке С, можно было бы создать инструмент -- специальную, высокоуровневую среду разработки, и собрать Word из кусочков, подобно конструктору Lego.

Кучкование

Помимо интересной работы, первоклассные хакеры любят работать вместе. Хорошие инженеры сами собой собираются в группы, порой весьма значительные, как случилось в компании Xerox. [15] По этой причине у вас не получилось бы привлечь тем больше первоклассных хакеров, чем лучшие условия вы бы создали для них. Эта тенденция, собираться в колонии, меняет линейную зависимость количества хакеров от качества условий на квадратичную. В конечном счете возникает ситуация "все или ничего". В любой момент времени, на рынке, существуют десяток мест, где первоклассные хакеры хотели бы работать. Если ваша компания не в их числе, то у вас не просто будет меньше хакеров, их не окажется вовсе.

Однако одно наличие в команде первоклассных хакеров не гарантирует успех компании. Например, у Google и ITA дела идут отлично, в этих компаниях в данный момент собрались первоклассные хакеры, но вот у компаний Thinking Machines и Xerox все не так хорошо. Некоторое время хорошо работала компания Sun, но если выбрана неправильная бизнес модель, то даже лучшие хакеры не смогут спасти компанию.

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

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

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

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

Как узнать первоклассного хакера

Так кто же, из множества людей работающих в ИТ области, относится к настоящим хакерам? Как распознать первоклассного хакера при встрече? Оказывается, не так просто. Даже сами хакеры не всегда могут сказать. Сейчас я совершенно уверен, что мой друг Тревор Блэквел -- первоклассный хакер. Вы могли прочитать на Slashdot-е [16] заметку о том, как Тревор разработал и сделал свой собственный Segway [17]. Замечательная деталь об этом проекте, что все ПО для скутера Тревор написал за один день (на языке Python, кстати). Для Тревора, это нормально. А когда я первый раз встретил его, мне показалось, что он полный идиот. Я увидел его в офисе Роберта Морриса бормочущим то о том то о другом, и я помню как я стоял позади Тревора и жестами пытался заставить Роберта выгнать того из офиса. Потом Роберт рассказал мне, что и он ошибся насчет Тревора. Ко времени их первой встречи Тревор как раз начинал проектировать новую схему, причем ход работы он записывал в блокноте, который всегда носил с собой. К тому же он только что вернулся из Канады, прихватив с собой сильный канадский акцент и модную прическу в стиле mullet.

Задача распознавания хакера усложняется еще и тем, что, несмотря на репутацию ребят замкнутых и нелюдимых, хакеры иногда стараются выглядеть умно. Когда я учился в университете, я время от времени проходил мимо лаборатории искусственного интеллекта в MIT. Там было неуютно. Все говорили очень быстро и непонятно. Через некоторое время, я понял в чем тут дело. Нет необходимости соображать также быстро -- достаточно просто произносить слов больше, чем необходимо для изложения сути дела.

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

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

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

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

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

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

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

Как стать первоклассным хакером

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

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

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

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

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

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

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

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

Примечания:

[1] Говоря по-правде, я должен отметить, что IBM производит вполне приличные компьютеры. Я написал эту статью на лэптопе IBM.

[2] Когда Google приглашает работу программистов на Java, они также еще и требуют опыта программирования на языке Python.

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

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

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

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

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

[7] Google гораздо опаснее для Microsoft чем Netscape. Возможно даже это самая опасная компания из всех существовавших до сих пор. Не в последнюю очередь потому, что Google полна решимости бороться. На их страничке отдела кадров написано, что одна из их главных ценностей: не быть монстром. Для компании, занимающейся продажей соевого масла или горнопроходческого оборудования подобное заявление выглядело бы эксцентрично. Но мне кажется, что всем нам, людям из ИТ отрасли, совершенно очевидно, что означает это заявление.

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

Примечания переводчика:

[11] "Hackers and Painters"

[12] Стартап (от англ. "start up") -- небольшая начинающая, как правило высокотехнологическая, компания.

[13] Sun Microsystems -- разработчик языка Java

[14] Cubicle - секция офиса выгороженная для одного сотрудника. Дилберт -- герой весьма едких комиксов на темы офисной жизни корпоративной Америки.

[15] По-видимому имеется в виду начало 80-х годов прошлого века. Тогда инженеры Ксерокса, разработали, в частности, концепцию графического интерфейса пользователя, а также реализовали ее в проекте X-Window System.

[16]
Slashdot - новости для технарей.

[17] Балансирующий электросамокат Segway и собственная разработка Тревора.

[18] Вероятно речь идет об интерактивной подсказке в программе Word. Эта подсказка может принимать образ канцелярской скрепки.