Бывший разработчик Google об Android: «Это просто сэндвич с дерьмом»!

Человек, который совсем недавно прославился рассказом о проблемах «корпорации добра», поделился своими мыслями на счёт операционной системы Android, а также всей экосистемы вокруг неё. Ну а мы перевели!

Предупреждение: эта статья содержит только моё личное мнение, а оно может быть не верным. Примите это с изрядной долей скепсиса или вообще не читайте! 

И вот я снова с вами, пишу этот текст с борта самолёта до Джакарты. Это уже становится привычкой.

Честно говоря, я не совсем понимаю, почему моя статья о том, как я покинул Google, стала такой популярной. Я же просто написал что-то типа «Я простой случайный чувак, который сменил работу, бла-бла-бла», но вы зачем-то перевели её на 80 языков. В тот день меня обошла по популярности только Натали Портман со своей секс-колонкой, которая, надо признаться, была гораздо интереснее моего рассказа.

Вероятно, это была плохая неделя на интересные новости, или может быть Medium помог привлечь столько людей? Это действительно крутая платформа. Возвращаясь к своим блогерским делишкам, я хотел бы чтобы Google создавала инновационные продукты подобные этой платформе, но… дальше вы знаете.

Мой пост получил несколько интересных отзывов. Парень откуда-то из Пакистана написал, что готов купить мне пива, если я когда-нибудь окажусь в его краях. Некто из Лондона предложил мне тысячу баксов за часовой телефонный разговор о технологиях голосового поиска, на что я ответил вежливым отказом, потому что на самом деле не знаю ничего полезного об этом. Парень из России подошёл ко мне на вечеринке и сообщил, что я нажил много врагов. Весёлые времена!

Было и несколько недопониманий главного посыла моей статьи. Люди спрашивали «Эй, разве это не обычная перебежка?». Я пытался объяснить, что в этом есть нечто большее, но вероятно был не очень убедителен. Когда-нибудь я расскажу об этом подробнее, если смогу преподнести свою точку зрения иначе. 

Но не сегодня.

Сегодня я хочу поговорить об Android. Чисто с точки зрения моего персонального опыта разработчика под Android и iOS. Как известно, молния не попадает дважды в одно место, так что я не рассчитываю на то, что этот пост станет таким же популярным как и прошлый. Считайте, что сегодня здесь только я и вы.

Android занимает мои мысли, потому что мы постоянно ищем разработчиков для найма, а это не так просто, как кажется на первый взгляд. Программисты нужны абсолютно всем, так что иногда это похоже на попытку поймать единорога.

Зачем всем нужны мобильные разработчики? Потому что большой интернет медленно умирает. У меня есть друзья, вернее, бывшие друзья.. Они показывали мне все эти мрачные графики и диаграммы, которые не важно как разбивать или резать — Интернет всё равно оказывается в упадке, потому что весь мир становится мобильнее.

Помните, как Facebook изменил свою стратегию с «web first» на «mobile first» порядка 8-9 лет назад? Это не было делом одной ночи, и компания пережила целый экзистенциальный кризис, прежде чем до неё дошло, что пора становиться мобильнее. 

В итоге им это удалось, но будьте уверены, что это было чертовски не просто, потому что всё, что связано с разработкой под Android — самый огромный в мире сэндвич с дерьмом.

Дерьмовая кухня

В Google большинство инженеров слишком высокомерны для работы над мобильными приложениями. «Я не занимаюсь фронтендом», — любят они повторять. Есть такой феномен, который я называю DAG of Disdain или Directed Acyclic Graph of Disdain — направленный ациклический график надменности, похожий на блок-схему.

На самой верхушке этой Горы Высокомерия сидят высокопоставленные поисковые инженеры, пишущие на языке C++, который считается более крутым чем Java, который более крутой чем Python, который круче чем JavaScript. Соответственно, Поиск считается круче чем Реклама, которая круче чем Приложения, которые круче чем Инструменты, которые круче чем Фронтенд. Ну и так далее. Программисты любят наблюдать друг за другом, и если вам не повезло заниматься разработкой мобильных приложений в Google, то все будут смотреть на вас свысока.

Но пройдя путь от системного программирования до огромных размеров дата-инжиниринга и создания компилятора для обслуживания системных платформ, разработки игр, веб-разработки и мобильной разработки, я с уверенностью могу сказать, что фронтенд-программирование — полная жесть, если не хуже. В бэкэнд-разработке всё очень чисто и мило, хорошо организовано и распределено: это просто рай в сравнении с мерзким болотом, каким является веб-программирование. Но даже веб-программирование — приятная поездка на Бали, по сравнению с тем самым дерьмовым сэндвичем мобильной разработки, в том числе под iOS.

Ну и Android, конечно же. Это самый огромный дерьмовый сэндвич из всех. Разработчики под Android — герои. Программирование таких огромных приложений как Google Maps, Facebook или Snapchat..это..словно..вы конечно можете мне не верить, но это сидеть 20 минут и ждать, чтобы увидеть результат изменения одной строчки кода. Причём каждое ваше изменение, не важно насколько мелкое, с шансом 80% просто не будет работать во время вашей первой попытки, потому что такая вот тут редкая и странная матрица интероперабельности! То есть вы можете использовать X или использовать Y, но вы не сможете использовать их вместе, потому что…да пошёл ты, приятель!



И это я не затрагиваю вопросы совместимости с устройствами. Я получил кучу злых комментариев с одной звездой в Google Play, потому что моё игровое приложение рандомно крашилось на смартфонах LG. Я пошёл на eBay и купил стрёмный смартфон LG за 60 баксов вместо покупки стрёмного смартфона LG за 600 баксов, чтобы отладить баг и узнать в чём его причина. И что вы думаете? Там было два Android API для эмуляции клика кнопки мыши в списках прокрутки, но одно из этих API не работало на устройствах LG.

Вы, блин, серьёзно? 

Вот как это происходит: есть целая куча компаний-конкурентов, больших и маленьких, и каждый из них изменяет фреймворки Android как ему вздумается. Я не говорю о библиотеках для отсутствующей функциональности, которых там в изобилии. Я говорю о полномасштабных заменах целого пакета сервисов для Android. У Microsoft есть Xamarin, Adobe использует Cordova, Facebook предпочитает React Native — это просто сумасшедший город! Серьёзно, вы только посмотрите: Framework7, Appcelerator Titanium, Onsen, Sencha, Kendo, XDK, Ionic, Mobile Angular, Unity…

Я говорю на полном серьёзе: что, чёрт возьми, происходит?

Словно каждый, кто захотел сделать что-то под Android, решил, что здесь всё настолько убого, что срочно нужно переделать всё по-своему, чтобы оно работало намного лучше. А Google, глядя на всё это, говорит: «О, правда? Но вы всё равно не сможете конкурировать с нами, потому что мы сами будем конкурировать с нами»! И следом запускает Flutter — инструмент для создания кроссплатформенных приложений, чьё существование до недавнего времени команда разработки Android предпочитала не признавать. 

В какое замечательное время мы живём.



Нападение на Android

Но именно такие вещи и делают Google уязвимой. Кроссплатформенные приложения создаются для того, чтобы работать и на iOS, и на Android. Неважно большая вы компания или маленькая — никто не хочет оплачивать работу двух команд, которые будут писать одно и тоже приложение под разные платформы. Таким образом существует огромное экономическое давление для перехода на кроссплатформенную структуру. Единственное, что сейчас всех удерживает от панического бегства — то, что этот фреймворк пока ещё не настолько хорош, как нативная разработка.

Но некоторые из них (в частности Facebook React Native), подобрались уже так близко, что если какой-то компании удастся занять более крупную долю рынка инструментов для разработки, то Android станет сантехническим прибором для целой экосистемы программистов, которые больше не подконтрольны Google.

Это может выглядеть не слишком крупной проблемой, потому что у Google есть Play Store и куча OEM-производителей, лицензирующих это всё. Но представьте ситуацию: если все мобильные разработчики начнут использовать кроссплатформенную инфраструктуру X, то любой другой производитель или консорциум сможет прийти со своей системой (например Windows), поддерживающей этот фреймворк X, но с конкурирующими сервисами, что полностью отключит Google от всей экосистемы. Поверьте мне, об этом мечтают очень многие компании.

Простите, на самом деле ВСЕ ЭТОГО ХОТЯТ. Да и кто бы отказался?

Реакция Google на эту ситуацию выражается в чесании собственных пяток. Они удваивают усилия над традиционной нативной разработкой и добавляют поддержку языка Kotlin. Я очень люблю Kotlin, это будущее Java. Но давайте посмотрим правде в глаза: это не то место, куда движется мобильный рынок. Люди пишут кроссплатформенные приложения по двум причинам: чтобы приложение работало на двух платформах с минимальными затратами и потому что писать только под Android слишком болезненно. Даже Kotlin здесь не поможет.

Многие компании захотят всё это выкинуть и начать с чего попроще. 

Если вы разрабатываете софт под Android и iOS, то вы, вероятно, захотите попробовать Facebook React Native, и вам хватит 30 секунд, чтобы понять, насколько этот инструментарий лучше и удобнее. Но если вы захотите создать игру, то лучше будет использовать Unity. Для бизнес-приложений и приложений по продуктивности, Facebook React Native предложит хорошую производительность, кроссплатформенность и невероятные инструменты (даже лучше, чем у Microsoft), но главное — скорость разработки.

Помните я говорил, что в случае со стандартным Android-инструментарием нужно ждать по 20 минут, чтобы увидеть результат изменения строчки кода? Конечно, такое возможно только с крупными приложениями, по типу Nest или тем же Facebook, но даже простенький софт заставит вас подождать минимум 2-3 минуты. В случае с инструментарием Facebook это занимает одно мгновение. Вы вносите изменения — вы видите изменения.

А это значит, ребята, что вы сможете внедрять функции в 10 раз быстрее, и шустрее выводить их на рынок, и быть самыми первыми, и выигрывать по всем фронтам. Отказ от нативного программирования в пользу быстрого кроссплатформенного решения по типу React Native — это победная стратегия.

Я предполагаю, но без доказательств, что Google сейчас сама ещё толком не знает, хороша для них кроссплатформа или лучше придерживаться нативной разработки, но уже склоняется к тому, чтобы считать нативку плохой, потому что кроссплатформенный Flutter гораздо лучше.

Сейчас Google сосредоточена над тем, чтобы удержаться на вершине и сделать нативную разработку менее ужасной. И так как это наиболее ужасно для больших приложений, то они стараются решить прежде всего косяки с большим приложениями. Но проблема в том, что компания использует и без того сложную систему Gradle, на которую сверху наваливает специфические для Android штучки. С каждым месяцем система становится настолько сложнее, что даже ведущие инженеры уже не знают как ей пользоваться. Но они продолжают наращивать функции, думая, что это важно для решения проблемы с большими приложениями.

Ирония заключается в том, что компании уже переходят на систему Buck — инструментарий Facebook для Android-разработки. Таким образом Google увлечена изначально проигрышной стратегией. Она удваивает усилия для решения проблем, но это никому не нравится, и в итоге компания теряет разработчиков, которые просто уходят. А конкурирующие системы разработки продолжают набирать долю на рынке.


Фланговая атака

Что ещё хуже, так это то, что более совершенные инструментарии разработки — не единственная тактика, с помощью которой кто-то может «украсть» Android у Google.

Другой вариант — создание более успешного магазина приложений. По сути, Play Store — единственная вещь, позволяющая Google полностью контролировать Android, который в отличие от магазина считается открытой платформой. Cyanogen был первой большой попыткой переворота при поддержке Microsoft и Twitter. Из-за внутренней политической борьбы попытка провалилась, но это была первая серьёзная борьба на поле Play Store.

Но угадайте, кто ещё сумел сыграть в большую игру с конкурирующим магазином приложений? Вы догадались: Джефф Безос! Потому что нельзя стать первым в мире триллионером, не украв Android у Google. Ну, мне нравится так думать. Магазин приложений Amazon App Store выглядит весьма впечатляюще — в каждом сравнении с Google Play Store, которое я проводил, Amazon со временем становился всё лучше и лучше.

Если этого не достаточно для беспокойства Google, то есть третья тактика нападения, и она бьёт прямо в самое больное: в рекламу. Приложение Facebook стало таким огромным и сложным, потому что над ним сотни инженеров трудились годами. В результате теперь вы можете показывать рекламные объявления прямо внутри приложения Facebook, не отдавая Google ни копейки. Представьте, как Google себя чувствует из-за этого.

WeChat проделала то же самое в Китае. Приложение WeChat стало целой платформой, для создания других приложений, сервисов и рекламы. Это целый рынок услуг, встроенный в одну программу. Facebook и WeChat стали полноценными отдельными рекламными каналами.

Давайте проясним: единственная причина, по которой Google создала Android — это рекламный канал. Google — крупнейшая рекламная компания в мире.

 Каждый раз когда вы видите, как компании уровня Facebook, Google, Amazon или Microsoft впрягаются в загадочный новый бизнес, делайте ставку на то, что это будущий рекламный канал.

Google Chrome — это канал контроля доступа к Интернету. Microsoft Xbox был каналом, созданным против PlayStation, которая угрожала уничтожить ПК как канал доступа в онлайн из дома. YouTube, Instagram, WhatsApp — тоже каналы. Война между HBO/Amazon/Netflix — это ещё одна «канальная игра». Ваш дом является одним из крупнейших мест для внедрения рекламных каналов — привет Amazon Echo. И даже Google Maps — это рекламный канал для показа локальных объявлений. Начните искать и вы увидите такие каналы повсюду.

Суть в том, что компании хотят, чтобы вы просматривали свой любимый контент (книги, фильмы, игры, секс-колонку Натали Портман) через их каналы, чтобы они могли получить доход от рекламы напрямую или хотя бы от её младшей сестры — подписки. 

Android, вероятно, сейчас самый важный канал для рекламы, ну или он может стать им в ближайших десять лет.

Google не может позволить себе потерять его, но мы уже видели как могут работать координированные атаки в разных измерениях: инструментах разработки (React Native и его друзья), магазинах (Amazon App Store и ожидаемый преемник Cyanogen, по слухам) и коммерческих площадках для приложений и услуг (Facebook и WeChat). Реакция Google на все эти угрозы была…скажем так…неоднозначной. Компания до сих пор на коне, но лишь на данный момент.

Тем временем на ранчо… 


Всё это может показаться вам кучей бесполезной спекулятивной информации (потому что так оно и есть), но она действительно имеет значение, в том числе для нашей компании, где мы принимаем важные решения о том, какие технологии использовать для мобильных приложений, которые станут окошками в большой мир для всех наших клиентов.

Если вы думаете о рисках, которые могут привести Google к потере контроля над Android, то делайте ставку на кроссплатформенные фреймворки. Если вы уже участвуете в жёсткой конкурентной гонке, то вам нужно запускать новые продукты как можно быстрее, а значит вам стоит использовать что-то кроме нативной разработки под Android, потому что Android всё ещё сидит на Gradle-поезде, который никогда не будет таким же скоростным, как другие. Во многом из-за устаревших проблем дизайна Android, которые уже очень сложно переделать.

Среди всех кроссплатформенных опций, React Native пока что выглядит победителем. Он подходит и для веб-разработчиков, которые в действительности являются самой большой аудиторией разработчиков в мире. Мы в нашей компании начали инвестировать свои силы в React Native, чтобы посмотреть, как хорошо эта платформа справится с обещаниями, в перспективе выглядящими очень круто.

Суммируя все главные идеи этого поста:

Мы в Grab нуждаемся в мобильных разработчиках также сильно, как и все остальные, но их очень сложно отыскать и нанять, потому что Android-программирование отвратительно, и все об этом знают, кроме, видимо, самой Google. Конкурентов, предлагающих Единственно Верный Путь, становится всё больше, что только усиливает фрагментированность и затрудняет поиск разработчиков. Фух!

Но вне зависимости от вашего выбора, сейчас очень хорошее время, чтобы быть мобильным разработчиком. Если вы ещё не мобильный разработчик, то имеет смысл попробовать себя в этом деле. Начните с бэкэнда, изучите мобильную разработку, станьте «фулл-стек-девелопером», то есть более редким и дорогим рыночным единорогом.

Сейчас хорошее время для соревнований по контролю над Android, если вы заинтересованы в подобных вещах. Множество компаний уже здесь. Это огромные акулы, которые плавают вокруг Android-лодочки. Google следует быть очень осторожной.


По материалам Medium

Похожие материалы