Разработка
Кто украдет Android у Google?
Бывший сотрудник Google рассуждает о самых больших проблемах платформы Android.
Дисклеймер: Это мои персональные мнения. Многие из них, вероятно, неверны. Я не говорю от имени своего работодателя Grab. Читайте это с долей скептицизма.
Я до сих пор не уверен, почему моя статья “Почему я ушел из Google” привлекла столько внимания. Каким-то образом её перевели на 80 языков, и в тот день популярнее неё стала только колонка о сексе от Натали Портман, что было намного интереснее.
Как бы то ни было, на мой текст поступило несколько интересных ответов. Человек из Пакистана предложил купить мне пиво, если я когда-нибудь буду в его городе. Кто-то из Лондона предложил мне тысячу долларов за часовой разговор по телефону о рынке голосового поиска, и это предложение я вежливо отклонил, так не знаю ничего полезного об этом. На вечеринке ко мне подошел парень из России и сказал, что у меня много врагов.
Многие люди не поняли ключевого посыла и спрашивали: “Это же просто сервис для поездок?” Я пытался нарисовать более широкую картину, но это прошло мимо людей, поэтому не думаю, что я справился. Когда-нибудь я вернусь к этой точке и посмотрю, могу ли я что-то исправить. Но не сегодня. Сегодня я хочу немного поговорить об Android: это только мое персональное мнение в качестве любителя-разработчика приложений для Android и iOS.
Я думаю об Android с тех пор, как мы пытались нанять мобильных разработчиков, что должно было быть простым заданием. Но оказалось, что сейчас они нужны на рынке больше всего. Они нужны Grab и всем вокруг, но людей недостаточно.
Почему же всем нужны мобильные разработчики? Потому что веб медленно умирает. Мои знакомые почти в каждом отделе Google показывали мне мрачные графики, которые показывают, что использование веб постепенно падает, так как весь мир переходит на мобайл. Вероятно, вы помните, как Facebook перешел с web-first на mobile-first? Facebook тогда почти умер. Я не имею в виду, что компания погибла бы за одну ночь, но они прошли через экзистенциальный кризис, когда поняли, что должны стать мобильной компанией или уйти в забвение.
Им удалось, но это было непросто, так как стек разработки на Android — это большая проблема.
Кухня Android
В Google многие инженеры слишком высокомерны, чтобы заниматься мобильным или веб-программированием. “Я не занимаюсь фронтендом”, — говорят они с максимальным снобизмом. Это явление я называю “DAG презрения”, где DAG (Directed Acyclic Graph) означает направленный ациклический граф, который похож на блок-схему. На вершине горы высокомерия находятся инженеры поиска, которые пишут на C++, который считается круче Java, которая круче Python, который круче JavaScript. А поиск считается круче рекламы, которая круче приложений, которые круче инструментов, которые круче фронтенда. Программисты любят презирать друг друга. И если вам не повезло работать мобильным инженером в Google, вы застряли у подножия нескольких тотемных столбов, с которых на вас все смотрят сверху вниз.
Я занимался несколькими вещами, от системного программирования систем до масштабной инженерии данных, дизайна компилятора, сервисных фреймворков, разработки игр, веб-программирования и мобильной разработки, и могу сказать вам, что фронтенд-разработка ничуть не проще, если не сложнее. В бэкенде всё чисто, организованно, лежит по полочкам и параллельно, это рай по сравнению с беспорядком, в который превратилось веб-программирование за последние 25 лет. А веб-программирование — это поездка на Бали по сравнению с мобильной разработкой, в том числе и iOS.
А Android хуже всего. Android-разработчики — это герои. Программирование на Android — это ждать двадцать минут, чтобы увидеть, что случится, если вы измените одну строку кода. И любое изменение с вероятностью в 80% не будет работать с первого раза, так как матрица совместимости функции невероятно непонятна. Конечно, вы можете использовать X, и вы можете использовать Y, но вы не можете использовать X вместе с Y.
А совместимость с устройствами? Для моей игры Wyvern есть несколько сердитых отзывов в Google Play, так как она почему-то не работала на устройствах LG. Я купил на eBay телефон LG, чтобы протестировать баг, и обнаружил, что существует два 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, и существование которого команда Android отказывается признавать.
Нападение на Android
Эти фреймворки делают Google уязвимым. Многие из них кросс-платформенные, что означает, что вы можете написать одно приложение и запустить его на iOS и Android. Как в большой компании, так и в маленькой, никто не хочет платить за две команды разработчиков, чтобы написать одно и то же приложение для разных платформ. Поэтому существует экономическое давление, чтобы перейти на кросс-платформенный фреймворк. От полного перехода на кросс-платформенные фрейморки всех останавливает только то, что они пока не так хороши, как нативные.
Некоторые из них (особенно React Native) очень близки к этому. Если одному из них удастся занять достаточно большую долю на рынке, то Android станет частью экосистемы, которая уже не будет под контролем Google.
Это, кажется, не слишком большая проблема, так как у Google есть контроль над Google Play, производителями оборудования, лицензиями и так далее. Но если все мобильные разработчики начнут использовать фреймворк X, тогда любой другой производитель оборудования или ОС может создать свою платформу (например, Windows), которая будет поддерживать фреймворк X напрямую, и это полностью устранит Google из процесса. И многие, если не все, компании хотели бы это сделать.
В Google решили ничего не менять. Они удваивают ставку на нативное Android-программирование с официальной поддержкой языка Kotlin, что было большим шагом для нативных Android-программистов. Мне нравится Kotlin — это будущее Java. Но давайте признаем: мобильный рынок движется не туда. Люди пишут кросс-платформенные приложения по двум причинам. Во-первых, они хотят, чтобы приложение компании работало на двух платформах и им не пришлось делать двойную работу. Во-вторых, программирование на Android все ещё имеет много проблем, даже с Kotlin, поэтому многие компании начинают все с нуля с чем-то более простым.
Если вы разрабатываете на Android или iOS, вам стоит попробовать React Native, чтобы в течение 30 секунд понять, насколько это удобнее, только если вы не создаете игру, потому что тогда вам все равно придется использовать Unity.
Для приложений на тему бизнеса и продуктивности React Native предлагает хорошую производительность, кросс-платформенную совместимость, невероятные инструменты и улучшенную скорость разработки. Помните, что я сказал, что увидеть изменение одной строки в обычном Android-стеке занимает 20 минут? В React Native все мгновенно.
Это значит, что вы можете запускать функции в 10 раз быстрее, что означает более быстрое время выхода на рынок и другие преимущества. Отказ от нативного программирования в пользу быстрых кросс-платформенных фреймворков — это выигрышная стратегия. Я подозреваю, что отдел Android в Google не знает, хорошим или плохим решением для них являются кросс-платформенные фреймворки, но, видимо, они считают, что плохим, иначе они вкладывали бы больше сил во Flutter.
Сейчас они сконцентрированы на том, чтобы сделать опыт нативного программирования менее ужасным. И так как он ужасен для больших приложений вроде Snapchat или Instagram, они пытаются решить эту проблему, самой большой из которых является время сборки.
Чтобы это исправить, Google работает над “официальной” системой сборки приложений Android, которая основана на сложной системе Gradle, но Google добавляет несколько специфических для Android вещей. Она становится все сложнее и сложнее, и иногда даже сами инженеры не понимают различия между её частями. В чем разница между build type, product flavor и flavor dimension? Они добавляют сложности, потому что считают, что эти функции важны для больших приложений и компаний. Ирония здесь в том, что большие компании отказываются от неё в пользу Buck — системы сборки для Android от Facebook.
Хотя Google понимает, что существует проблема, они ставят на решения, которые никому не нравятся: нативный стек с безумно усложненной системой сборки Gradle. И они теряют разработчиков, а рынок занимают сторонние платформы.
Фланговые атаки
На Android нападают не только со стороны стека разработки. Существуют и другие способы, которыми кто-то может “украсть” Android у Google. Один из подходов — создать более успешный магазин. Google Play вызывает множество споров на уровне компаний и государств, потому что Android является открытой системой, но Google Play на 100% контролируется Google. Cyanogen был первой попыткой, которую поддерживали Microsoft и Twitter. Хотя она провалилась из-за внутренних споров внутри компании, это была первая серьезная попытка атаковать уязвимое место — Play Store.
Кто ещё пытается сделать конкурирующий магазин? Вы угадали — Джефф Безос, потому что нельзя стать первым триллионером в мире, не украв Android у Google. Магазин приложений Amazon уже впечатляет, и в гонке Amazon и Google Amazon со временем становится все лучше.
Существует и третья атака на Android, прямо в больное место — в рекламу. Android-приложение Facebook стало таким большим, что стало настоящей платформой, и теперь вы можете предлагать свою рекламу в приложении напрямую. Например, The New York Times может купить там размещение рекламы, и все деньги уйдут Facebook.
В Китае то же самое сейчас делает WeChat. Приложение WeChat стало процветающей платформой для создания и развертывания других приложений и рекламы. Это целый маркетплейс внутри самого приложения. Facebook и WeChat сами по себе стали рекламными каналами.
Будем честны: единственная причина, по которой Google создала Android, — это потому, что он является каналом рекламы. Google — это крупнейшая рекламная компания в мире, и они всегда находятся под угрозой от других компаний, которые хотят привлечь ваше внимание в свои каналы вместо каналов Google. В этом заключается и атака на сетевую нейтральность, так как провайдеры хотят показывать вам рекламу сами.
Когда вы видите как компания вроде Facebook, Google, Amazon или Microsoft пытаются попасть в новый бизнес, это борьба за каналы. Google Chrome — это канал для контроля над доступом в веб. XBox — это канал против PlayStation, который был угрозой для PC в качестве канала для выхода онлайн из дома. Youtube, Instagram и WhatsApp — это каналы воспроизведения. Контентная война HBO, Amazon и Netflix тоже идет за канал воспроизведения. Amazon Echo — это канал воспроизведения, а ваш дом — это одна из крупнейших битв за канал. Даже Google-карты — это канал воспроизведения локальной рекламы. Компании хотят, чтобы вы смотрели свой любимый контент через их канал, чтобы они получали доход от рекламы или подписок.
Android — это, вероятно, самый важный канал Google, если не сейчас, то через десять лет. Они не могут потерять над ним контроль. Google подвергается атакам с трех разных сторон, и ни на одну из этих угроз компания не реагирует должным образом.
Тем временем…
Это может казаться бесполезной спекуляцией, но на нас в Grab это влияет, так как мы принимаем важные решения об использовании стека технологий для мобильных приложений, которые являются каналами для наших пассажиров, водителей, агентов и так далее.
Если существует какой-либо риск того, что Google потеряет контроль над Android, лучше всего будет использовать кросс-платформенный фреймворк. И если вы находитесь в условиях жестокой конкуренции и вам нужен быстрый запуск, вам нужно что-то другое, а не нативный Android. Android все ещё гонится за Gradle, и он никогда не будет быстрым, потому что существующие проблемы сложно скрыть.
Среди кросс-платформенных вариантов React Native кажется победителем. Он нравится веб-разработчикам, которые составляют самую большую аудиторию разработчиков в мире. С этим сложно состязаться. Grab начал вкладывать силы в React Native, чтобы увидеть, смогут ли он выполнить свои обещания.
Это хорошее время быть мобильным разработчиком. Если вы разработчик, который не занимается мобайлом, стоит рассмотреть смену деятельности. Опыт в бэкенде и мобильной разработке превратит вас в full stack-разработчика, ещё более редкого единорога.
-
Видео и подкасты для разработчиков1 месяц назад
Lua – идеальный встраиваемый язык
-
Новости1 месяц назад
Poolside, занимающийся ИИ-программированием, привлек $500 млн
-
Новости1 месяц назад
Видео и подкасты о мобильной разработке 2024.40
-
Новости1 месяц назад
Видео и подкасты о мобильной разработке 2024.41