Первоклассные хакеры
АрхивМненияПродуктивность программистов может разительно отличаться. К самым продуктивным программистам стоит присмотреться внимательнее. Что ими движет? Как привлечь их к работе? И, наконец, как самому стать одним из них?
Перевод - Илья Этингоф. Оригинал статьи можно найти по адресу http://www.paulgraham.com/gh.html
Несколько месяцев назад я выпустил книгу*, в отзывах на которую часто встречались слова "провокационная" и "противоречивая", чтобы не сказать "идиотская".
*) Речь идёт о книге "Хакеры и живописцы". Читателям "Компьютерры-Онлайн" знакома одна из её глав - "Языки программирования через сто лет".
Я не собирался писать противоречивую книгу. Скорее наоборот, я хотел сделать книгу сжатой и конкретной. Я не хотел бы тратить время читателей на изложение уже известных им вещей, а написать лишь о том, что, как мне кажется, могло бы оказаться новым и интересным для моих читателей. Но, по-видимому, такой подход к делу грозит обернуться чуть ли не скандалом.
Эдисоны
Среди рецензентов нет противоречий по поводу того, какая из идей в книге наиболее противоречива. Очевидно, это предположение о том, что расслоение общества по уровню доходов, должно быть, вовсе не такая великая проблема, как представляется на первый взгляд.
Я не утверждаю, что значительный разрыв в благосостоянии сам по себе хорош. Однако он может быть признаком правильной организации общества. Как, например, нет ничего хорошего в мигрени, но если речь идет о сотрясении мозга, то головная боль есть первый признак выздоровления.
Различия в уровне доходов могут отражать различия в производительности, и это хорошо, поскольку, если в обществе все работают одинаково, то это, скорее всего, не потому что каждый там талантлив как Томас Эдисон, а скорее, потому что в таком обществе нет ни одного Эдисона.
В традиционных, невысокотехнологичных сообществах не обнаруживается заметных различий в производительности его членов. Возьмем к примеру какое-нибудь первобытное племя охотников-собирателей. Насколько продуктивнее окажется самый лучший собиратель? Ну, скажем, раза в два. А вот с появлением совершенных инструментов, вроде компьютеров, оказывается, что возможности отдельных людей возрастают неимоверно!
Все это известно давно, в 1974 году Фред Брукс опубликовал результаты исследования на данную тему, проведенного еще в 1968 году. Сейчас мне кажется, что он недооценил различия, существующие среди программистов. Он оценивал продуктивность программистов в количестве строк кода, которые те были способны произвести, или во времени, потраченном на решение задачи - лучшие программисты могли решить задачу в десять раз быстрее коллег. Но что, если задача не поставлена вовсе? В программировании, как и во многих других областях человеческой деятельности, проблема заключается не столько в решении задач, а в их формулировке. Трудно точно оценить развитость воображения, но на практике именно эта оценка производительности программиста оказывается более точной.
В любой области деятельности продуктивность людей различается, однако в наше время существуют несколько родов занятий, в которых несовпадения могут быть разительны. В программировании такие количественные различия переходят в качественные, хотя, по-видимому, не только в нем. Где бы то ни было, технология наращивает разброс в уровне производительности, а в программировании - в первую очередь. Таким образом, мне кажется, что постепенно продуктивность людей, занятых в других областях, будет разниться все больше. И в конце концов, успех компаний и даже стран будет все больше зависеть от того, как те справляются с этими разбросами в продуктивности.
По мере того как продуктивность различается все больше благодаря современным технологиям, вклад наиболее успешных сотрудников окажется не только непропорционально велик, но и продолжит со временем расти. Достигнув состояния, когда 90% продукции обеспечивается 1% населения, сообщество становится уязвимо, если какие-либо неожиданности (вроде набега викингов) снижают продуктивность наиболее полезных членов сообщества.
Если мы желаем выжать максимум пользы из самых продуктивных людей, нам следует повнимательнее к ним присмотреться. Что движет ими в их деятельности? В чем они нуждаются для выполнения работы? Как распознать самых продуктивных людей? Как привлечь их к работе? И, наконец, как самому стать одним из продуктивнейших людей сообщества?
Не только деньги
Когда я пытаюсь понять, что же общего у того небольшого числа первоклассных хакеров, с которыми я знаком, то первейшей схожей их характеристикой оказывается любовь к занятию программированием. Рядовые программисты работают, в основном, ради денег. Выдающиеся хакеры считают свою работу одним из величайших удовольствий, а то, что кто-то еще и платит им за работу, почитают за удачу.
Иногда говорят, что первоклассные хакеры безразличны к деньгам, но это не вполне верно. Правильно тут то, что приоритетом у выдающихся программистов является привлекательность задачи. С другой стороны, имея достаточно денег, можно было бы работать над любой, по собственному выбору, интересной задачей, а такая перспектива привлекает первоклассных хакеров. Однако пока приходится работать за деньги, хакеров более занимает интересность задачи, нежели размер зарплаты.
И это самый важный, с экономической точки зрения, факт, поскольку в таком случае нет необходимости платить первоклассному хакеру столько, сколько на самом деле стоит его работа. Выдающийся программист может быть в десять или сто раз продуктивнее, чем его рядовой коллега, но он будет счастлив зарабатывать хотя бы раза в три больше. Далее я поясню, что отчасти этот феномен связан с тем, что первоклассные хакеры просто не знают, насколько хорошо они выполняют свою работу. Но это все же еще и потому, что деньги - не главная их цель.
Так что же нужно хакерам? Как и любой мастер своего дела, они любят качественные инструменты. А в программировании это особенно важно. Хорошие программисты просто не выносят некачественных инструментов. Они, скорее, вовсе откажутся участвовать в работе над неправильно организованным проектом.
Когда я работал в одном стартапе, в офисе на доске объявлений среди всего прочего висела рекламная листовка фирмы IBM, на которой был изображен компьютер серии AS400, а надпись поверх гласила что-то вроде: "Презираем хакерами"*. Дело в том, что выбирая инструменты для работы над тем или иным проектом, вы принимаете не только и не столько техническое решение. Вы также выбираете еще и сообщество, которое сформируется для работы над проектом, а это, как представляется, еще важнее.
*) Честно говоря, я должен отметить, что IBM производит вполне приличные компьютеры. Я написал эту статью на ноутбуке IBM.
Представьте, что ваша компания решила разработать какую-то новую программу. Казалось бы, в наше время для новых разработок следует использовать язык Java. Но выбрав язык, мы автоматически выбираем и сообщество разработчиков. Программисты на Java, которых ваша компания сможет нанять для работы над проектом, окажутся, в среднем, хуже подготовлены, чем разработчики на языке Python*. А качество инженеров, работающих над проектом, вероятно, важнее используемого языка программирования. Между прочим, если говорить честно, тот факт, что первоклассные хакеры предпочитают язык Python языку Java, кроме всего прочего, еще и характеризует относительные качества этих инструментов программирования.
*) Когда Google приглашает на работу программистов на Java, они еще и требуют опыта программирования на языке Python.
Люди бизнеса предпочитают наиболее популярные языки, потому что рассматривают их как стандарты. Руководители компании едва ли пойдут по пути фирмы Sony, чей формат видеозаписи Betamax в свое время проиграл в конкурентной борьбе формату VHS, который, в отличие от Betamax, лицензировался многим независимым производителям. Но дело в том, что языки программирования - это не просто стандарты. Когда вам потребуется переслать биты данных из точки А в точку Б, то вы, вероятно, используете самый распространенный в наши дни способ, протокол TCP/IP. А вот с языком программирования ситуация сложнее, поскольку он не только инструмент, но еще и среда для творчества.
Я где-то читал, что язык Java не так давно стал самым популярным инструментом программирования, опередив по популярности "Кобол". Для языка, как стандарта, это, безусловно, большой успех. Но в качестве среды для творчества языку Java еще есть, к чему стремиться. Из всех знакомых мне выдающихся программистов я знаю только одного человека, который добровольно выбрал бы язык Java для работы. Да и то, в связи с тем, что этот человек работает в фирме Sun Microsystems.
Выдающиеся хакеры, как правило, стремятся использовать ПО с открытым кодом. Не потому, что качество таких программ выше, а потому что исходные тексты дают разработчикам практически полный контроль над процессом разработки, отладки и эксплуатации программ. А хорошие программисты желают иметь максимально полное управление в разрабатываемой системе. Ведь именно полный контроль делает простых разработчиков выдающимися хакерами, давая им возможность самостоятельно одолеть ту или иную проблему в системе.
Несколько лет назад один мой приятель, инвестор, рассказал мне о планах фирмы, с которой был связан. Их перспективы выглядели вполне радужно. Спустя некоторое время, когда я снова встретил этого человека, оказалось, что руководство компании решило разрабатывать свой продукт для Windows NT, и что они наняли опытного NT разработчика в качестве ведущего инженера проекта. Тогда я подумал, что эта компания обречена. Во-первых, даже опытнейший разработчик для Windows NT не может быть первоклассным хакером, так как для того, чтобы набраться опыта программирования для Windows NT, необходимо добровольно и неоднократно использовать эту платформу, а я не могу себе представить выдающегося хакера за этим занятием. И во-вторых, даже если окажется, что программист для Windows NT действительно хорош, то ему окажется непросто подобрать команду первоклассных хакеров для участия в программировании для Windows NT*.
*) Они и впрямь были обречены. Та компания закрылась через несколько месяцев.
Последний оплот
Говоря об инструментах первоклассного хакера, следующим по важности после программ, по-видимому, оказывается его офис. В больших компаниях место сотрудника в офисе подчеркивает его положение в служебной иерархии. Но для хакеров офис - это еще и место, где они работают над решением задач. Заставлять первоклассных хакеров работать в шумной и отвлекающей обстановке - все равно, что красить автомобили в запыленном помещении.
Герою комиксов Дилберту было что сказать о кубиклах*. Все мои знакомые хакеры не любят их. Одна только перспектива в любой момент оказаться оторванным от решения сложной проблемы каким-нибудь проходящим мимо сотрудником не дает хакерам начать сложную работу в кубикле. В результате, им остается работать дома или приходить в офис до или после рабочего дня или в выходные, когда в офисе никого нет. Удивительно, что крупные компании не замечают этой проблемы. Ведь офис предназначался для комфортной работы, а вовсе не для создания дополнительных помех сотрудникам.
*) Кубиклами (cubicle) называются секции в офисе, разделённом невысокими перегородками на крохотные рабочие места на одного сотрудника. Дилберт - герой весьма едких комиксов на темы офисной жизни корпоративной Америки. Примечание переводчика.
Большие компании, такие как Cisco Systems, гордятся тем, что каждый их сотрудник, включая генерального директора, имеет собственный кубикл. Увы, они не так прогрессивны, как им представляется: по-видимому, они до сих пор рассматривают кубиклы как аттрибут социального положения. Заметим, между прочим, что Cisco известна небольшими объемами собственных разработок. Вместо этого, Cisco приобретает небольшие молодые компании, которые разработали ту или иную технологию. По-видимому, эти компании как раз и есть тот тихий омут, в котором водятся первоклассные хакеры.
Существует, однако, одна большая компания, в которой понимают, что нужно хакерам - это Microsoft. Однажды я встретил объявление о приеме на работу в Microsoft. На листовке была изображена дверь, а надпись гласила: работайте у нас, и мы дадим вам возможность работать там, где вы сможете выполнить свою работу. А знаете, что Microsoft отличается от других больших компаний тем, что им удается создавать значительную часть ПО собственными силами? И хотя результат мог бы быть и лучше, но все-таки, он достаточно хорош.
Если компании хотят от хакеров максимально производительной работы, то им следует посмотреть, как хакеры работают у себя дома. Ведь дома человек организует свое рабочее место наилучшим для себя, максимально эффективным образом. Дома хакеры избегают открытых, шумных мест; они работают в комнатах за закрытыми дверьми, в уютных, расположенных по соседству помещениях. Когда им бывает нужно обсудить что-либо друг с другом, они отправляются куда-нибудь погулять, вместо того чтобы встречаться в стеклянных "аквариумах", нарезанных на манер мест для парковки автомобиля. Дома хакеры устраивают себе место для отдыха, где они могут вздремнуть, а не сидеть на рабочем месте в состоянии комы, делая вид, что работают. И над ними не вьется команда уборщиц с пылесосами каждый вечер, отвлекая от работы в самое продуктивное время. Дома у них нет совещаний, корпоративных мероприятий и упражнений по укреплению навыков работы в команде. А если вы посмотрите, что хакеры делают на своем домашнем компьютере, то обнаружите лишь подтверждение того, о чем я говорил ранее в главе об инструментах. Хакеры могут использовать Java и Windows на работе, но дома, в ситуации свободного выбора, вы, вероятнее всего, встретите на их компьютерах Perl и Linux.
Тогда, возможно, та статистика о популярности языка Java покажется вам не вполне корректной. Если мы хотим выяснить, какие же из инструментов и в самом деле самые качественные, нам стоит посмотреть, что же выбирают хакеры, когда у них есть выбор, то есть в их собственных проектах. Тогда может оказаться, что операционные системы с открытым кодом уже захватили большую часть рынка, а самый распространенный язык программирования - это, вероятно, Perl.
Правильная работа
Помимо качественных инструментов, хакеры хотят работать над интересными задачами. Так что же делает проект интересным для хакеров? Разумеется, высокотехнологичные разработки, вроде самолетов-невидимок или моделирования спецэффектов, были бы им интересны. И хотя, в принципе, любая задача может оказаться привлекательной, если она требует решения новых технических проблем, не так просто определить, какими проблемами заинтересуются хакеры. Ведь задача может стать для них интересной, лишь если в какой-то момент будет найдено некое новое решение. До того как компания ITA (которая разрабатывала ПО под эгидой фирмы Orpitz) занялась разработкой ПО для резервирования билетов на авиарейсы, программисты считали, что нет на свете более скучной задачи. Однако ITA переформулировала проблему, и в менее однозначной редакции та стала интереснее.
Мне кажется, что-то подобное произошло в компании Google. В те времена, когда была основана Google, разработчикам так называемых "порталов" задача поиска казалась несущественной и скучной. Но хакеры из Google не считали проблему поиска скучной, и потому у них все получилось так хорошо.
Это одна из областей, где управленцы могут на что-то повлиять. Подобно родителю, который держит с ребенком пари на то, что тот не сможет убрать свою комнату за десять минут, менеджеры иногда могут переформулировать проблему в более интересном ключе. Кажется, Стив Джобс в этом особенно преуспел - в части поддержания высокой планки. В те времена, когда фирма Apple начинала свой бизнес, рынок уже был насыщен недорогими персоналками. Так вот, задача, в формулировке Джобса, была - сделать симпатичную персоналку. И это, вероятно, подействовало на инженеров Apple не хуже, чем морковка или палка на осла.
И у них получилось! Когда только появился первый "Maк", не нужно было даже включать его, чтобы понять, что это отличная разработка. Это было видно по корпусу. Несколько недель назад я прогуливался по Кембриджу, и в чьем-то мусорном ведре я увидел то, что оказалось сумкой для "Maка". Я открыл ее и увидел Mac SE. Я отнес его домой, включил, и он загрузился. Улыбка "Макинтоша", а затем и его файловый менеджер Finder. Ох, это было так просто. Просто, как... Google.
Высококлассным хакерам нравится работать с людьми, которые устанавливают высокую планку. Однако одной педантичности недостаточно. Необходимо также следовать правильным техническим решениям, что означает, что менеджер сам тоже должен быть высококлассным хакером. Мне встречались статьи о том, как управлять коллективом программистов. На самом деле должно быть две статьи по этому поводу - для программистов и непрограммистов. Так вот, последняя статья может содержать только три слова: ничего не выйдет.
Работа менеджера команды хороших программистов заключается не столько в каждодневном управлении: хорошие программисты, как правило, вовсе не требуют руководства, так как сами успешно управляют своими проектами. А вот непрограммисту трудно понять, насколько хорошо работает тот или иной его подчиненный. Похожая ситуация возникла с американскими автомобилями - я называю ее парадоксом дизайна. Допустим, вы задались целью создать какой-нибудь замечательно красивый продукт и хотели бы для начала пригласить талантливого дизайнера. Так вот, если допустить, что у вас нет художественного вкуса, то как определить, какой дизайнер действительно талантлив? Судить по его прежним работам вам не дано по определению. Ориентироваться на награды или прежние места работы бессмысленно, поскольку в дизайне, как и во многих других областях, эти вещи, в первую очередь, зависят от моды и частных договоренностей и лишь потом - от художественных качеств. Из этого парадокса нет выхода: вам не удастся создать прекрасную вещь, не понимая, что такое красота и гармония. Так вот, американские автомобили не красивы, потому что американскими автомобильными компаниями управляют люди с плохим вкусом.
Многие люди в Америке считают вкус чем-то иллюзорным или даже пошлым, но это не так. Менеджер, от которого зависит дизайн продукта, должен стать самым капризным и требовательным пользователем. А если повезет, и у нашего руководителя окажется хороший вкус, как он обнаружился у Стива Джобса, тогда наша задача может привлечь первоклассных хакеров.
Читайте продолжение статьи "Первоклассные хакеры": где водятся первоклассные хакеры, что они любят, зачем они нужны, как отличить их от обыкновенных программистов, можно ли самому стать таким же, и почему Google так опасен для Microsoft.