Кодеры за работой. Размышления о ремесле программиста - Питер Сейбел
Шрифт:
Интервал:
Закладка:
Сейбел: Вижу, у вас есть книга “The Art of Computer Programming”[30], но она не выглядит слишком потрепанной. Вы много из нее прочли?
Фицпатрик: Я не трогал ее около пяти лет, да, не меньше. Иногда я брался за нее и читал отдельные куски ради удовольствия. Но к тому времени, как я купил эту книгу, я уже знал многое из того, что в ней описано, по университетским занятиям. Так что от нее было бы больше пользы раньше. Но до появления Интернета я ничего о ней не знал.
Сейбел: Как вы считаете, в каком объеме программист должен знать математику? Чтобы прочесть и как следует понять книги Кнута, нужно иметь приличную математическую подготовку. Но необходимо ли это сегодня программисту?
Фицпатрик: Ему не нужно так уж много математики. Для большинства программистов в ежедневной работе гораздо важнее статистика. Если рисуешь всякие графики, то математика, само собой, нужна, но большинство программистов в основном разрабатывают разные корпоративные приложения на Java и всякую ерунду для Сети. Очень помогает знание логики, ну и статистика тоже очень полезна.
Сейбел: Вы явно все еще получаете удовольствие от программирования. Но если почитать ваши записи в Живом Журнале времен учебы в колледже, создается впечатление, что вы порой уставали и начинали ненавидеть компьютеры.
Фицпатрик: О да, я всегда ненавидел компьютеры. Похоже, тут уже давно нет никакого прогресса. Кажется, что компьютеры все медленнее работают, все чаще падают и глючат, чем раньше. Но поскольку я оптимист, то верю, что все изменится к лучшему. Наверное, десять лет назад я получал больше удовольствия от работы, чем сегодня. Может быть, десять лет назад мой компьютер работал быстрее; мне кажется, что тогда он работал лучше. Компьютеры стали быстрее, но в то же время программы стали больше глючить и работать медленнее.
Сейбел: Как думаете, почему?
Фицпатрик: Не знаю. Может, понизилась планка? Или, раз компьютеры стали быстрее, можно забыть об эффективности - или совсем не думать о том, что делаешь? У меня нет ответа. Может быть, всё вышесказанное в совокупности. А может, просто появилось такое множество слоев абстракции, что люди перестали понимать, что же происходит внутри, а компьютеры стали настолько быстрыми, что скрывают их глупость.
Сейбел: То есть, возможно, программы не настолько быстро работают, как должны бы работать при такой скорости компьютеров. Но ведь десять лет назад вообще не было таких возможностей, какие сегодня предоставляет пользователям тот же Google.
Фицпатрик: Да. Некоторые пишут эффективный код и им пользуются. Я не играю в компьютерные игры, но когда порой наблюдаю за чьей-то игрой, думаю: “Черт, как такое возможно?” Я просто в шоке. Очевидно, что некоторые делают все правильно.
Наверное, в основном я недоволен своими настольными приложениями. Похоже, большинство хорошего, интересного происходит на стороне сервера. А работая на своем компьютере, я все больше разочаровываюсь. Наверняка мой Мак не должен постоянно показывать мне вращающиеся пляжные мячи смерти[31].
Сейбел: Не интересует ли вас написание более качественных настольных приложений?
Фицпатрик: Проблема в том, что они никому не нужны. Хочется разрабатывать приложения, которыми будут пользоваться, а сейчас всем нужны веб-приложения. Однажды я потерял ноутбук, и все спрашивали: “Как, ты потерял информацию?” Но на нем не было никакой информации. Это был просто терминал для работы в Сети. А диск был зашифрован, так что я не беспокоился насчет паролей, cookies и всего такого. Мне кажется, люди уже не хотят скачивать программы.
Сейбел: А что вас сильнее мотивирует: то, что ваш продукт используют другие, или просто удовольствие от программирования?
Фицпатрик: Конечно же, есть программы, которые я пишу для себя, и пишу явно в расчете на то, что ею буду пользоваться я один; в этом случае я меньше забочусь насчет патчей и всего такого. Но часто мне хочется работать с другими. Наличие пользователей - ключевой момент для совместной работы. Чем больше пользователей, тем больше ошибок они находят, тем больше сценариев использования. Работать с другими людьми интереснее, особенно в проектах с открытым исходным кодом.
Всегда приятно, когда тебе пишут: “Привет, мы используем твою программу для того-то”. Глядя на то, сколько сайтов используют mem-cached, балансировщик нагрузки или еще что-нибудь, я думаю: “Как здорово!” А сколько владельцев порносайтов сообщали мне, что пользуются моей файловой системой! Это о чем-то говорит. Я помогаю порноиндустрии. В Крейгслисте каждый запрос направляется через вебсервер, который использует memcached. Вот так.
Сейбел: Как по-вашему, программисты склонны излишне увлекаться всем новым - языками, инструментами и так далее?
Фицпатрик: Да, возможно. Может быть, тут есть отчаянная надежда, что новая версия вдруг окажется нормальной, что новый язык будет делать все, что нужно. Но так думают и пользователи - они всегда хотят получить новую версию, даже если она хреновее.
Не знаю, отличаются ли статистически программисты от других людей. Новое - значит, лучшее. Далеко не всегда это так, но люди надеются. Они хотят, чтобы было именно так. Помню беседовал как-то со своим дантистом - она вспоминала все новые и новые методы в стоматологии, кажется, за последние лет пять, и была от них просто в восторге.
Сейбел: Искусство программиста сейчас во многом состоит в том, чтобы найти нужные компоненты и понять их ровно настолько, чтобы суметь ими воспользоваться. Что вы об этом думаете?
Фицпатрик: В CPAN[32] есть все. Там 14 парсеров ID3. Выберите один.
Сейбел: Так вот проблема современного разработчика - выбрать одно из 14 решений. Как вы делаете выбор?
Фицпатрик: Запускаем поиск в Google и смотрим, какой из них попадает в начало списка. Какой больше всего нравится людям? И нужно знать людей. Я стал значительно больше участвовать в жизни сообщества открытого исходного кода, посещать все эти конференции, поскольку там я встречаюсь с людьми и понимаю, кто пользуется большим уважением, кто действительно крут.
Потом я смотрю их код: а, помню того парня, он просто потрясающий. Он весел, дружелюбен, привлекателен, внимателен, и он действительно заботится о своем коде. Очень серьезно относится ко всем жалобам на его код. Я могу спокойно пользоваться его кодом, потому что знаю: если найду ошибки, он обязательно их исправит. Или наоборот, какой-нибудь ворчун, который, может, и пишет замечательный код, но постоянно ворчит и не хочет тебя слушать, если ты нашел ошибку или у тебя есть вопрос. Вот и выбираешь таких людей, поддерживающих конкретный проект, которым доверяешь, относишься с уважением.
(adsbygoogle = window.adsbygoogle || []).push({});