«У iOS-приложения ВКонтакте достаточно высокий порог вхождения»: интервью с Алексеем Савиным
Приложение приложению рознь: есть такие, которыми пользуются время от времени, а есть такие, за которыми миллионы людей проводят много времени ежедневно, устанавливая их на новый смартфон первым делом.
Приложение «ВКонтакте» из вторых, поэтому интересно заглянуть внутрь и понять, кто над ним работает и как. Мы взяли у iOS-разработчика Алексея Савина небольшое интервью, спросив и об особенностях работы, и о жизни.
— Чем именно ты занимаешься?
— Последние три года я работаю iOS-разработчиком ВКонтакте. Занимаюсь задачами, связанными с мультимедиа: видео и онлайн-трансляции. Также работал над приложением BOOM — музыкальным плеером на базе ВК.
— А чем занимался до того, с чего начиналась твоя карьера в ИТ?
— Как и у многих, она начиналась с того, что на первом курсе я пытался немного фрилансить: верстал странички для интернет-магазинов. Потом мы с друзьями пробовали делать своё мобильное приложение. Оно называлось »9 мая». По сути, это была карта города, на которой отмечались точки, связанные с ВОВ, и можно было прочитать про каждую из них. Это был первый успех — приложение заметили, оно оказывалось во всяких тематических подборках.
Потом я постепенно перешёл работать полностью в аутсорс на мобильные приложения. А три года назад пришёл в ВК.
— А как пришёл конкретно к iOS-разработке — с покупкой iPhone?
— Тогда у меня ещё даже не было iPhone. Я был на втором курсе, это были времена iOS 6, я купил себе Mac, и захотелось попробовать. Это было модно, было на слуху, мне стало интересно, каково это — написать мобильное приложение, а так как появился Mac, выбор платформы напрашивался. Впрочем, Android я тоже попробовал примерно в это же время (в рамках университетского курса по Java). Но в сравнении iOS мне понравилась больше.
— Недавно мы расспрашивали iOS-разработчиков о эппловской презентации, тебя тоже спросим: какой сейчас телефон, и захотелось ли после презентации сменить?
— Сейчас iPhone X, переезжать на новый пока не планирую, обычно это делаю раз в два года. В следующем году, наверное, возьму следующий.
— А что думаешь про iOS 12?
— То, что релиз был про стабильность, безусловно, радует. После обновления чувствуется, что пропало большое количество каких-то раздражающих мелких багов. То есть решили взять перерыв на год, чтобы улучшить стабильность, и, кажется, получилось здорово.
— Переходя к теме приложения ВК:, а много ли у вас возникло работы в связи с выходом iOS 12?
— Как ни странно, в этой версии было всего несколько мелких багов. Чтобы поддержать iOS 12, не понадобилось основательно что-то менять. В прошлый раз было куда больше работы, там мы потратили не одну неделю.
— Приложения ВК хорошо известны, а вот кто их делает — куда менее известно. Скажи, какая у вас мобильная команда, сколько человек и как она устроена?
— Сейчас iOS-разработчиков 18 человек. Они состоят в разных продуктовых командах: есть команда, которая занимается медиа, есть команда мессенджера, есть инфраструктурная команда, которая реализует какие-то общие решения, используемые другими командами. В командах есть мобильные разработчики для обеих платформ (2–3 человека у каждой), есть бэкенд-разработчики — в общем, получается full stack, который полностью покрывает собственные задачи. Мы регулярно синхронизируемся в рамках платформы между командами, чтобы обмениваться новостями и знаниями.
— У вас гигантское количество пользователей, каким образом это влияет на разработку?
— Любая ситуация, которую ты считаешь маловероятной и не учитываешь, обязательно себя проявит, причём сразу на тысячах пользователей. Краши на десятки тысяч человек — поначалу это достаточно непривычно и страшновато.
— Откуда приходят идеи для фич, и что с идеей происходит от момента её одобрения до выхода в App Store? Каким образом происходит разработка этого всего?
— У каждой продуктовой команды есть ключевые показатели, на которые она ориентируется. Например, если брать прямые трансляции, то это количество создаваемых в месяц трансляций. При обсуждении фичи мы определяем, как она повлияет на значимые для нас метрики. Только после этого принимаем решение, будем ли мы её делать. Дальше процесс довольно стандартный. Мы заносим её в наш план на ближайшее свободное время. Если это какая-то крутая идея, и хочется её сделать побыстрее, можно что-то подвинуть. Дальше формируем документацию: что нужно по дизайну, что нужно по API. После этого начинаем делать.
— Насколько понимаю, у вас есть release train, можешь поподробнее рассказать?
— Приложение релизится каждые две недели. Каждая команда должна в начале недели сказать, что она планирует добавить в этот релиз. За пять дней до релиза — feature freeze, когда больше уже нельзя добавлять ничего нового, и если кто-то не успел залить свои изменения, то они в этот релиз не попадут.
— А как этот процесс выглядит технически, что с code review и CI?
— У нас есть код ревью, есть CI. И на каждый коммит у нас появляется сборка и распространяется внутри сотрудников Дома Зингера — всего их порядка 200 человек. Все сотрудники у нас уже привыкли пользоваться тестовыми сборками приложения. Идея заключается в том, что в сборки для сотрудников не должно попадать ничего не протестированного и не проверенного. Если что-то заливается в Dev, то разработчик предполагает, что фича полностью готова: она прошла тестирование, и сотрудники могут пользоваться, это нормальная стабильная версия.
Благодаря этому мы получаем реальный фидбэк от пользователей, которые в течение двух недель между release train пользуются этой сборкой чуть ли не круглосуточно. Таким образом, мы можем сформировать обратную связь.
— У вас нетипичное приложение (далеко не каждый разработчик занимается крупной соцсетью), причём существующее далеко не первый год. Можешь ли рассказать, сколько там строчек кода, и насколько сложно с ним работать?
— Сколько строчек кода, с ходу не скажу. Но то, что проекту много лет, сказывается: немало легаси-кода, есть места, в которых до сих пор осталось MRC. А ещё практически все решения самописные: внешних зависимостей практически нет. У приложения достаточно высокий порог вхождения, в том числе из-за этого.
— С таким порогом сколько времени занимает процесс онбординга для новых разработчиков?
— Все новые разработчики первоначально попадают в команду инфраструктуры, перед тем, как они присоединятся к одной из остальных команд. Можно здесь же и остаться. Там они проводят полтора-два месяца — наверное, это и есть «период адаптации», в рамках которого они знакомятся с приложением и делают какие-то небольшие задачи, которые не зааффектят что-то слишком сильно.
— Ты выступишь у нас на Mobius с докладом о видеотрансляциях на iOS. Расскажи про проект, благодаря которому возник доклад: откуда пришла идея, как это произошло?
— Проект — это то, что стало отдельным приложением VK Live. Идея пришла, когда я ещё в университете учился. Мы с друзьями тогда часто пытались делать какие-то демо-приложения, тестировать какие-то идеи, и периодически выбирали для этого модные темы. Как-то раз 1 января, после Нового года, мы подумали, что давненько мы ничего не делали, и надо бы выбрать тему. А тогда ВКонтакте проводил конкурс по мобильной разработке VK Challenge, в рамках этого конкурса был предложен ряд тем, и там были live-трансляции. Мы подумали, что ничего про них не знаем, поэтому будет интересно попробовать. В итоге за пару месяцев сделали прототип, и с этого начался VK Live.
— Очень интересная история: студенческое участие в конкурсе вылилось в то, что ты уже три года в ВК. А это единичный случай, или конкурсы систематически проводят? Есть ли у тех, кто только становится разработчиком, возможность повторить подобную историю успеха? А есть ли у вас, например, своя школа разработки?
— Различные мероприятия у нас проводятся систематически, в том числе хакатоны. Исторически проводилось много конкурсов и по дизайну, и по разработке, и я не единственный человек, попавший так в ВК. Школы разработки нет, но, например, недавно у нас проходили стажировки по машинному обучению. В дальнейшем мы планируем проводить подобные мероприятия чаще.
— Возвращаясь к VK Live:, а в чём разница с конкурентами типа Перископа? Почему пользователь должен пользоваться именно вашим приложением?
— Главная разница в социальном графе. Люди, которые создают трансляции у нас, будут иметь определённых зрителей: их друзей из ВК, с которыми они постоянно общаются. Этого графа у них нет на других площадках.
— А в каком направлении движется проект сейчас?
— В сторону увеличения интерактивности. Например, это возможность добавить в ходе трансляции опрос. То есть дополнительные способы взаимодействия со зрителями.
— Когда работаешь в таком масштабном проекте, как ВК, не давит ли большой объём работы?
— Проблемы не возникает. Люди, которые у нас работают, безумно любят то, что делают, чувствуют за это ответственность и получают от этого определённый кайф. В том числе и я. Я могу запросто просидеть в офисе всю ночь и попросту не заметить этого. В тоже время у нас вполне можно и соблюдать work-life balance.
— А что тебе нравится делать, помимо написания кода?
— Путешествовать.
— Какие наиболее запомнившиеся места посетил?
— Из последних — Перу. Мачу Пикчу — волшебное, очень красивое место. Необычно. Ещё очень понравился Гранд Каньон.
— Чем бы ты занимался, если бы не был iOS-разработчиком?
А: Я бы наверное, попробовал себя в машинном обучении — это то, что кажется интересным, перспективным и тем, что будет актуальным еще n-ное количество лет.
— Последний вопрос. По тому, что ты видишь, как стоит развиваться iOS-разработчику в текущих реалиях?
— Сейчас достаточно много разработчиков «заточены» под какие-то конкретные фреймворки. То есть в своей работе они использовали только крупные библиотеки от фейсбука/гугла, зачастую практически не касались нативных фреймворков, и не всегда понимают, как они работают. И мне кажется, в числе прочего важно попробовать более глубоко понять, как работают основные компоненты системы — например, тот же UIKit.
Если вас интересуют технические вопросы live-трансляций на iOS — о них Алексей подробно расскажет в Москве 8 декабря на конференции Mobius.