Творческий отбор. Как создавались лучшие продукты Apple во времена Стива Джобса - Кен Косиенда
Шрифт:
Интервал:
Закладка:
8. Конвергенция
Конвергенция — это термин, который мы использовали, когда говорили о последней стадии создания продукта Apple, когда все функции больше не подвергаются изменениям, а команды программистов и дизайнеров последние три или четыре месяца занимаются исправлением ошибок и шлифовкой деталей. Период конвергенции начинается в тот момент, когда у нас в головах есть четкая картина того, как будет работать конечный продукт. Также он означает, что самая трудная часть работы позади — мы достигли успехов в прокладывании пути от идеи к устройству.
С клавиатурой мне было до этого далеко. Конвергенция ощущалась как устойчивое продвижение в известном направлении, тогда как дни, когда стала очевидна польза автоисправления, были для меня словно поездка на машине по автостраде без всяких знаков, подсказывающих, где с нее можно свернуть. До периода конвергенции проекта Purple нам оставалось еще где-то девять месяцев, и я был занят настройкой раскладок клавиатуры, улучшением алгоритмов автоисправления, пополнением словаря, ускорением работы программного обеспечения. У меня были и небольшие успехи, и потери, я учитывал отзывы о предыдущей демоверсии, когда готовил следующую. Я пытался поддерживать движение вперед, но никогда не был полностью уверен в том, что путь, который я выбрал, правильный.
И тут — оба-на! Гадостный сюрприз, который преподнесло мне автоисправление во время презентации, бросил корабль моей программы на острые скалы.
Через несколько дней после того, как Ричард впервые набрал текст с неожиданной точностью, которая стала возможной только благодаря включенному автоисправлению, я пришел в кабинет к Анри Ламиро, чтобы дать Скотту Форсталлу попробовать поработать с новым программным обеспечением. Я установил свою демо, присоединил Wallaby к Mac, стоящему на боковом столе рядом с рабочим местом Анри. Пришел Скотт, сел, взял Wallaby и набрал какой-то текст. Я смотрел через его плечо, когда он писал первые слова. Форсталл был под впечатлением. Пока что все шло хорошо. Я использовал эту возможность, чтобы привести ему свои аргументы в пользу постоянно включенного автоисправления. Я сказал, что именно так мы сможем обеспечить отличный набор текста на Purple, что это решает все проблемы, от которых страдала победившая в дерби клавиатура, и поможет нам избежать печальной участи Newton с распознаванием рукописного ввода.
Слушая меня, Скотт уловил упоминание о Newton и решил повеселиться, вспомнив превратившийся в культовый комикс «Дунсбери».
Он взял Wallaby и с улыбкой начал набирать текст, но, когда Скотт поднял глаза, чтобы посмотреть, как справилась программа клавиатуры, его улыбка превратилась в смех. Увидев написанное, я подумал, что это не так уж смешно.
«Дунсбери»[30]@ 1993 Гарри Трюдо. Печатается с разрешения синдиката ANDREWS MCMEEL. Все права защищены.
Отрывок из комикса «Дунсбери», где подводится итог работе с распознаванием рукописного ввода на Newton[31]
Testing for eff grackles[32].
Я хорошо разбирался в связанном с Newton фольклоре и точно знал, что Скотт хотел написать. Он хотел egg freckles («яйца в крапинку»), но этого не получил. Моя клавиатура завалила тест.
Скотт решил, что это смешно, но вскоре он снова посерьезнел. Он сказал, что мое новое программное обеспечение выглядит многообещающе, но ему нужно знать, могу ли я сделать программу более понятной и предсказуемой. Форсталл спросил, получится ли у меня сохранить полезные автоисправления, но уничтожить нелепые и несуразные, такие, какие могли бы привести к ошибкам вроде тех, которые делало распознавание рукописного ввода Newton.
Я не знал ответа на этот вопрос и так и сказал. После этой неожиданно забавной демонстрации моя уверенность в себе пошатнулась, и несмотря на то что я по-прежнему не сомневался в потенциале встроенного автоисправления, я не мог сказать, как часто мой код клавиатуры может допускать промахи. Я предложил начать с того, чтобы поискать, что же пошло не так в данном конкретном случае, и ушел из кабинета Анри, разочарованно покачивая головой. Кажется, самые щекотливые ситуации всегда возникали, когда я показывал свою работу Скотту.
Вскоре я обнаружил проблему. Скотт не смог набрать egg freckles, потому что две ошибки в работе словаря наложились одна на другую.
Первая была багом в метаданных, которые я приписал к каждому слову в словаре. Их я называл значением частоты использования. Она измеряла популярность слова в обычном тексте. Для того, чтобы постоянно включенное автоисправление работало хорошо, нужно было, чтобы код помогал людям набирать самые распространенные в английском языке слова: the, and, have, from, will и так далее. Программное обеспечение должно было знать, какие слова встречаются чаще других — например, люди с большей вероятностью напишут good (хороший), а не goof (оплошность). Отсюда следует, что значение частоты использования для good выше, чем для goof. Артикль the имеет самую высокую частоту использования, поскольку является самым распространенным словом в английском языке. Как редактор словаря я должен был оценить каждое слово с точки зрения частоты использования и присвоить более популярным словам более высокие значения, чем у менее употребительных. Также клавиатура помогала с повседневными словами, такими как egg (яйцо), которое входит в несколько тысяч самых употребительных английских слов (вместе со словом bacon — бекон). На самом деле, программа должна была помочь Скотту написать слово egg, и она бы помогла, но возникла одна проблема: значение частоты использования слова было по ошибке занижено так сильно, что значение достаточно редкого и не слишком приличного слова eff (совокупление) оказалось выше. Это был просто глюк в моей базе данных словаря, и мое расследование кончилось, как только я понял, что значение частоты использования выставлено неверно. Я вздохнул, исправил значение для egg и несколько раз пробормотал eff себе под нос, пока этим занимался.
Что же насчет freckles (крапинки)? Этого слова вообще в словаре не было. Я не мог этого объяснить. Когда клавиатура увидела freckles и не смогла найти