«Понимание того, как устроена система, позволяло многое хакать»: Рой Бениосеф об Android-разработке
Как понять, что человек очень глубоко погружён в мир Android и при этом работает в Samsung? Ну, если даже поиск Google начал принимать фотографию этого человека за Samsung Galaxy, то это явный знак!
Рой Бениосеф — один из первых в мире GDE по Android, GDG-организатор, сотрудник особого подразделения Samsung NEXT. Вскоре он приедет к нам конференцию Mobius, и мы расспросили его обо всём: от того, каково было разрабатывать под Android на заре становления экосистемы, до того, чем именно занимаются в NEXT.
— Вы называете себя «первым GDE по Android»…
— Это такая шутка, официально меня так не называют — просто я не смог найти ни одного Google Developer Expert по Android до меня. Всё началось с того, что я был другом Amir Chevat — сейчас он главный евангелист в Twitch. Он был инициатором программы GDE, дело происходило в Тель-Авиве. Тогда, в 2011–2012 годах, я довольно активно участвовал в местном Android-сообществе, поэтому нет ничего удивительного в том, что, среди прочих, он выбрал и меня. Программа тогда была значительно менее структурирована. Иногда я в шутку говорю, что стал GDE потому, что в то время они ещё не заморачивались с отбором.
— То есть не было стандартизированных процедур?
— Нет, программа была ещё очень незрелой: меня просто пригласил мой друг, и я согласился.
— Чем вы занимались в то время? Делали доклады и писали статьи про Android?
— В основном я делал публичные выступления. И я был сооснователем и организатором группы GDG с упором на мобильные приложения. Я делал много докладов для MobileMonday и для GDG, мы также организовали DevFest. Всё это было году в 2011-м, точно не помню. Кроме того, мы писали опенсорсный код, писали в блогах, но основным нашим занятием были публичные выступления.
— Android тогда не было ещё трёх лет. Что было самыми популярными темами в то время? Какие проблемы были самыми сложными?
— В общем-то то же, что и сегодня — обеспечение качественного user experience, проблемы с производительностью, графика. Сделать так, чтобы приложение под Android выглядело стильно и работало гладко, тяжело даже сейчас, а тогда было ещё труднее. Если говорить о том, в чём самые существенные улучшения, произошедшие с тех пор — думаю, они связаны именно с этими трудностями, то есть это реструктуризация, произошедшая в связи с Marshmallow, появление новых инструментов, ConstraintLayout. Появилась возможность писать классные приложения, при этом не создавая всё с нуля, и это было очень важно.
— То есть самое ощутимое изменение в том, что появилась база для приложений, необходимые инструменты для UI и фреймворки для UI вроде Material Design?
— Наверное, да. Вообще говоря, всё это существовало с самого начала, но работать было очень сложно. Кроме того, Android всегда сравнивают с iOS, и там всегда можно было сравнительно легко создавать очень красивые приложения, при этом почти не имея опыта. А для того, чтобы создать качественное приложение для Android, нужно потратить много времени, чтобы стать экспертом. Сейчас это стало проще.
— А почему вы изначально выбрали Android? Раз с iOS было проще, можно было пойти туда или вообще не в мобильную разработку.
— Мобильными приложениями я начал заниматься потому, что это была совершенно новая сфера, мне было интересно туда попасть — примерно тогда происходил отход от телефонов-«звонилок». Кроме того, от iOS веяло спесивой корпорацией, а Android — это, считай, Linux. iOS, конечно, тоже Unix-подобная, но Android значительно ближе к Linux. А я — опенсорсный разработчик, на ноутбуке у меня стоит Ubuntu, так что Android мне был ближе, мне хотелось помочь ему достичь зрелости. И моё знание Linux помогло на ранних этапах разработки под Android — когда что-либо не работало, я всегда мог перейти на уровень Linux и самостоятельно решить проблему там.
— Правда? Когда я начинал работать под Android (это была версия 1.6), чтобы начать работать, нужно было установить Android SDK, IntelliJ IDEA и дальше просто читать мануал и кодить. Какие именно проблемы вы решали через Linux?
— Самые разные. Например, когда до появления NDK у нас возникали проблемы с графикой, я писал некоторые части под OpenGL, потому что хорошо в этом разбирался. Мне удавалось решить проблемы с некоторыми устройствами, которые возникали на уровне драйверов. Понимание того, как устроена система, позволяло многое хакать.
— То есть у вас много низкоуровневой работы?
— В то время её было много. Я специализируюсь на нестандартных платформах под Android — я руководил созданием систем для платформ, которые были установлены не на стандартных телефонах. До Samsung NEXT TLV я работал в компании Vidmind, там я руководил client group и, помимо прочего, мы там создали собственный проект для Smart TV и STB вместе с Hisense на основе Android. Так что в мои обязанности входила разработка начиная с уровня Linux и выше.
— Получается, ваш опыт облегчил вам разработку на Android. Давайте теперь поговорим о вашей работе с GDG в Израиле и конкретно в Тель-Авиве. Что вы можете рассказать нам о сообществе там? Многочисленное ли оно, чем занимается?
— Сейчас в GDG в Израиле значительно меньше активности. Большая часть наиболее талантливых разработчиков здесь занимаются облачными технологиями, искусственным интеллектом, блокчейнами. Но есть одно очень крупное, активное и успешное сообщество, занимающееся мобильной разработкой — Android Academy. Академия была основана Йонатаном Левином вместе с другими партнёрами.
— Наши читатели хорошо знают Йонатана, потому что он много выступал с докладами на прошлых конференциях Mobius. А как вы связаны с ним и с Android Academy? Вы помогаете им?
— По мере сил. Сейчас мы разрабатываем серию докладов и семинаров, которые я буду проводить в следующем году в рамках продвинутых курсов в Android Academy. У меня с ними давняя дружба, и я стараюсь помогать им, чем могу — например, я вёл хакатоны, а благодаря тому, что я работаю в Samsung NEXT, их несколько раз проводили в офисах этого подразделения.
— Чему будут посвящены ваши семинары в Android Academy?
— Мы пока не решили. Как правило, я преподаю то, в чём хорошо разбираюсь сам. Обычно это наиболее скучные и технические вопросы, чаще всего низкоуровневые — кибербезопасность, базы данных в Android, правильное кэширование информации, правильное использование GPU и так далее.
— Расскажите, пожалуйста, что именно из себя представляет Android Academy? У нас её организовывали несколько раз в Санкт-Петербурге, и я не знаю, есть ли она в Москве, так что, наверное, нашим читателям было бы интересно узнать, какой у неё формат, проводятся ли там курсы, встречи или что-либо ещё?
— Йонатан значительно больше занимается Android Academy, чем я, так что мне рассказывать об этом несколько непривычно. Но в общем и целом — это очень активное, открытое и дружное сообщество. Они проводят курсы наподобие Udacity, некоторые из них начального уровня, другие посвящены более продвинутым сферам, например, многопоточность, графика, анимация. Эти курсы бесплатные, и они открыты для всех.
— Вы бы рекомендовали посещать курсы Android Academy в России?
— Если она аналогична израильской — да, безусловно.
— Насколько я знаю, Йонатан пытается экспортировать израильскую модель, то есть сделать российскую настолько похожей на израильскую, насколько возможно. Давайте перейдём теперь к вашей работе. Все знают, что такое Samsung — огромная корпорация, занимающаяся всем на свете, от строительства до смартфонов. А что представляет из себя Samsung NEXT и какова ваша роль там?
— Samsung NEXT — отдел Samsung, заведующий инновациями. Мы не полностью интегрированы в Samsung Electronics и специализируемся на программном обеспечении. У нас есть товарное подразделение, которое создаёт передовой софт в области граничных вычислений (edge computing), дополненной реальности, искусственного интеллекта.
Но 90% того, чем мы занимаемся здесь, в Израиле — это венчурные инвестиции, а я выполняю обязанности главы нашего фонда (хоть им и не являюсь). Мы вкладываемся в стартапы на стадиях от pre-seed до B, на суммы до 3 миллионов долларов. Мы оцениваем их на основе финансовых инвестиций, то есть мы не стратегические инвесторы, этим занимается другое подразделение, Samsung Ventures, и они прекрасно делают свою работу. У нас другая стратегия, мы делаем инвестиции на более ранних стадиях и вкладываемся только в софт. Кроме того, инвестируем на основе финансовых критериев, но при этом мы вкладываемся в те стартапы, которые могут иметь стратегическое значение в течение следующих 2–10 лет, даже если у Samsung в этой области ещё нет продукта.
Например, мы инвестировали в стартап под названием StreamElements, они предоставляют стримерам инструменты для набора, роста и монетизации аудитории. У Samsung в этой области продуктов нет, так что стратегической эту инвестицию назвать нельзя. Кроме того, стратегический инвестор никогда не стал бы вкладывать деньги в стартапы на стадиях pre-seed. Мы же решили вложиться, поскольку мы видели, как этот стартап монетизируется. Но при этом нельзя исключать, что в будущем Samsung окажется вовлечён в область компьютерных игр, и если это произойдёт, то компания StreamElements будет иметь большое стратегическое значение.
Помимо этого, в Израиле моя должность — менеджер по связям с экосистемой. На самом деле, название должности я придумал сам, взял его с потолка. Под связями с экосистемой обычно подразумеваются, например, мероприятия, которые Google проводит с целью лучше познакомить сообщество со своими продуктами. А менеджмент сообщества — это когда у вас есть своё сообщество, в котором вы организуете свои мероприятия. Я вроде как не занимаюсь ни тем, ни другим, но при этом делаю немного и того, и другого. Я — евангелист для технологий, которые сам я не создавал, потому что Samsung NEXT сам ничего не разрабатывает, это венчурная компания. Мы делаем свою работу бесплатно и не накладывая никаких обязательств, просто потому, что хотим помочь людям — в этом мы видим наше предназначение. Своего сообщества у нас нет, мы вступаем в партнёрство с другими сообществами и помогаем им. Делаем мы это, во-первых, потому что мы хорошие люди, а во-вторых, потому, что чем больше пирог (то есть сообщество), тем больше кусков достанется всем, в том числе и нам. Таким образом, в конечном итоге мы также получим выгоду от этого, то есть, в сущности, с нашей стороны это спонсорство.
— Давайте поговорим о тех стартапах, в которые вы вкладываетесь. Вы оцениваете только их замысел, их софт или, помимо этого, вы также проводите техническую оценку архитектуры, процессов и так далее?
— По-разному, в зависимости от того, на какой стадии находится стартап. Стартап — это не замысел. Есть прекрасные идеи с жуткой реализацией и наоборот. Я по большему счету заведую технической частью проверок, но мы также смотрим на организацию бизнеса. Всё никогда не сводится только к идее, смотрим и на неё, и на реализацию.
— Что самое интересное в такой работе? Встречи с новыми людьми, знакомство с новыми идеями, возможность увидеть технологии будущего?
— Да, мне нравится поиск новых людей — обычно это очень умные и увлечённые люди со замечательными идеями. Но самое ценное — это возможность вникнуть в новые технологии, на которые раньше у меня не было времени. Когда я занимался управлением команды из 45 разработчиков из Сербии, Украины, Китая и Израиля, у меня не оставалось времени на то, чтобы экспериментировать с Firebase, машинным обучением или компьютерным зрением. Всё, что я делал, было ориентировано на очень краткосрочную перспективу. А теперь я могу позволить себе углубиться в новые технологии благодаря тому, что их исследуют те компании, которыми мы занимаемся — эти знания мне нужны, чтобы правильно оценить те проекты, с которыми мы знакомимся.
— То есть раньше вы занимались организацией разработки, а теперь делаете нечто более инновационное, и у вас есть время изучить горизонт новых технологий. Звучит действительно интересно. Есть ли у этой работы какие-то недостатки?
— Конечно — я сам непосредственно ничего не создаю, а только оцениваю, может ли кто-то другой сделать то, что планирует, и иногда предоставляю деньги и помощь. Здесь совершенно другие ощущения, другая отдача от работы. Мне очень нравится сам процесс созидания, и конкретно этого чувства здесь нет. В этом недостаток.
— А есть ли у вас какой-либо проект, которым вы занимаетесь в свободное время?
— Да, конечно. Нельзя экспериментировать с новыми технологиями, при этом не собирая ничего самому. Есть проект, над которым я работаю уже какое-то время.
— Можете нам что-нибудь о нём рассказать?
— Как я уже говорил, я хотел поэкспериментировать с компьютерным зрением и машинным обучением. Я написал небольшое приложение под Android, которое связывается с Firebase и использует TensorFlow на самом устройстве и в Firebase. Это приложение я установил на старый телефон и положил его у себя в столовой. Он проверял наличие людей в комнате и, если кого-либо обнаруживал, снимал видео. А надо сказать, что моя жена никогда не выключает свет. Поэтому цель приложения заключалась в том, чтобы предсказать, выключит ли человек свет, выходя из комнаты, и, если не выключит, отправить напоминание на телефон.
Самое забавное, что через несколько недель это начало работать — забавно потому, что приложение, в общем-то, не слишком умное. Оно просто отправляло напоминание каждый раз, когда в комнате была моя жена, поскольку она никогда не выключает свет, а я всегда его выключаю. То есть оно было не очень умное, но было забавно, что оно могло нас отличить, то есть оно создало собственную логику, которую я не писал.
— Да, звучит очень круто. Решение домашних проблем при помощи новых технологий.
— На самом деле, я хотел посмотреть, смогу ли я действительно написать что-либо с этой технологией, а не просто прочитать статью и подумать про себя, что, наверное, это реализуемо.
— Скажите, какое событие в вашей профессиональной жизни принесло вам больше всего удовлетворения?
— Тут много о чём можно говорить. Думаю, самой большой честью для меня было участие в Google I/O в качестве докладчика два года тому назад. Я также очень рад тому, что из года в год подтверждается моё членство в программе GDE. Так что в моей карьере есть много моментов, из-за которых я считаю себя счастливчиком. Мой пример доказывает, что можно совершить все вообразимые ошибки, и, тем не менее, быть успешным. Меня исключили из двух университетов, когда я начинал работать на Android. Android тогда был медленной системой с массой сбоев, при этом именно в то время начинался бум на iOS. Кроме того, стартап, в который я пришёл, потратил 30 миллионов и обанкротился. Неудача следовала за неудачей, и тем не менее, я чувствую себя успешным, потому что все эти события позволили мне вырасти.
— Я считаю, что нельзя прийти к успеху, не совершив ошибок. А если ошибки крупные, на них можно очень многому научиться. Мой следующий вопрос о вашем предстоящем докладе на Mobius «G (PU) force». О чём именно вы хотите рассказать? Какую проблему хотите решить?
— Если вы занимаетесь разработкой под OpenGL, например, пишете игры, то у вас есть определённое представление о том, как использовать GPU и что делать, если она ведёт себя не так, как надо. Если же вы пишете под Android, то, когда ваш код капризничает, вы не знаете, происходит ли это из-за вашей ошибки, из-за проблем с процессором или из-за того, что вы неправильно пользуетесь GPU. В основе доклада лежат реальные кейсы из опыта компании, в которой я раньше работал — Vidmind, а также несколько кейсов, которые я специально наблюдал, чтобы увидеть, поменялось ли что-либо за последние три года. У нас постоянно происходили самые невероятные сбои, и мы не могли понять, из-за чего. Лишь значительно позже я понял, что мы неправильно использовали GPU. В докладе я также объясню, как эти ошибки исправить, и предложу правила, которыми Android-разработчики могли бы пользоваться, чтобы этих проблем избежать.
Конечно, с новыми инструментами, на новых устройствах и новых операционных системах работать становится проще. Но большинство разработчиков не имеют возможности создавать программы исключительно для новейших устройств, поэтому есть тенденция писать приложения, которые очень плохо работают на всех устройствах. Большая часть этих сложностей связана с реализацией GPU. Если у вас есть представление того, что Android ожидает от вас на различных уровнях API, вы можете написать приложение, которое будет красиво работать независимо от того, где его разворачивают.
— То есть ваша мысль в том, что профессиональному Android-разработчику важно знать, как работает GPU, чего GPU от него ожидает.
— Да. Конечно, после этого доклада вы не сможете сказать: «Теперь я умею что-то, чего раньше не умел». Я показываю примеры того, как GPU интегрирован в экосистему Android. Зная, что именно необходимо тестировать, вы можете создать приложение, которое всегда будет красиво работать, и я хочу это продемонстрировать.
— Надеюсь, это будет очень полезно нашим читателям. Под конец я хотел бы спросить — что бы вы пожелали посетителям конференции?
— Я пожелал бы узнать много нового о технологиях и друг о друге. Лично я, как правило, очень мало чего выношу из докладов — в чём, конечно, очень много иронии, поскольку моя карьера, в общем-то, построена на публичных выступлениях. Но для меня посещение докладов всегда было скорее источником вдохновения. Я записываю несколько ключевых фраз, а потом самостоятельно пытаюсь собрать что-нибудь, чтобы понять, правильно ли я понял докладчика. Поэтому я считаю, что конференции — это важный источник вдохновения, а также место, где можно познакомиться и пообщаться с другими разработчиками. Где можно получить некоторую новую перспективу, способную помочь человеку написать то, что лучше всего подойдёт именно его практике.
Описание доклада Роя можно прочитать на сайте Mobius, и там же есть описания остальных докладов программы. Конференция пройдёт в Москве 8–9 декабря.