Естественно, больше всего меня интересовала клавиатура. Я набрал несколько слов в приложении «Заметки». Клавиатура работала безо всяких нареканий. Код автоисправления исправил все ошибки, которые я сделал. Я мог бы провести с этим гаджетом целый день, пробуя все, о чем только мог подумать, но вокруг ждали своей очереди другие люди. Передавая аппарат в другие руки, я не сомневался.
Я хотел такой.
После этой памятной демонстрации стало ясно, что приближается тот момент, когда смартфон Apple может быть выпущен в продажу. Мы были к этому близки, но из-за заминки с корпусом, из-за которой он не закрывался, мы были пока не готовы. Еще через несколько недель все должно быть сделано.
Дата объявления о новом продукте уже была внесена в календарь, и мы шли к ней бо́льшую часть предыдущего года. Планы выпуска были согласованы с ходом работ по программному и аппаратному обеспечению. Apple сообщит миру о Purple на конференции Macworld в начале января 2007 года, а первые телефоны должны поступить в продажу в следующем июне.
Это означало, что у меня есть время исправить еще несколько ошибок и добавить в словарь несколько слов до того, как люди коснутся пальцами клавиатуры. Режим секретности сохранялся до последнего момента, и даже когда я шел в Москоне-центр в назначенный день, я по-прежнему не знал, как будет называться Purple. 10 января, на следующий день после презентации флагманского продукта, я отредактировал словарь автокоррекции, добавив в него новое слово — iPhone***.
Каждый этап работы в Apple может быть достаточно нервозным, и хотя мы редко разбиваем двери бейсбольными битами или заканчиваем разговоры, выкрикивая непечатные слова, после того, как начался период конвергенции, на нас постоянно давили две противоположно направленные силы. Во-первых, чем ближе становилась дата выхода продукта, которую нельзя было перенести, тем быстрее бежало время. Во-вторых, постоянно возникали самые разные, постоянно меняющиеся сообщения об ошибках, указывающие на то, что в программном обеспечении есть проблемы, которые нужно исправить.
Чтобы отслеживать ошибки, мы использовали программу под названием Radar. На этапе конвергенции этот разработанный внутри компании многофункциональный баг-трекер был для нас чем-то вроде швейцарского армейского ножа. Главной задачей Radar было сообщение о дефектах программного обеспечения и отслеживание их исправления, но его записи в нашей организации разработки могли использоваться еще и как список того, что надо сделать для программиста, запрос на усовершенствование программного продукта от дизайнера. А еще там могла быть задача от проджект-менеджера с кучей вложений или прямой запрос от начальства на решение какой-то срочной проблемы.
Когда мы перешли на этап конвергенции за несколько месяцев до даты, назначенной для выпуска продукта, Radar переместился в центр внимания. Наши менеджеры начали тщательнее отслеживать количество сообщений баг-трекера.
Предполагалось, что оно должно постоянно снижаться и в итоге достигнуть нуля. Во время конвергенции каждое утро Анри рассылал всем членам команды ПО Purple график, где отмечал количество выявленных Radar ошибок по дням, причем на правом конце оси Х находилась дата выпуска. Постепенно извилистая траектория этого графика начала превращаться в волнистую линию: большее количество ошибок поднимало ее, меньшее — опускало. Мы поднаторели в чтении этой линии конвергенции и с ее помощью определяли накал страстей проекта. Мы научились понимать поведение конвергенции, как, например, пики на графике после крупных показов демоверсий. Они доставляли не такие уж большие неприятности, как могло показаться: многие ошибки, выявленные в демоверсиях, исправляли быстро и легко. Иногда в течение многих дней мы видели упрямые прямые линии, и вот это-то могло указывать на настоящую проблему, поскольку количество поступающих сообщений об ошибках совпадало со скоростью, с которой мы успевали их исправлять, и это означало, что конвергенция может застопориться.
Дон Мелтон часто рассказывал историю о том, как происходила конвергенция в Netscape. Когда компания, где он работал раньше, готовилась выпустить новую версию браузера Navigator, ее сотрудники не ставили себе цели свести количество ошибок к нулю. Руководители программистов Netscape знали, что ни одна сложная программа никогда полностью не будет свободна от ошибок. Вместо этого они стремились к zarro boogs — намеренно искаженному выражению zero bugs (ноль ошибок). Эта фраза в юмористическом ключе выражает признание в том, что проект считается «законченным» к дате выпуска, но в действительности программисты не подошли к недостижимому идеальному коду без ошибок, несмотря на то, что может показывать запрос к базе данных ошибок или график конвергенции{41}
.