Но Vista не оправдала себя. Команда разработчиков Microsoft попыталась сохранить программные компоненты, необходимые для поддержки совместимости со старыми компьютерными системами, одновременно добавляя функции, необходимые для систем нового поколения — причем в ядре платформы. В результате Vista получилась менее стабильной и более сложной, чем ее предшественница Windows XP, и сторонним разработчикам приложений с трудом удавалось писать для нее код[37].
Критики писали, что Vista — даже не фуфлософт, а «козлософт», потому что она пожирала все ресурсы системы[38]. Миллионы пользователей Windows отказались использовать Vista и до сих пор крепко держатся за Windows XP, несмотря на многочисленные попытки Microsoft отправить ее на пенсию. Ирония судьбы: Microsoft прекратила розничные продажи XP в 2008 г. и Vista в 2010 г., но рыночная доля XP в 2015 г. была выше 12 %, а рыночная доля Vista — ниже 2 %[39].
Стив Джобс, вернувшийся к руководству Apple в 1997 г. после нескольких лет разработки амбициозного, но неудачного компьютера NeXT, принял крайне важное решение, которое отвечало принципу end‑to‑end и помогло привести Apple к успеху. В NeXT Джобс и его команда разработали элегантную новую операционную систему с чистой, многослойной архитектурой и прекрасным графическим интерфейсом. В итоге, выбирая наследника операционной системы Apple Mac OS 9, Джобс встал перед сложным выбором: он мог смешать программные коды NeXT и Mac OS 9, создав операционную систему, которая будет совместима с обеими, или отказаться от Mac OS 9 в пользу архитектуры NeXT.
Джобс рискнул отказаться от старого кода OS 9, но пошел на одну уступку: команда разработчиков создала отдельное «Классическое окружение», которое позволяло пользователям запускать старые приложения из OS 9. Этот индивидуализированный подход отвечал принципу end‑to‑end. Старый код не замедлял и не усложнял новые приложения, и новые покупатели Mac не были перегружены программами, поддерживающими приложения, которыми они не пользовались. Выбор Джобса сделал инновации в новом Mac OS X более простыми и эффективными, что позволило Apple развить новые функции. В сравнении с ней системы Microsoft выглядят устаревшими[40].
Концепцию end‑to‑end можно применить и к разработке платформ. Здесь принцип таков: специализированные функции должны оказываться на периферии или на поверхности платформы. Только крупномасштабные, ценные функции, которые затрагивают все приложения, должны стать частью сердца платформы.
Соблюдать это правило стоит в силу двух причин. Во‑первых, когда специфические новые функции включаются в ядро платформы, вместо того чтобы «крепиться» на периферии, приложения, которые не пользуются этими функциями, будут работать медленно и неэффективно. Если же функции запускаются через приложение, а не ядром платформы, пользователи получают куда более приятные впечатления.
Во‑вторых, экосистема платформы может развиваться быстрее, когда ядро платформы — чистая, простая система, а не клубок бесчисленных функций. Поэтому Карлисс Болдуин и Ким Кларк из Гарвардской бизнес‑школы описывают грамотную платформу как состоящую из двух уровней: стабильное ядро, которое ограничивает вариативность и лежит в основе постоянно развивающегося уровня, допускающего вариации[41].
Этот принцип сегодня применяют самые качественные платформы. Например, Amazon Web Services (AWS), наиболее успешный поставщик облачных систем хранения и управления данными, сосредоточена на оптимизации нескольких базовых операций, включая хранение данных, вычисления и обмен сообщениями[42]. Другие услуги, которые использует только часть клиентов AWS, ограничены периферией платформы и доступны через специальные приложения.
Власть модулярности
В интегральном подходе, когда система развивается максимально быстро, чтобы служить единственной цели, особенно в первые дни ее существования, есть свои преимущества. Но в долгосрочной перспективе успешная платформа должна обратиться к модулярному подходу. Полное рассмотрение этого принципа выходит за рамки данной главы, но мы затронем некоторые важные идеи. Начнем с определения, данного Болдуин и Кларком (1996 г.).
Модулярность — стратегия эффективной организации сложных продуктов и процессов. Модульная система состоит из единиц (или модулей), разработанных независимо, но действующих как единое целое. Разработчики достигают модулярности, дробя информацию на видимые технологические стандарты и скрытые параметры. Модулярность выгодна, только если деление точно, недвусмысленно и полно. Видимые технологические стандарты (видимая информация) — решения, которые влияют на дальнейшую разработку. В идеале они закладываются в начале процесса и доводятся до сведения тех, кто в нем участвует[43].
В статье 2008 г. Карлисс Болдуин и Джейсон Вударт предложили полезное и емкое определение стабильного ядра системы.