Выбрать главу

Бывали и разногласия. Я предложил добавить фильтрацию на уровне папок, поскольку у нас не было времени сделать это как следует. Он сказал: “Нет-нет, я правда думаю, что мы должны сделать все как надо”. А я: “Да у нас же нет времени!” Но он все сделал той же ночью.

Еще кое-что: мы с Терри виделись редко - он жил в Санта-Крус, я в Беркли. До работы нам было ехать примерно одинаково, но с разных сторон. А поскольку по работе нам нужно было общаться только между собой, то мы договаривались так: “Если ты согласен, чтобы я не приезжал, то и я согласен, чтобы ты не приезжал”. - “Давай”.

Сейбел: Вы вдвоем много переписывались по электронной почте?

Завински: Да, постоянно. Это было еще до эры мгновенных сообщений (Instant messenger, IM) - сейчас, конечно, мы бы прибегли именно к ним, потому что постоянно слали друг другу электронные письма. И переговаривались по телефону.

Итак, мы выпустили версию 2.0 с почтовым клиентом, хорошо принятую пользователями. Потом мы работали над версией 2.1, и я уже начал думать, что работа подходит к концу, но это оказался один из случаев, когда мы так и не смогли выпустить версию с первого раза. Мы с Терри были уже на полпути, когда зашел Марк и сказал: “Мы покупаем такую-то компанию. И там разрабатывают почтовый клиент, похожий на ваш”. Я ответил: “Да, хорошо, но у нас уже есть такая программа”. Он пояснил: “Понятно, но мы растем очень быстро, и нам все труднее нанимать на работу хороших людей. Иногда можно их нанять, купив другую, хорошо знакомую компанию”. - “Ладно. Чем они будут заниматься?” - “Работать над вашим проектом”. - “Черт, тогда я займусь чем-нибудь другим”.

И как только Netscape купила эту компанию (которая называлась Collabra), нас с Терри отдали под их руководство. Эта компания выпускала почтовый клиент, во многом очень похожий на наш, за исключением того, что он работал только под Windows и потерпел полный крах на рынке.

А потом им крупно повезло - их купила компания Netscape. После чего Netscape передала бразды правления этой компании. Но вместо того чтобы отвечать только за почтовую программу, они оказались во главе всего подразделения по разработке клиентской части. Мы с Терри работали над Netscape 2.1, когда это произошло и начался процесс переписывания. Тогда стало понятно, что Netscape 3.0 будет выпущен слишком поздно, и наша версия 2.1 превратилась в версию 3.0, потому что нужно было выпустить на рынок основную версию.

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

Они полагали, что, оказавшись у руля, просто обязаны поступать по-своему. Но когда они делали это по-своему в своей компании, они провалились. И когда люди, добивавшиеся успеха, говорили им: “Послушайте, правда, не используйте C++, не используйте потоки”, они отвечали: “О чем вы говорите? Вы ничего не понимаете”.

Именно такие решения, как отказ от C++ и использования потоков, позволили нам выпустить продукт вовремя. Другой важной составляющей было то, что мы всегда выпускали версии под все платформы одновременно. Это решение они тоже считали глупым: “У 90% пользователей установлена Windows, так что мы сосредоточим усилия на работе версии под Windows, а позже портируем ее под остальные платформы”. Так поступали многие компании, потерпевшие крах. Если вы собираетесь выпускать кроссплатформенный продукт, то история показывает, как именно не следует поступать. Если вы действительно хотите выпускать кроссплатформенное решение, то разрабатывать все нужно одновременно. А портирование приводит к паршивому результату на второй платформе.

Сейбел: Версия 4.0 создавалась с нуля?

Завински: Ну, не то чтобы совсем с нуля, но в итоге они переписали каждую строку кода. И использовали C++ с самого начала. Я боролся против этого изо всех сил и, черт возьми, был прав. Все стало распухать, появились проблемы с совместимостью, потому что когда пишешь на C++, невозможно прийти к согласию, какие именно 10% языка можно безопасно использовать. Кто-нибудь говорит: “Мне нужны шаблоны”, а затем выясняется, что нет двух компиляторов, которые реализуют шаблоны одинаково.