Сейбел:А что вас сильнее мотивирует: то, что ваш продукт используют другие, или просто удовольствие от программирования?
Фицпатрик:Конечно же, есть программы, которые я пишу для себя, и пишу явно в расчете на то, что ею буду пользоваться я один; в этом случае я меньше забочусь насчет патчей и всего такого. Но часто мне хочется работать с другими. Наличие пользователей - ключевой момент для совместной работы. Чем больше пользователей, тем больше ошибок они находят, тем больше сценариев использования. Работать с другими людьми интереснее, особенно в проектах с открытым исходным кодом.
Всегда приятно, когда тебе пишут: “Привет, мы используем твою программу для того-то”. Глядя на то, сколько сайтов используют mem-cached, балансировщик нагрузки или еще что-нибудь, я думаю: “Как здорово!” А сколько владельцев порносайтов сообщали мне, что пользуются моей файловой системой! Это о чем-то говорит. Я помогаю порноиндустрии. В Крейгслисте каждый запрос направляется через вебсервер, который использует memcached. Вот так.
Сейбел:Как по-вашему, программисты склонны излишне увлекаться всем новым - языками, инструментами и так далее?
Фицпатрик:Да, возможно. Может быть, тут есть отчаянная надежда, что новая версия вдруг окажется нормальной, что новый язык будет делать все, что нужно. Но так думают и пользователи - они всегда хотят получить новую версию, даже если она хреновее.
Не знаю, отличаются ли статистически программисты от других людей. Новое - значит, лучшее. Далеко не всегда это так, но люди надеются. Они хотят, чтобы было именно так. Помню беседовал как-то со своим дантистом - она вспоминала все новые и новые методы в стоматологии, кажется, за последние лет пять, и была от них просто в восторге.
Сейбел:Искусство программиста сейчас во многом состоит в том, чтобы найти нужные компоненты и понять их ровно настолько, чтобы суметь ими воспользоваться. Что вы об этом думаете?
Фицпатрик:В CPAN [32] CPAN (Comprehensive Perl Archive Network - всеобъемлющая сеть архивов Perl) - архив документации и ПО на языке Perl. - Прим. науч.ред.
есть все. Там 14 парсеров ID3. Выберите один.
Сейбел:Так вот проблема современного разработчика - выбрать одно из 14 решений. Как вы делаете выбор?
Фицпатрик:Запускаем поиск в Google и смотрим, какой из них попадает в начало списка. Какой больше всего нравится людям? И нужно знать людей. Я стал значительно больше участвовать в жизни сообщества открытого исходного кода, посещать все эти конференции, поскольку там я встречаюсь с людьми и понимаю, кто пользуется большим уважением, кто действительно крут.
Потом я смотрю их код: а, помню того парня, он просто потрясающий. Он весел, дружелюбен, привлекателен, внимателен, и он действительно заботится о своем коде. Очень серьезно относится ко всем жалобам на его код. Я могу спокойно пользоваться его кодом, потому что знаю: если найду ошибки, он обязательно их исправит. Или наоборот, какой-нибудь ворчун, который, может, и пишет замечательный код, но постоянно ворчит и не хочет тебя слушать, если ты нашел ошибку или у тебя есть вопрос. Вот и выбираешь таких людей, поддерживающих конкретный проект, которым доверяешь, относишься с уважением.
Сейбел:Можно ли быстро выяснить, подходит тебе что-то или нет?
Фицпатрик:Я просто начинаю. Не включаю это сразу же в свой код, а сперва пишу тестовую программу, которая использует несколько нужных мне функций, чтобы убедиться, что все работает. Или пишу модульный тест только для этой библиотеки и только для тех данных, которые предполагаю использовать вместе с ней. У многих библиотек нет собственных тестов. Но даже если есть, может быть так, что читаешь документацию и не доверяешь тому, что в ней написано, или по ней невозможно понять, что делается. Поэтому я пишу собственные тесты для того, что мне нужно. Поскольку для изучения этой библиотеки мне все равно придется написать пробную программу с ее использованием, я вполне могу начать с модульного теста.
Сейбел:А как насчет инструментов, которыми вы сейчас пользуетесь, - по-прежнему применяете Emacs?
Фицпатрик:Да, я все еще использую Emacs. Правда, не знаю его так хорошо, как хотел бы. Я знаю все горячие клавиши, но сам не настраиваю его. Пользуюсь чужими настройками и почти могу прочесть их. Иногда мне это надоедает, и я думаю: “Пора бы написать кое-что на Elisp [33] Elisp, или Emacs Lisp - диалект языка Лисп, используемый в текстовых редакторах GNU Emacs и XEmacs. - Прим. науч. ред.
для привязки этой штуки к горячей клавише”, - но никогда этого не делаю.
Читать дальше
Конец ознакомительного отрывка
Купить книгу