Вы работали программистом в конце школы?
Фицпатрик: Да, я работал какое-то время в компании Tektronix. Перед тем как получить официальную работу, у меня была хостинговая учетная запись. Но AOL[19] ее прикрыла за создание ботов, зафлуживание их чатов и просто за назойливость. Я тогда написал сценарий, запускающий AOL-клиент из другой Windows-программы. Еще я написал бот, чтобы постоянно заполнять онлайновую форму ввода для получения от них компакт-дисков. Я использовал разные варианты своего имени, чтобы их программа защиты от дублирования не отправила мне всего лишь один диск, поскольку каждый из них предоставлял 100 или 5000 часов бесплатной работы. Я ввел данные несколько тысяч раз, так что где-то неделю почтальон приносил мне пачки дисков.
Мама уже начала говорить: “Черт возьми, Брэд, у тебя будут неприятности!” А я говорил: “А вот и нет, эта долбаная компания сама виновата”. Однажды дома раздался звонок, я поднял трубку, чего обычно не делал, - звонили из AOL. Этот тип заорал: “Прекратите присылать нам эти заявки!” Я обычно туго соображаю, но тут сразу нашелся и проорал в ответ: “Зачем вы шлете мне эту хрень?! Каждый день почтальон тащит кучу дисков!” Он даже опешил: “Извините, это больше не повторится”. Я украсил ими свою комнату в колледже. Они до сих пор лежат в коробке в гараже. Не могу от них избавиться, потому что все еще помню, как они когда-то классно смотрелись на стенах.
После этого мою учетную запись в AOL заблокировали, а я зарегистрировал учетную запись у одного из местных shell-провайдеров. Тогда я, по сути, и научился работать с UNIX. Я не мог запускать CGI- скрипты, но мог загружать данные на сервер по FTP, поэтому я запускал разную ерунду, написанную на Perl на домашнем компьютере, которая создавала сайт целиком и затем загружала его на сервер. Потом я получил временную летнюю работу в Tektronix. Я хорошо знал Perl и всякие веб-штуки, но никогда не работал с динамическими веб-страницами. Это был 1994 или 1995 год - Сеть тогда была делом совсем новым.
Итак, я пришел в Tektronix. В первый же день они поставили меня перед чем-то и говорят: “Вот твой компьютер”. Это была большая рабочая станция SPARCstation или что-то вроде того, где крутились X и Motif. А потом: “Вот твой броузер”. Кажется, это был Netscape 2, точно не помню. И еще: “Все свои CGI-скрипты записывай в этот каталог”. Помню, как взял какой-то элементарный CGI-скрипт в три строки, чтобы посмотреть его вечером, и подумал: “Черт, здорово-то как!” На следующий день я был на работе уже в шесть утра, просто тронулся на этих CGI.
Потом я занялся динамическим веб-программированием для себя. Где-то в то же время я нашел веб- сервер под Windows с поддержкой CGI. Я убедил своего провайдера - я был на хорошем счету, по крайней мере, вел себя достаточно умно, чтобы мне начали доверять, - и мне сказали: “Ладно, запустим твои CGI, но сначала их проверим”. Они просмотрели их и разместили в своем каталоге. Так и начался мой скрипт Voting Booth, где можно создать тему, например “Твой любимый фильм”, добавлять нужную информацию и голосовать. Он становился все популярнее. Потом я еще пару лет занимался им параллельно основной работе.
Сейбел: Так был создан сайт FreeVote?
Фицпатрик: Да, он стал сайтом FreeVote после того, как мой компьютер перестал справляться с нагрузкой. В то время реклама на баннерах была уже весьма популярна (или стремительно становилась популярной), и я получал все больше и больше денег, заключал все более выгодные контракты с более высокой платой за щелчок. Я дошел до 27 центов за щелчок на одном баннере, а это и по сегодняшним меркам до нелепости много. Так что я получал до 25-27 тысяч в месяц за дурацкие щелчки на баннерах.
Все это было в старших классах - я занимался этим одновременно с учебой. На Intel я работал в течение двух летних каникул, а в последнее лето перед колледжем приступил к работе над Живым Журналом. На первом курсе колледжа я продал FreeVote приятелю за бесценок - где-то за 11 тысяч, - просто потому, что хотел избавиться от него и от юридической ответственности за него.
Сейбел: Когда вы начали работать с UNIX, это сильно изменило ваш подход к программированию?
Фицпатрик: Да. Но не скажу, что я был от него без ума. Я не мог понять, что происходит в Windows. Видели, наверное, Windows API: по двадцать параметров на каждую функцию, и все это флаги, половина из которых равны нулю. Совершенно непонятно, что происходит. И нельзя заглянуть внутрь, если что-то волшебным образом не работает.
Сейбел: Велика ли разница между вашим первоначальным подходом к программированию, или стилем программирования, и сегодняшним взглядом на эти вещи?
Фицпатрик: Я прошел через множество стилей: сначала объектно- ориентированный, потом функциональный, а затем непонятная смесь того и другого. Вот почему я люблю Perl. С его уродливым синтаксисом, с накопившимся за много лет багажом и изъянами, он никогда не парит мне мозги, задавая стандарт оформления кода. Любой стиль, который вам нравится, хорош. Можно сделать свой код красивым и последовательным, но нет никакого стандарта, определяемого самим языком. Только после перехода в Google я перестал много писать на Perl.
После работы над Живым Журналом я много занимался тестированием. Особенно когда начал работать с другими людьми. Однажды я осознал, что написанный код никуда не исчезает, и мне придется сопровождать его до конца своих дней. Я получаю комментарии к постам в бло-ге, написанным мною 10 лет назад. “Привет, я нашел этот код и нашел в нем ошибку”. И мне внезапно приходится исправлять этот код.
Сейчас я сопровождаю огромный объем кода, над которым работают и другие люди, и если в нем будет хоть какая-то заумь, наверняка найдутся те, кто не сможет понять некоторые мои идеи. Поэтому каждый раз, когда пишу что-то сложное, я обязательно создаю тест, который громко сообщит пользователю о том, что тот запутался. Мне приходилось заставлять многих писать тесты, в основном тех, кто работал на меня. Я пишу тесты, чтобы защитить свой собственный код от поломок, поэтому когда код написан, я говорю: “Вы в самом деле уверены, что он работает? Напишите тест. Докажите мне это”. И в какой-то момент человек понимает, что все это окупится, особенно при последующем сопровождении.
Сейбел: Когда вы начали работать с другими людьми?
Фицпатрик: Где-то под конец учебы в колледже. Тогда я стал нанимать других, особенно в Портленде, куда вернулся после колледжа.
Первые работники занимались только технической поддержкой, то есть никакого кода не писали. Затем понемногу я начал брать на работу и программистов. Первым был мой приятель по Сети Брэд Уиттакер: у каждого из нас был сайт с названием вроде BradleyLand или Bradley World, так что мы нашли сайты друг друга. Я опережал его в области веб-программирования на год или два, и он спрашивал меня: “Слушай, как ты это сделал?”, - шла ли речь об HTML, фреймах, CGI или Perl. Потом мне начали предлагать проекты, и те, что мне не нравились, я передавал ему. И вот однажды нам достался такой крупный проект, что ни один из нас самостоятельно его бы не потянул, и мы сказали заказчику: “Для этого проекта нужны двое”. И он отправил нас в Пенсильванию. В Питтсбург? Я вообще не знаю восточное побережье, ведь сам я с западного. Или в Филадельфию? В общем, туда, где любят чизстейки.
Сейбел: Это Филадельфия.
Фицпатрик: Да. Мы там встретились впервые, в каком-то дешевом отеле, но у меня было такое чувство, будто я его уже знаю. Он был очень общительный. Пошел в туалет в моем номере и даже не закрыл дверь, хотя я стоял рядом. Я сказал что-то вроде: “Отлично, будь как дома”.
Казалось, будто мы знаем друг друга лет пять, хотя на самом деле никогда не встречались. И мы начали работать над проектом вместе.
Он перебрался в мою просторную спальню, мы выкинули из кухни почти все, поставили компьютерные столы и там работали. Мы просыпались в 10-11 утра, работали до полудня, сидя в трусах, потом немного смотрели телевизор, после чего трудились в непрерывном режиме до 3-4 часов ночи. Потом к нам на лето присоединился еще один мой приятель - он учился в Университете Вашингтона. Летом после первого курса колледжа мы работали втроем. Мой третий друг жил в центре города. Он приезжал утром на метро, от станции катил до нас на скейтборде. Сидел на скамеечке рядом с домом и работал по Wi-Fi, пока мы не просыпались и не впускали его.
Когда нас стало трое, места оказалось уже маловато, и я предложил: “Давайте снимем офис”. Мы