Русский Журнал
СегодняОбзорыКолонкиПереводИздательства

Gateway | Невод | Интер(офф)вью | Бессрочная Ссылка | НасНет | ГлобусНет | Интер(акти)вью | Дурацкий Музей | Кафедра | Русская сеть: истории | Конец прекрасной эпохи
/ Net-культура / Gateway < Вы здесь
Хакеры и художники
Оригинал статьи - здесь

Дата публикации:  23 Мая 2003

получить по E-mail получить по E-mail
версия для печати версия для печати

Перевод Анастасии Грызуновой

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

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

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

Мне никогда не нравился термин "наука "информатика"". Главным образом потому, что такой науки не бывает. "Информатика" - мешок старьевщика, куда история капризно свалила кучу слабо связанных областей науки - получилась какая-то Югославия. На одном полюсе математики, которые зовут свою работу информатикой, чтобы получать гранты DARPA. На экваторе - какое-нибудь компьютерным естествознание: скажем, поведение алгоритмов при передаче данных по сетям. А на другом полюсе - хакеры; они пишут интересное ПО, и компьютеры для них - только среда самовыражения, как бетон для архитектора или краска для художника. Все равно что математиков, физиков и архитекторов согнать на один факультет.

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

"Что" и "как" разделять не следует. Пытаясь решить, что делать и не понимая, как, просто напрашиваешься на неприятности. Но безусловно, хакеры не просто умеют решать, как воплотить спецификацию. В своем апогее хакерство спецификации создает - правда, как выясняется, чтобы создать спецификацию, лучше всего ее воплотить.

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

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

Математиков это вроде бы не тревожит. Они с радостью ограничиваются теоремами, как и прочие математики с матфака, и вскоре, я думаю, перестают замечать, что на доме, куда они ходят на работу, снаружи висит вывеска "информатика". Но хакерам от этой вывески - одна головная боль. Если хакеры занимаются наукой, значит, им и действовать надо по-научному. И хакеры из университетов и научно-исследовательских лабораторий считают, что должны писать научные труды, а не делать, что хочется - создавать прекрасные программы.

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

К сожалению, прекрасные вещи - далеко не всегда идеальная тема для отчета. Во-первых, научная работа должна быть оригинальной - и, как знает всякий, кто защищал кандидатскую, на девственную территорию есть лишь одна тропа: нужно застолбить участок, на который никто по доброй воле не покусится. Во-вторых, научная работа должна быть солидной: с кривоватыми системами доклады выходят содержательнее, - можно писать о препятствиях, которые автор преодолел, прежде чем все получилось. Для содержательного труда нет ничего лучше ошибочных выводов в начале. Тому примером большинство работ по искусственному интеллекту; если заключить, что знание можно представить рядом утвердительных логических выражений, где аргументы - абстрактные концепции, можно тонну диссертаций написать о том, как сделать, чтобы это заработало. Как говаривал Рики Рикардо, "Люси, ты должна многое объяснить".

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

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

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

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

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

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

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

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

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

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

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

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

Ну, разумеется - страница формул впечатляет. (Совет: для особой выразительности вводите греческие переменные.) И потому так соблазнительно заняться проблемами, к которым можно подойти формально, а не над теми, что, скажем так, важны.

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

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

Я сам обнаружил это совсем недавно. Когда Yahoo купила Viaweb, меня спросили, чем я хочу заниматься. Мне бизнес-аспекты никогда особо не нравились, и я сказал, что хочу заниматься одним хакерством. Попав в Yahoo, я обнаружил, что для них это означает воплощать программные продукты, а не создавать. Программисты для них - это такие технологи, которые переводят видения (ну, назовем их так) менеджеров на язык кода.

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

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

Так что если вы придумаете, как ввязаться в войну разработок с достаточно крупной компанией, чье ПО создают менеджеры по продукции, компания за вами никогда не угонится. Только возможностей - кот наплакал. Крупную корпорацию трудно втянуть в войну разработок: трудно же втянуть противника, что окопался в крепости, в рукопашную битву. Написать текстовый процессор лучше, чем Microsoft Word, например, нетрудно, однако Microsoft в неприступном замке своей монополии на операционные системы вас с вашим процессором, вероятно, и не заметит.

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

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

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

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

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

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

Разумеется, идея не нова. На этом строится все программирование с открытыми исходниками. Я, собственно, хочу сказать, что, может, open source - верная модель: ее правильность независимо подтверждают и все остальные творцы.

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


поставить закладкупоставить закладку
написать отзывнаписать отзыв


Предыдущие публикации:
Карлин Лиллингтон (Karlin Lillington), Изобретатель киберпространства отступает в настоящее /13.05/
Карлин Лиллингтон беседует с Уильямом Гибсоном, чьи работы повлияли на кинорежиссеров, писателей, технологов, ученых и тысячи простых людей.
Эрик Шмидт (Eric Schmidt), "Google работает не так, как обычная корпорация..." /06.05/
Изложение интервью исполнительного директора самой модной корпорации.
Джеймс Беннетт (James C. Bennett), Англосфера: букварь (1) /29.04/
Теория Англосферы изучает реальность, в которой практически по любому критерию успешного гражданского общества (благосостояние, политические свободы, общественное доверие, новые компании, инновации) государства Англосферы оказываются на вершине, а с ними - только скандинавские страны и несколько примкнувших, вроде Швейцарии.
Джеймс Беннетт (James C. Bennett), Англосфера: букварь (2) /29.04/
Проблема не в отсутствии творческого подхода, энергии или предпринимательского зуда в неанглоговорящих странах. Проблема в том, что творчество расцветает, предприятия открываются, а базовая система социальных, экономических и политических институтов замедляет их рост.
Пол Грэм (Paul Graham), Отчего нерды непопулярны? /22.04/
Хотите, чтобы ваш ребенок-восьмиклассник был так же несчастен, как вы когда-то? Я бы не хотел. Итак, можем ли мы что-то сделать? Почти наверняка. В этой системе нет ничего неотвратимого. Она появилась почти сама собой.
предыдущая в начало следующая
Пол Грэм (Paul Graham)
Пол Грэм
(PAUL GRAHAM)
URL

Поиск
 
 искать:

архив колонки:





Рассылка раздела 'Gateway' на Subscribe.ru