30 October 2016

Главная ошибка Microsoft

Паша Урусов на неделе написал забавный пост, в котором пожаловался, что мол Apple в последнее время все делает совершенно не правильно, и как на этом фоне все здорово у Microsoft.
На самом деле, такого рода мысли объясняется лишь паническими настроениями, которые царят в стане поклонников OS X (aka macOS) -- сегодня Apple делает львиную долю бабла исключительно на айфонах, поэтому олдскульное компьютерное направление вянет у них на наших глазах. И нет ничего удивительного, что на фоне редких Macbook анонсов про то, что мы забрали у вас куртку, мотоцикл, все USB порты и клавишу Escape, некоторым товарищам начинает казаться, что даже во вражеском стане Microsoft дела идут не так уж и плохо...
На самом деле нет.
Все полимеры давно просраны, но не прекращаются усилия для того, чтобы нащупать очередное дно.


Microsoft, некогда самая могучая IT компания в мире, царь горы, уже много лет катится под откос. Образовавшиеся в начале XXI века сверхважные ниши -- мобильная и поисковая -- оказались занятыми другими, намного более успешными конкурентами Google и Apple. Писать сегодня про то, как Microsoft просрала рынок Интернет поиска я не буду, лучше поговорим о мобильном направлении, тем более, что пример Apple говорит нам о том, что в этой нише можно быть сверхуспешным даже не имея значительных достижений в области веб-поиска.

На мой взгляд, важнейшей чертой Microsoft, которая в 90-е позволила компании достичь небывалых высот в отрасли, было четкое понимание того, что такое операционная система и зачем она нужна твоим клиентам. Операционная система -- штука сугубо утилитарная, и в глазах пользователя имеющая ценность исключительно в виде программ, с которыми она позволяет работать.
Главная ценность ОС -- приложения. А значит, бесценны разработчики, которые доверяют производителю ОС, которые инвестируют свои ресурсы в платформу. И, следовательно, самый большой грех для компании, которая зарабатывает деньги, продавая операционные системы, это разрушение сложившейся на твоей платформе экосистемы приложений, подрыв доверия пользователей и инвестиций сторонних разработчиков.
Непонимание этого момента в середине 2000-х и повели компанию под откос.
Именно поэтому весь мир возненавидел Windows Vista.
Именно поэтому Microsoft так и не смогла войти в мир современных мобильных устройств.


Windows Phone 7

Отчаянная попытка запрыгнуть в уходящий поезд мобильного мира была предпринята Mircosoft в далеком 2010-м году.
Как мы знаем, попытка провальная.


Я составил список причин, вернее сказать, грубых ошибок, по которым все усилия компания в этом направлении оказались совершенно напрасны:
  • полный отказ от существующей мобильной платформы Windows Mobile, разработка нового решения "с нуля"
    • потеря текущей доли рынка
    • потеря базы лояльных пользователей
    • полная потеря всех приложений для платформы 
    • подрыв доверия разработчиков 
    • разработка ОС с нуля требует очень много времени 
  • выбор максимально "закрытой" модели ОС (как у Apple, а не как было в WM или как сделали в Android)
  • предельно ограниченные возможности для разработки  
    • managed only code, нет возможности использовать C/C++
    • нет возможности портировать код с других платформ 
  • потерянное время -- iPhone был анонсирован в самом начале 2007-го года, почти четыре года, это целая вечность по меркам индустрии 
  • использование Metro UI, красивого и оригинального, но с совершенно ужасным пользовательским опытом.
Кстати, если кто-то думает, что все мы крутые аналитики задними умом, то скажу, что обо всем этом я писал неоднократно еще во времена анонса WP7 (ну, например, вот такое).

Теперь рассмотрим представленный список поподробнее.

Полный отказ от Windows Mobile... Кто-то еще помнит, что из себя представляла эта мобильная ОС в те годы? Ну, кроме того, что с ней надо было управляться стилусом.
Как вам, к примеру, такой вот любопытный факт: в далеком 2007-м году (т.е. в год выхода первого айфона) на американском рынке смартфонов WM была самой популярной ОС с рыночной долей в 42%. Конечно, это был совершенно не тот рынок, что сегодня, у него были смешные объемы, и он был сильно enterprise ориентированный, но, тем не менее, это были очень хорошие позиции, которыми определенно стоило воспользоваться, чтобы остановить экспансию смартфона от Apple.

Самой сильной стороной Windows Mobile в те годы были, как ни странно, приложения. Да, у WM не было модного магазина для их установки, но сами приложения были, и их количество и качество находилось на высочайшем уровне. Да, не было тысячи клонов Angry Birds, как в App Store, зато были самые мощные программы в области PIM (с фундаментом в виде Outlook!), лучшие аудио и видеоплееры, лучшие программы для чтения книг, тьма продвинутых узкоспециализированных программ (посмотрите, к примеру, какие были приложения в области математики). В общем, даже сегодня каталог софта на 4PDA, который не обновлялся много-много лет, выглядит весьма солидно.
Объяснение такому многообразию и качеству очень простое -- Windows Mobile была построена на основе Windows API, т.е. на основе самого популярного на тот момент API в мире, под который программировало самое большое количество программистов. Все просто.

Отдельно упомяну, что WM было очень открытая и гибкая платформа и, например, виджеты рабочего стола и сторонние клавиатуры Android позаимствовал именно у этой ОС.

И вот на смену ОС, использующей самый популярный API в мире и имеющей самый продвинутый набор приложений, Microsoft приводит совершенно новый, крайне ограниченный API, и, в придачу, закрывает всякую возможность портирования существующего кода, написанного на C и C++ для других платформ. Я детально объяснял этот момент вот тут, сейчас попробую изложить суть этой проблемы очень кратко. У каждой платформы есть "родной" язык, не совместимый с другими платформами, но мало кто хочет писать свои проекты полностью на нем, так как обычно есть естественное желание, чтобы твой продукт (написанный один раз), мог работать и на мобильных платформах iOS/Android, и на десктопах Windows/macOS, и даже на консолях. Для этого код приложения пишут, к примеру, не на Java (родной язык для Anroid), а на C++, который будет успешно работать на всех вышеперечисленных платформах.
Так вот, для Windows Phone возможность писать код на C++ закрыли. Наверное, бараны из Microsoft думали: "все разработчики кинутся писать приложения под нашу платформу, а потом перенести их на платформы конкурентов не смогут -- так платформы конкурентов останутся без приложений!". Какой коварный план!... А фактически получилось, что все продолжили писать приложения под iOS и Android (активно используя универсальный C++), а для WP7 никто ничего не делал, так как перенести код было просто невозможно -- его надо было полностью переписывать. Непозволительная роскошь для поддержки аутсайдерской и совершенно маргинальной платформы.


Как ни странно, были на рынке люди, которые сразу уловили истинный потенциал айфона и направление, куда надо двигать Windows Phone. Маленькая тайваньская компания HTC.
Всего лишь через полгода после знаменитой презентации, летом 2007-го на рынке появился HTC Touch -- смартфон на основе все той же Windows Phone, но со специальной оболочкой, которая явно была сделана с оглядкой на идеи Apple, была eye candy и давала возможность управлять смартфоном не стилусом, а пальцем.

HTC -- компания, которая такими вот решениями на несколько лет смогла продлить агонию Windows Phone. А вот если бы в это направление начала бы инвестировать сама Microsoft, думаю, ландшафт сегодняшнего мира мобильных платформ был бы совершенно иным.
Вместо разработки с нуля и разрушительной революции под названием "Windows Phone 7", компании из Редмонда определенно стоило пойти по пути эволюции существующего решения, представить миру такой Windows Mobile на стероидах:
  • переписать встроенные приложения и оболочку в современном стиле, с управлением, ориентированным на пальцы
  • сделать все это на основе некой библиотеки, которую выпустить как SDK для сторонних разработчиков
  • двигать железо: работать все должно на самых современных SoC, быстрых, с высокой производительностью в области графики, поднимать разрешение экрана, перейти от резистивных к емкостным экранам 
  • добавить поддержку OpenGL ES, что сразу бы открыло дорогу к портированию игр с iOS 
  • потихоньку решать родовые болезни ядра Windows CE (типа схемы 32 процесса по 32 Mb каждый).

Убежден, если бы Microsoft сделала движение в этом направлении одним из главных приоритетов компании, то никаких шансов у новорожденного Андроида (который первые несколько лет своей жизни был сир, убог и жалок) просто не было бы. Андроид был бы сегодня просто музейным экспонатом, перевернутой страницей истории. Но история, увы, не знает сослагательного наклонения.


Windows 8

Нет ничего удивительно в том, что пытаясь зайти в мир мобильных устройств со стороны десктопной Windows, Microsoft допустила практически те же самые ошибки, что и для нового мобильного Windows:
  • совершенно бестолковый Metro UI, которым решили изнасиловать даже пользователей классических ПК, выставив его стартовым экраном по умолчанию и выпилив легендарную кнопку "Пуск" 
  • новый API для новых модных приложений -- практически не совместимый со старым кодом уже существующих приложений и с неприличным количеством анальных ограничений
  • только новые приложения (целиком переписанные под новый API) можно публиковать в магазине приложений... гммм, а почему в нем так пусто? 
  • новый API работает только в Windows 8, пользователи Windows 7 и более старых ОС в пролете.
Да, в случае с большой Windows Microsoft не смогла позволить себе убить совместимость со всеми существующими приложениями (мне даже страшно представить себе, что тогда случилось бы), но, тем не менее, посыл разработчикам был однозначным: выкиньте все, что вы уже написали. Полностью перепишите весь код с нуля с использованием нашего нового прекрасного Metro API. Эти приложения не будут работать даже в Windows 7. Profit. 
Сразу возникает риторический вопрос -- а много ли разработчиков сделает себе выстрел в голову, следуя такому прекрасному совету?! 


Для того, чтобы понять его абсурдность, Microsoft следовало воплотить его в жизнь со своим пакетом Office. Выкинуть сотни миллионов существующих строчек кода. Потратить от трех до пяти лет и несколько миллиардов долларов на переписывание кода под новый Metro API. Получить продукт, который работает только на Windows 8 (ОС, у которой в связке с версией 8.1 лучший показатель был примерно 15% от всех Windows ПК). 
Очевидно, что в Microsoft не нашлось идиотов, которые решили следовать такому плану в отношении офисного пакета. Непонятно только, почему они других разработчиков за таких идиотов посчитали... 


Вместо заключения 

Microsoft, это компания, в недрах которой родились, ставшие уже легендами, истории о борьбе за каждую пядь совместимости для уже написанных приложений. Я, например, очень люблю рассказ о том, что в досовской версии игры SimCity был баг в коде работы с менеджером защищенной памяти, из-за которого она крашилась в предрелизной версии Windows 95. И сотрудники Microsoft садились и писали очередной костыль -- распознавали глючную игру и запускали ее в специальном режиме совместимости, прощающем ошибки работы с памятью, чтобы она не падала. Потому что в компании было понимание простой истины: пользователю совершенно не интересно, кто виноват -- разработчики ОС или игроделы, ему просто надо, чтобы после перехода на новую ОС его старые программы работали как и раньше. Потому что ОС штука сугубо утилитарная, а главная ее ценность -- программы, которые она умеет запускать.

С того самого момента, как в Microsoft посчитали, что они достаточно великие, чтобы вытирать ноги о пользователей своих операционнок, что многолетние усилия разработчиков, благодаря которым и была завоевана практически полная монополия в области десктопных ОС, можно без всякой жалости выкидывать в мусорную корзину, вот с того самого момента компания из Редмонда и терпит неудачу за неудачей, и лично я пока что не вижу никакого повода для изменения этого тренда.


No comments:

Post a Comment