Когда Стив в своей презентации добрался до того места, где должен был первый раз показать клавиатуру публике вне Apple, мои гордость и надежда сменились страхом и ужасом. Затем в своем рассказе для зрителей Стив назвал мою клавиатуру «феноменальной» и легко набрал текстовое сообщение.
Фух! Честно говоря, Стив поставил лишний перевод строки в конце текста, который ставить не намеревался, но это не так уж важно. Ничего ужасного не случилось, и я почувствовал огромное облегчение. Демонстрация прошла хорошо. Это было круто.
Случилось еще одно пересечение — мое со Стивом. Сразу после презентации iPhone мы с Ричардом Уильямсоном вышли в проход перед сценой вместе со всей командой разработки программного обеспечения Purple. Чтобы подойти туда, нам пришлось пройти около Стива. Он посмотрел на нас, сразу узнал Ричарда и поблагодарил его. Это была моя первая встреча с начальником; хотя он и знал мою работу, но мы не были знакомы. После самой крупной презентации во всей истории Apple я оказался рядом с Большим Боссом, и он посмотрел мимо меня. Это было разочарованием.
Были пересечения iPhone со скептиками. Прошло совсем немного времени после презентации на Macworld, и люди начали говорить о своих сомнениях по поводу нашего продукта. Возможно, ни одно из них не стало так известно, как глумливый комментарий Стива Балмера, который тогда был генеральным директором Microsoft. Его первая реакция, когда он услышал об iPhone, была:
Время показало, что Балмер смеялся зря. Но, как бы то ни было, сразу после объявления об iPhone было приятно получить внеплановое обращение в эфире от еще одного Стива. Это было смешно.
Если ближе к основной теме этой главы, то существует пересечение между iPhone и нашими усилиями по его созданию, что возвращает меня к одному из основных вопросов, который я также ставлю в книге. Почему некоторые продукты — скажем, iPhone — оказались так хороши? Сейчас я готов предложить свой полный ответ. Он состоит из трех частей.
Первое — это процесс творческого отбора, связанный с созданием демоверсий. Добавив его к понятию работы на перекрестке наук, я могу расширить описание того, как мы создаем варианты, разрабатывая продукт.
Когда у нас появляется идея, мы на скорую руку сколачиваем рабочую сборку алгоритмов и эвристических правил, которые нужны, чтобы проиллюстрировать ее. Затем мы подтягиваем сопутствующие ресурсы — код, графику, анимацию, звуковые эффекты и так далее, — чтобы сделать демоверсию. Показав демо и поделившись впечатлениями о ней, мы принимаем решения об изменениях, которые могут улучшить программу. Во многих случаях это сводится к настройке какого-то эвристического правила или изменению того, как сочетаются алгоритм и эвристическое правило. Что бы это ни было, конкретные и определенные изменения, которые мы решаем сделать, ведут к списку действий, для проверки которых мы снова создаем демоверсию. Именно так мы начинаем с идеи и заканчиваем программным обеспечением для продукта.
Вторая часть моего ответа возвращает нас к введению, где я впервые упомянул о семи основных составляющих подхода Apple к разработке ПО. Я надеюсь, что к этому моменту вы увидели, насколько они важны и как обеспечивают нас черновым материалом для творческого отбора. Здесь я еще раз привожу полный список семи главных составляющих, и на этот раз — с конкретными примерами, взятыми из моих историй.
1. Вдохновение — мыслить масштабно и представлять, что из этого можно воплотить в жизнь, как это делал Имран, когда увидел, как плавное движение пальца может стать важным для людей, управляющих iPhone с помощью касания.
2. Сотрудничество — работать вместе с другими людьми и стараться объединить сильные стороны каждого, как это было, когда Дарен и Трей помогали мне сделать корректно работающую точку ввода в текстовом редакторе WebKit.
3. Профессиональное мастерство — применять свои навыки для достижения высококачественных результатов и всегда стремиться к идеалу, как это было, когда команда Safari делала веб-браузер все быстрее и быстрее, проводя тест загрузки страниц, пытаясь понять, что тестовая программа говорит нам о программном обеспечении, и используя эти находки для оптимизации кода.