Хабрахабр

«Понимание того, как устроена система, позволяло многое хакать»: Рой Бениосеф об Android-разработке

Ну, если даже поиск Google начал принимать фотографию этого человека за Samsung Galaxy, то это явный знак! Как понять, что человек очень глубоко погружён в мир Android и при этом работает в Samsung?

Вскоре он приедет к нам конференцию Mobius, и мы расспросили его обо всём: от того, каково было разрабатывать под Android на заре становления экосистемы, до того, чем именно занимаются в NEXT.
— Вы называете себя «первым GDE по Android»... Рой Бениосеф — один из первых в мире GDE по Android, GDG-организатор, сотрудник особого подразделения Samsung NEXT.

Всё началось с того, что я был другом Amir Chevat — сейчас он главный евангелист в Twitch. — Это такая шутка, официально меня так не называют — просто я не смог найти ни одного Google Developer Expert по Android до меня. Тогда, в 2011-2012 годах, я довольно активно участвовал в местном Android-сообществе, поэтому нет ничего удивительного в том, что, среди прочих, он выбрал и меня. Он был инициатором программы GDE, дело происходило в Тель-Авиве. Иногда я в шутку говорю, что стал GDE потому, что в то время они ещё не заморачивались с отбором. Программа тогда была значительно менее структурирована.

— То есть не было стандартизированных процедур?

— Нет, программа была ещё очень незрелой: меня просто пригласил мой друг, и я согласился.

Делали доклады и писали статьи про Android? — Чем вы занимались в то время?

И я был сооснователем и организатором группы GDG с упором на мобильные приложения. — В основном я делал публичные выступления. Всё это было году в 2011-м, точно не помню. Я делал много докладов для MobileMonday и для GDG, мы также организовали DevFest. Кроме того, мы писали опенсорсный код, писали в блогах, но основным нашим занятием были публичные выступления.

Что было самыми популярными темами в то время? — Android тогда не было ещё трёх лет. Какие проблемы были самыми сложными?

Сделать так, чтобы приложение под Android выглядело стильно и работало гладко, тяжело даже сейчас, а тогда было ещё труднее. — В общем-то то же, что и сегодня — обеспечение качественного user experience, проблемы с производительностью, графика. Появилась возможность писать классные приложения, при этом не создавая всё с нуля, и это было очень важно. Если говорить о том, в чём самые существенные улучшения, произошедшие с тех пор — думаю, они связаны именно с этими трудностями, то есть это реструктуризация, произошедшая в связи с Marshmallow, появление новых инструментов, ConstraintLayout.

— То есть самое ощутимое изменение в том, что появилась база для приложений, необходимые инструменты для UI и фреймворки для UI вроде Material Design?

Вообще говоря, всё это существовало с самого начала, но работать было очень сложно. — Наверное, да. А для того, чтобы создать качественное приложение для Android, нужно потратить много времени, чтобы стать экспертом. Кроме того, Android всегда сравнивают с iOS, и там всегда можно было сравнительно легко создавать очень красивые приложения, при этом почти не имея опыта. Сейчас это стало проще.

Раз с iOS было проще, можно было пойти туда или вообще не в мобильную разработку. — А почему вы изначально выбрали Android?

Кроме того, от iOS веяло спесивой корпорацией, а Android — это, считай, Linux. — Мобильными приложениями я начал заниматься потому, что это была совершенно новая сфера, мне было интересно туда попасть — примерно тогда происходил отход от телефонов-«звонилок». А я — опенсорсный разработчик, на ноутбуке у меня стоит Ubuntu, так что Android мне был ближе, мне хотелось помочь ему достичь зрелости. iOS, конечно, тоже Unix-подобная, но Android значительно ближе к Linux. И моё знание Linux помогло на ранних этапах разработки под Android — когда что-либо не работало, я всегда мог перейти на уровень Linux и самостоятельно решить проблему там.

Когда я начинал работать под Android (это была версия 1. — Правда? Какие именно проблемы вы решали через Linux? 6), чтобы начать работать, нужно было установить Android SDK, IntelliJ IDEA и дальше просто читать мануал и кодить.

Например, когда до появления NDK у нас возникали проблемы с графикой, я писал некоторые части под OpenGL, потому что хорошо в этом разбирался. — Самые разные. Понимание того, как устроена система, позволяло многое хакать. Мне удавалось решить проблемы с некоторыми устройствами, которые возникали на уровне драйверов.

— То есть у вас много низкоуровневой работы?

Я специализируюсь на нестандартных платформах под Android — я руководил созданием систем для платформ, которые были установлены не на стандартных телефонах. — В то время её было много. Так что в мои обязанности входила разработка начиная с уровня Linux и выше. До Samsung NEXT TLV я работал в компании Vidmind, там я руководил client group и, помимо прочего, мы там создали собственный проект для Smart TV и STB вместе с Hisense на основе Android.

Давайте теперь поговорим о вашей работе с GDG в Израиле и конкретно в Тель-Авиве. — Получается, ваш опыт облегчил вам разработку на Android. Многочисленное ли оно, чем занимается? Что вы можете рассказать нам о сообществе там?

Большая часть наиболее талантливых разработчиков здесь занимаются облачными технологиями, искусственным интеллектом, блокчейнами. — Сейчас в GDG в Израиле значительно меньше активности. Академия была основана Йонатаном Левином вместе с другими партнёрами. Но есть одно очень крупное, активное и успешное сообщество, занимающееся мобильной разработкой — Android Academy.

А как вы связаны с ним и с Android Academy? — Наши читатели хорошо знают Йонатана, потому что он много выступал с докладами на прошлых конференциях Mobius. Вы помогаете им?

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

— Чему будут посвящены ваши семинары в Android Academy?

Как правило, я преподаю то, в чём хорошо разбираюсь сам. — Мы пока не решили. Обычно это наиболее скучные и технические вопросы, чаще всего низкоуровневые — кибербезопасность, базы данных в Android, правильное кэширование информации, правильное использование GPU и так далее.

У нас её организовывали несколько раз в Санкт-Петербурге, и я не знаю, есть ли она в Москве, так что, наверное, нашим читателям было бы интересно узнать, какой у неё формат, проводятся ли там курсы, встречи или что-либо ещё? — Расскажите, пожалуйста, что именно из себя представляет Android Academy?

Но в общем и целом — это очень активное, открытое и дружное сообщество. — Йонатан значительно больше занимается Android Academy, чем я, так что мне рассказывать об этом несколько непривычно. Эти курсы бесплатные, и они открыты для всех. Они проводят курсы наподобие Udacity, некоторые из них начального уровня, другие посвящены более продвинутым сферам, например, многопоточность, графика, анимация.

— Вы бы рекомендовали посещать курсы Android Academy в России?

— Если она аналогична израильской — да, безусловно.

Давайте перейдём теперь к вашей работе. — Насколько я знаю, Йонатан пытается экспортировать израильскую модель, то есть сделать российскую настолько похожей на израильскую, насколько возможно. А что представляет из себя Samsung NEXT и какова ваша роль там? Все знают, что такое Samsung — огромная корпорация, занимающаяся всем на свете, от строительства до смартфонов.

Мы не полностью интегрированы в Samsung Electronics и специализируемся на программном обеспечении. — Samsung NEXT — отдел Samsung, заведующий инновациями. У нас есть товарное подразделение, которое создаёт передовой софт в области граничных вычислений (edge computing), дополненной реальности, искусственного интеллекта.

Мы вкладываемся в стартапы на стадиях от pre-seed до B, на суммы до 3 миллионов долларов. Но 90% того, чем мы занимаемся здесь, в Израиле — это венчурные инвестиции, а я выполняю обязанности главы нашего фонда (хоть им и не являюсь). У нас другая стратегия, мы делаем инвестиции на более ранних стадиях и вкладываемся только в софт. Мы оцениваем их на основе финансовых инвестиций, то есть мы не стратегические инвесторы, этим занимается другое подразделение, Samsung Ventures, и они прекрасно делают свою работу. Кроме того, инвестируем на основе финансовых критериев, но при этом мы вкладываемся в те стартапы, которые могут иметь стратегическое значение в течение следующих 2-10 лет, даже если у Samsung в этой области ещё нет продукта.

У Samsung в этой области продуктов нет, так что стратегической эту инвестицию назвать нельзя. Например, мы инвестировали в стартап под названием StreamElements, они предоставляют стримерам инструменты для набора, роста и монетизации аудитории. Мы же решили вложиться, поскольку мы видели, как этот стартап монетизируется. Кроме того, стратегический инвестор никогда не стал бы вкладывать деньги в стартапы на стадиях pre-seed. Но при этом нельзя исключать, что в будущем Samsung окажется вовлечён в область компьютерных игр, и если это произойдёт, то компания StreamElements будет иметь большое стратегическое значение.

На самом деле, название должности я придумал сам, взял его с потолка. Помимо этого, в Израиле моя должность — менеджер по связям с экосистемой. А менеджмент сообщества — это когда у вас есть своё сообщество, в котором вы организуете свои мероприятия. Под связями с экосистемой обычно подразумеваются, например, мероприятия, которые Google проводит с целью лучше познакомить сообщество со своими продуктами. Я — евангелист для технологий, которые сам я не создавал, потому что Samsung NEXT сам ничего не разрабатывает, это венчурная компания. Я вроде как не занимаюсь ни тем, ни другим, но при этом делаю немного и того, и другого. Своего сообщества у нас нет, мы вступаем в партнёрство с другими сообществами и помогаем им. Мы делаем свою работу бесплатно и не накладывая никаких обязательств, просто потому, что хотим помочь людям — в этом мы видим наше предназначение. Таким образом, в конечном итоге мы также получим выгоду от этого, то есть, в сущности, с нашей стороны это спонсорство. Делаем мы это, во-первых, потому что мы хорошие люди, а во-вторых, потому, что чем больше пирог (то есть сообщество), тем больше кусков достанется всем, в том числе и нам.

Вы оцениваете только их замысел, их софт или, помимо этого, вы также проводите техническую оценку архитектуры, процессов и так далее? — Давайте поговорим о тех стартапах, в которые вы вкладываетесь.

Стартап — это не замысел. — По-разному, в зависимости от того, на какой стадии находится стартап. Я по большему счету заведую технической частью проверок, но мы также смотрим на организацию бизнеса. Есть прекрасные идеи с жуткой реализацией и наоборот. Всё никогда не сводится только к идее, смотрим и на неё, и на реализацию.

Встречи с новыми людьми, знакомство с новыми идеями, возможность увидеть технологии будущего? — Что самое интересное в такой работе?

Но самое ценное — это возможность вникнуть в новые технологии, на которые раньше у меня не было времени. — Да, мне нравится поиск новых людей — обычно это очень умные и увлечённые люди со замечательными идеями. Всё, что я делал, было ориентировано на очень краткосрочную перспективу. Когда я занимался управлением команды из 45 разработчиков из Сербии, Украины, Китая и Израиля, у меня не оставалось времени на то, чтобы экспериментировать с Firebase, машинным обучением или компьютерным зрением. А теперь я могу позволить себе углубиться в новые технологии благодаря тому, что их исследуют те компании, которыми мы занимаемся — эти знания мне нужны, чтобы правильно оценить те проекты, с которыми мы знакомимся.

Звучит действительно интересно. — То есть раньше вы занимались организацией разработки, а теперь делаете нечто более инновационное, и у вас есть время изучить горизонт новых технологий. Есть ли у этой работы какие-то недостатки?

Здесь совершенно другие ощущения, другая отдача от работы. — Конечно — я сам непосредственно ничего не создаю, а только оцениваю, может ли кто-то другой сделать то, что планирует, и иногда предоставляю деньги и помощь. В этом недостаток. Мне очень нравится сам процесс созидания, и конкретно этого чувства здесь нет.

— А есть ли у вас какой-либо проект, которым вы занимаетесь в свободное время?

Нельзя экспериментировать с новыми технологиями, при этом не собирая ничего самому. — Да, конечно. Есть проект, над которым я работаю уже какое-то время.

— Можете нам что-нибудь о нём рассказать?

Я написал небольшое приложение под Android, которое связывается с Firebase и использует TensorFlow на самом устройстве и в Firebase. — Как я уже говорил, я хотел поэкспериментировать с компьютерным зрением и машинным обучением. Он проверял наличие людей в комнате и, если кого-либо обнаруживал, снимал видео. Это приложение я установил на старый телефон и положил его у себя в столовой. Поэтому цель приложения заключалась в том, чтобы предсказать, выключит ли человек свет, выходя из комнаты, и, если не выключит, отправить напоминание на телефон. А надо сказать, что моя жена никогда не выключает свет.

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

Решение домашних проблем при помощи новых технологий. — Да, звучит очень круто.

— На самом деле, я хотел посмотреть, смогу ли я действительно написать что-либо с этой технологией, а не просто прочитать статью и подумать про себя, что, наверное, это реализуемо.

— Скажите, какое событие в вашей профессиональной жизни принесло вам больше всего удовлетворения?

Думаю, самой большой честью для меня было участие в Google I/O в качестве докладчика два года тому назад. — Тут много о чём можно говорить. Так что в моей карьере есть много моментов, из-за которых я считаю себя счастливчиком. Я также очень рад тому, что из года в год подтверждается моё членство в программе GDE. Меня исключили из двух университетов, когда я начинал работать на Android. Мой пример доказывает, что можно совершить все вообразимые ошибки, и, тем не менее, быть успешным. Кроме того, стартап, в который я пришёл, потратил 30 миллионов и обанкротился. Android тогда был медленной системой с массой сбоев, при этом именно в то время начинался бум на iOS. Неудача следовала за неудачей, и тем не менее, я чувствую себя успешным, потому что все эти события позволили мне вырасти.

А если ошибки крупные, на них можно очень многому научиться. — Я считаю, что нельзя прийти к успеху, не совершив ошибок. О чём именно вы хотите рассказать? Мой следующий вопрос о вашем предстоящем докладе на Mobius «G(PU) force». Какую проблему хотите решить?

Если же вы пишете под Android, то, когда ваш код капризничает, вы не знаете, происходит ли это из-за вашей ошибки, из-за проблем с процессором или из-за того, что вы неправильно пользуетесь GPU. — Если вы занимаетесь разработкой под OpenGL, например, пишете игры, то у вас есть определённое представление о том, как использовать GPU и что делать, если она ведёт себя не так, как надо. У нас постоянно происходили самые невероятные сбои, и мы не могли понять, из-за чего. В основе доклада лежат реальные кейсы из опыта компании, в которой я раньше работал — Vidmind, а также несколько кейсов, которые я специально наблюдал, чтобы увидеть, поменялось ли что-либо за последние три года. В докладе я также объясню, как эти ошибки исправить, и предложу правила, которыми Android-разработчики могли бы пользоваться, чтобы этих проблем избежать. Лишь значительно позже я понял, что мы неправильно использовали GPU.

Но большинство разработчиков не имеют возможности создавать программы исключительно для новейших устройств, поэтому есть тенденция писать приложения, которые очень плохо работают на всех устройствах. Конечно, с новыми инструментами, на новых устройствах и новых операционных системах работать становится проще. Если у вас есть представление того, что Android ожидает от вас на различных уровнях API, вы можете написать приложение, которое будет красиво работать независимо от того, где его разворачивают. Большая часть этих сложностей связана с реализацией GPU.

— То есть ваша мысль в том, что профессиональному Android-разработчику важно знать, как работает GPU, чего GPU от него ожидает.

Конечно, после этого доклада вы не сможете сказать: «Теперь я умею что-то, чего раньше не умел». — Да. Зная, что именно необходимо тестировать, вы можете создать приложение, которое всегда будет красиво работать, и я хочу это продемонстрировать. Я показываю примеры того, как GPU интегрирован в экосистему Android.

Под конец я хотел бы спросить — что бы вы пожелали посетителям конференции? — Надеюсь, это будет очень полезно нашим читателям.

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

Конференция пройдёт в Москве 8-9 декабря. Описание доклада Роя можно прочитать на сайте Mobius, и там же есть описания остальных докладов программы.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть