Интервью с Senior Android Developer Spotify Славой Савицким
Делимся с вами записью и расшифровкой эфира.
Меня зовут Слава Савицкий. Я сегодня буду рассказывать о жизни и работе в Швеции, о Spotify, как устроиться работать, про Spotify Lite, анализ перфоманса Android-приложений. Постараюсь охватить все, что было в анонсе. Не могу отвечать на вопросы о будущем и планах Spotify и разных числах, которые не были опубликованы в публичных документах.
Я из города Саров Нижегородской области. Федеральный ядерный центр, 100 тысяч населения. Как ни странно, в Spotify есть еще один сотрудник из Сарова.
Я закончил мехмат МГУ в 2009 году, с 2006 работал в Институте системного программирования по контракту с компанией Klocwork, канадской; занимался статическим анализом для поиска дефектов. Статический анализ исходного кода – я, по сути, писал компиляторы, которые на выходе давали не объектный код, а сообщения о потенциальных ошибках.
В 2013 году я переехал в Швецию, в Стокгольм, работать в компании Blackberry. Это была моя первая работа с мобильными устройствами. Я писал для системы Blackberry X приложения для работы с мультимедиа – story maker, video editor. Потом я работал в компании Sinch, которая занималась VoIP, SDK для мобильных приложений. После этого работал в одном банке, переписывал социальное приложение для инвесторов. Последние 2.5 года я работаю в компании Spotify, тоже с мобильными приложениями.
Жизнь в Швеции: налоги, доверие к государству, анти-выгорание и офисы IT-компаний
В Швецию я переехал в 2013 году, до всяких сложных историй с большим количеством мигрантов, приезжающих в Швецию. Переехать, устроиться на работу, получить документы на себя и на жену было довольно просто. Компания Blackberry перевезла нам все вещи, сделала все документы. При наличии рабочего опыта устроиться в компанию и переехать было достаточно просто.
Что все знают о Швеции? Фотографии с автобусных остановок, где все стоят на расстоянии 1 метр друг о друга и спокойно ждут автобуса. Страна для спокойных людей. Здесь редко что происходит, глобальных новостей, как в России, не бывает.
Еще все вспоминают высокий скандинавский уровень счастья и спокойствия; здесь все размеренно, спокойно, не очень много стрессов. Конечно, стресс себе найти можно: устроиться на работу, выгореть там… Большое внимание уделяется балансу семьи, работы, отпуска. Вполне нормально летом, когда хорошая погода, пойти купаться с работы в 15 часов. Приоритет сдвинут в сторону семьи.
Еще тут есть декрет для отцов; он необязателен, но, если эти дни не брать, то они сгорают. Декреты выдает государственная служба социального страхования на некоторое количество дней, которое делится между отцом и матерью, часть оплачивается по высокой ставке, а часть – по низкой. Ставка – до 80% зарплаты; с этого еще платятся налоги, и существует верхняя граница. Для Стокгольма 5 лет назад (тогда я ходил в декрет) это было 33 тысячи крон – то есть, не очень много. Для программистов это обычно меньше половины зарплаты, но, все же, существенная поддержка. Если бы я работал в Спотифае на тот момент, то Спотифай доплатил бы до 100% зарплаты. Причем Спотифай делает это не только в Швеции, но и в США, что вообще немыслимо.
Вам дают эти дни, вы можете не работать, когда у вас появляется ребенок; у вас две недели отпуска, чтобы с ним познакомиться. В общем, здесь очень спокойное отношение к тому, когда вы занимаетесь своей семьей, а не работой. Многие мигранты совершают эту ошибку: в первый день на работе сидят до 11 часов вечера, пытаясь в чем-то разобраться, а на следующий день к ним приходит менеджер, в ужасе: зачем? Почему ты так? Давай мы тебе поможем! Все сейчас сделаем, все объясним, не надо так работать!
Наверно, все слышали про понятие «лагом» — «ни много, ни мало, столько, сколько нужно». Это такой принцип шведской жизни, наряду с другим принципом, который, наверно, на все скандинавские страны распространяется: «хюгге» — это когда вы устраиваете себе спокойный отдых дома. То есть, вы находитесь дома, вы устраиваете себе ванну, вы хорошо покушали – в таком плане.
Не могу сказать, что здесь все интроверты, но для меня, как для интроверта, это прекрасная страна в плане темпа жизни. Конечно, это не для всех; здесь у власти очень много лет подряд были социал-демократы, и общество во многом построено на принципе уравнивания доходов. Это хорошо, если вы во время пандемии оказались низкооплачиваемым сотрудником – тогда государство вам будет доплачивать, и вы уже будете не таким низкооплачиваемым. Но для получения сверхдоходов это, конечно, плохо. Если вы хотите получать большие доходы в бизнесе, для этого Америка подходит больше.
Часто спрашивают, можно ли жить в Швеции только с английским. Можно, за исключением крайних случаев – например, если вам придется выступать в суде, то вам также придется нанять мою жену как переводчика. Конечно, для интеграции в общество придется в какой-то момент выучить шведский – чтобы читать новости, общаться с сотрудниками не только в рабочем режиме; это полезно.
Про погоду – сейчас зима, зимой в Швеции очень темно, очень долго. Зима не всегда снежная; в этом году снег выпал под Рождество. Не очень холодно, примерно -3. Так не всегда. Конечно, Швеция очень вытянута с юга на север, и на севере гораздо холоднее и снежнее, чем в стокгольмском регионе. Здесь бывают такие зимы, когда я хожу в осенней одежде. Сезоны выражены не очень, весна и осень обычно длятся по две недели. Все остальное – зима и длинное лето. Летом очень светло, не очень жарко, много вариантов выбраться на природу. Люди живут очень близко к природе; даже если вы работаете в офисе в центре Стокгольма, всегда рядом есть парк, есть вода. Я видел, как люди летом выходят из офиса и идут купаться, потом идут обратно в офис. Прямо во время обеденного перерыва.
Здесь есть такой закон – можно в любом месте, не обозначенном как частная территория (PRIVAT), поставить палатку. На любом поле; тут нет особенной охраняемой зоны около воды. Конечно, есть некоторые ограничения: надо находиться не ближе 100 метров от жилья, например, и за собой убирать, заботиться о природе. Но этот тип отдыха очень популярен, особенно в этом году, когда никуда особо не полететь.
Здесь очень высокое доверие к государству; это коррелирует с тем, что люди обычно чувствуют себя счастливыми. Государство во многом если и не заботится, то, по крайней мере, информирует вас о разных проблемах, возможностях борьбы с выгоранием, трудоустройства и так далее. То, как информировали о пандемии в Швеции, не сравнится с тем потоком противоречивой информации, который был в России.
Здесь было очень четко, здесь не было локдауна. Были свои проблемы, конечно; пандемия продолжается. Так как есть доверие к государству, многие просто выполняют государственные рекомендации – потому что попросили. Долгое время не было закона об экстренных полномочиях по поводу борьбы с пандемией; у парламента просто не было возможности издать какой-то закон, чтобы срочно закрыли все кафе. Были только рекомендации – «пожалуйста, не собирайтесь больше 6 человек». Запреты на собрания более 50 человек были, но не было такого, чтобы всех заставлять носить маски, например. И этот подход виден во многом. В пользовании природой, в подходе к пенсиям. У всего населения очень высокая финансовая грамотность, все вкладывают в пенсию, все инвестируют; у всех есть понимание того, в каком состоянии сейчас фондовый рынок, экономика, сколько они переплачивают за ипотеку. Все это на высоком уровне, и многое из этого разъясняется государством.
Здесь много IT-компаний с офисами по всему миру, многие из них были основаны в Швеции – хотя бы Ikea, Spotify. Может быть, кто-то слышал про Klarna – это компания, которая предоставляет электронные платежи. У них очень много хороших IT-практик, они несут информацию в массы, их часто можно увидеть в IT-блогах, технических дискуссиях и форумах. IT-шнику здесь довольно легко найти работу.
Налоги большие, хотя и не самые высокие в Европе; с зарплаты вы платите около 30%, но больше ничего не платите. Здесь довольно прозрачная система: можно посмотреть, почему именно 30% (это зависит от региона и даже района). Если компания с вами рассчитывается акциями, то за опционы вы можете заплатить в два раза больше: 30 за конвертацию опционов в акции и 30 подоходного налога.
Я никогда не замечал, чтобы все шведы были нелюдимыми, плохо шли на контакт и плохо дружили. У меня есть хорошие друзья, и шведы, и другие. Может быть, в IT люди более открытые.
О работе в Spotify
Spotify в этом году, в июле, запустился в России – была очень агрессивная маркетинговая кампания. Я в запуске принимал непосредственное участие, нажимал некоторые кнопки, делал тестирование Android-приложения.
Spotify – это стриминговая платформа, которая позволяет слушать аудио из Интернета, ничего не скачивая предварительно на телефон. В России это в основном музыка. По миру бывают также подкасты, аудиошоу, аудиокниги, театральные пьесы (как раньше было по радио). Миссия Spotify – «открыть креативный потенциал артистов, позволить миллионам артистов жить на доходы от их творчества, позволить миллиардам фанов слушать и быть вдохновленными артистами».
Spotify как компания занимает в Швеции первое место в рейтинге самых привлекательных работодателей. В прошлом году она обогнала Google; на третьем месте – Ikea.
Вопрос: как обстановка с мигрантами с Ближнего востока?
Очень много было мигрантов в 2014-15 годах, за счет беженцев из Сирии. Швеция объявила, что будет принимать достаточно много беженцев, больше, чем положено по квоте ЕС. Лично у меня было много проблем с продлением документов, потому что вся миграционная служба была занята обработкой документов приезжающих беженцев (в основном). Я ждал разрешения на продление моего пермита на работу (он у меня был, но, если бы я выехал из страны, то не смог бы вернуться из-за истекшего срока действия). В плане интеграции в общество – как везде; есть хорошие и плохие примеры, есть гетто и бандитизм. Но я думаю, что, в целом, у нас в этом плане не хуже, чем везде.
В команде Spotify Lite я – старший разработчик, занимаюсь Android-приложением. Я не product-менеджер, поэтому многие вещи, которые в Spotify происходят, для меня непонятны. Бывает так, что приглашают на интервью менеджера какого-нибудь большого продукта, и он рассказывает, что где происходит и что как работает, но я могу рассказывать только с точки зрения инженера. Как инженер, я знаю, что поменять, чтобы что-то заработало.
Старший разработчик – это тот, кто знает, что ответ на главный вопрос Вселенной – не «42», а «it depends». То есть, «все зависит…». И надо знать, от чего зависит, почему зависит, и как сделать так, чтобы работало.
Я уже два года старший инженер, руковожу командой – не в том смысле, что люди мне подчиняются, но я ответственен за delivery. То есть, мы пишем какой-то план на квартал, и я занимаюсь претворением этого плана в жизнь и процентами его готовности.
Еще я – техлид команды; знаю, что где происходит, кого надо пнуть, чтобы что-то случилось в компании.
Про культуру и модель Spotify
Модель Spotify – это вот те видео пятилетней давности, которые есть в YouTube. Их делал специальный консультант, Henrik Kniberg – он создал эту модель, написал про нее книгу; у него еще несколько книг есть. Часто меня просят рассказать про эту самую модель Spotify, однако эта модель – уже дела давно минувших дней.
Spotify с тех пор сильно вырос. Многие принципы из тех, что там описаны, все еще соблюдаются: мы все еще работаем в автономных командах, например. В команде Spotify Lite есть представители всех направлений, которые позволяют нам решать любую задачу автономно. Например, нам предложили внедрить какую-нибудь фичу в приложение. Для этого у нас есть дизайнер, есть продукт-менеджер, есть инженеры, которые это запрограммируют, менеджер, который организует процессы.
Есть и user insights – люди, которые отвечают за то, чтобы поговорить с настоящими пользователями перед тем, как начинать что-то делать, показать им какой-то предварительный продукт; фокус-группа выскажет свое мнение, и задача user insights – составить вопросы так, чтобы они дали какую-то информацию о том, что мы будем делать и как. Грубо говоря, какого цвета лучше делать кнопки. Конечно, это мы и без пользователя можем выяснить; вопросы задаются обычно более пространные.
Про культуру Spotify можно очень многое прочитать на портале рекрутинга Spotify. У нас есть некоторые ценности, «values», их 5.
Когда вы работаете в Spotify, вся ваша работа – даже вступительное интервью – будет меряться относительно этих ценностей. Подходите ли вы нам или нет, делаете ли вы прогресс, пока вы развиваетесь в компании. Я могу их перечислить.
- Innovative – инновация. Мы двигаемся быстро, принимаем риски, представляем новые идеи.
- Sincere – открытость, честность. У нас нет времени на внутреннюю политику.
- Passionate – мы целеустремленно занимаемся тем, что мы любим, мы верим в то, что мы делаем.
- Collaborative – мы работаем вместе, сообща, для достижения общей цели.
- Playful – мы не слишком серьезно к себе относимся, мы имеем возможность и смеяться на работе, и прикалываться, и получать поддержку от коллег.
Как и в любой большой компании, типа Amazon, эти ценности определяют нашу работу. Мы в них верим, мы соотносим эти ценности с тем, что и как мы делаем. Если вы хотите устроиться в Spotify, то вам надо эти ценности прочитать, понять, как они накладываются на вашу жизнь и работу, и потом уже идти в Spotify, если они вас устраивают.
Вопрос: почему от модели Spotify отказались?
От нее не отказались, просто Spotify быстро растет и меняется. Все процессы и модели, которые у нас есть, подстраиваются под необходимости работы. Не было такого, что мы сели и написали модель, а потом отказались от нее. Мы модель развивали и пришли к тому, что есть сейчас.
У нас есть автономные команды. В большой компании самая большая проблема – это коммуникации между отдельными людьми, которые хотят что-то сделать вместе. У нас несколько тысяч сотрудников – это гораздо сложнее, чем когда у вас сто сотрудников, например, и вы всех знаете в лицо.
И мы придумываем разные инструменты, чтобы общаться друг с другом, координировать действия, даже знать о том, что где-то кто-то делает что-то похожее на то, что делаешь ты. Инструменты есть разные.
Начинается все с руководителей компании; раз в квартал они подробно рассказывают, где мы находимся, что мы делаем, какие у нас планы, над какими проектами работают отдельные отделы. Для связи между командами есть несколько уровней команд архитекторов; они собирают разные идеи, смотрят, как это происходит в разных отделах. У нас есть самый верхний уровень этой команды, и есть уровень пониже, который объединяет разные команды и который общается с верхним.
Когда вам нужно сделать изменение в системе, вы его описываете в документе RFC (request for comment) и посылаете заинтересованным командам, в том числе вашей локальной группе, которая потом тоже показывает RFC заинтересованным людям. Вы собираете комментарии на ваш документ: что за изменение, кого оно затронет, кто должен это делать, надо ли это делать.
По дисциплинам – то есть, есть инженеры мобильной разработки, есть бэкенд-разработчики, есть контент-разработчики – у нас организуются гильдии. Они встречаются, например, раз в 2 недели, и обсуждают вопросы, связанные с их специальностью. Новые технологии, что в Spotify поменялось касаемо языка, обсуждения новых документов и так далее.
Вопрос: спользуется ли DI в Spotify? Можете перечислить, какие технологии присутствуют в Spotify для Android, отвечаете ли вы за приложения для Android TV или только Mobile?
Dependency Injection, конечно, используется. Сложно сказать, в каких видах программирования это не используется. Мы используем фреймворк Dagger.
Какие технологии присутствуют для Android – их много разных; например, Clean Architecture – это методология разработки, которую можно по-разному имплементировать. У нас есть собственное представление и свои тулы, технологии для облегчения тестирования, все нормальные известные принципы – SOLID, например.
Spotify – очень продвинутая технологически компания, и мы стараемся набирать инженеров, которые уже это умеют и могут принести что-то новое, рассказать, как что-то можно сделать лучше.
Отвечаю ли я за приложение для Android TV – нет, это отдельная команда. Mobile – это, вообще-то, тоже отдельная тема. Моя команда – это Spotify Lite; наверно, это самая сконцентрированная команда над одним приложением.
У нас есть ещё другие приложения; есть приложение Stations, оно запущено в Штатах, в Австралии, еще в нескольких странах, и есть приложение Kids для детей. Там такая же ситуация, одна команда занимается одним приложением.
У нас невероятная концентрация Android-девелоперов в одной команде; нас сейчас 5 человек таких, и мы занимаемся всем, что касается конкретного приложения. Разработкой, дизайном, user research (что пользователи думают о новых вещах в приложении), тестированием (A/B-тесты – то есть, когда мы выпускаем какую-то функциональность, мы проверяем, в каком варианте ее стоит показывать пользователям). Соответственно, мы занимаемся всем процессом релиза приложения – то есть, мы сами промоутим наше приложение в релиз, чтобы оно попало к пользователю.
Вопрос: есть ли желание перебраться в другую страну, оставаясь в Spotify?
Нет, у меня здесь уже дети родились, поэтому мне было бы сложно переехать. Дети ходят в сад, пойдут в школу, учат шведский. Мне нормально в Швеции.
Вопрос: какие языки программирования вы используете в работе?
Android-разработчики используют Java и Kotlin. Вообще, языков в Spotify много. Если вы пишете под iOS, то у вас будет Objective C и Swift; если пишете backend – будет Java, если frontend – будет много чего, в основном JS. На плюсах много чего есть, на Python. Еще очень много на Scala всяких дата-пайплайнов. Spotify процессирует очень много данных, которые пользователи присылают: про то, что они делают в приложении, про то, как они слушают музыку.
Вопрос: что такое Spotify и почему стоит его послушать?
Spotify знает очень много про то, как люди слушают музыку. Основываясь на этом, он может предложить вам послушать что-то новое, что будет достаточно похоже на то, что вам нравится. У нас очень много людей занимается именно этим: как предлагать хорошие рекомендации.
Вернусь к культуре Spotify – к тому, как, исходя из наших ценностей, Spotify заботится о нашем ментальном здоровье. Например, мы уже год работаем из дома, с марта прошлого года все перешли на удаленную работу. Spotify нам выделил денег на стол и стул, и на еду, потому что мы теперь все покупаем сами – раньше мы могли получить еду в офисе.
Огромный упор был на то, что вам должно быть комфортно работать: мы понимаем, что вы работаете из дома, вы все время в одной комнате, вы перестали общаться с вашими сотрудниками – кроме тех, с которыми у вас назначены встречи. Разберитесь со своим психологическим состоянием, в первую очередь позаботьтесь о себе, потом о своих близких, потом уже организуйте свою работу. И у нас есть результаты – по-моему, Spotify уже публично хвастался, что продуктивность нашей работы во время пандемии не изменилась. Конечно, когда это все тянется уже год, то жить с этим гораздо сложнее – особенно тем, кому не нравится сидеть дома и разговаривать только с домашними. Но компания очень многое делает для того, чтобы достичь понимания. В том числе, Дэниэл Эк – глава компании Spotify – занимался доставкой первых тестов на коронавирус в Швецию.
Компания много делает для того, чтобы у вас были все возможности научиться эффективно делать свою работу, и не только. У нас верят в T-shapedness: это когда у вас есть область экспертизы (например, мобильное программирование – вы всё про него знаете), но также вы добираете вторичные навыки. Например, backend-системы в дополнение к вашему мобильному программированию. И у вас есть все возможности этому научиться на работе: у нас есть специальные курсы, и внутри Spotify есть команда, которая занимается тем, чтобы предоставлять курсы. Это когда вы на 2-3 дня ходите в классную комнату и учитесь программировать backend.
Преподаватели – наши сотрудники, они все покажут, расскажут, научат на примерах. И потом вы эти знания сможете применять во время работы в своей команде, сможете помогать вашему backend-инженеру с небольшими задачами. Вы можете набирать разнообразные умения, и при желании вы сможете полностью поменять работу, не покидая компанию. Можно полностью стать backend-инженером из мобильного инженера, можно вообще стать менеджером или продукт-менеджером. Простор очень большой. Компании выгодно, чтобы вы ее не покидали.
Еще у нас есть такая вещь, как embed – мы тут смеялись, когда в расшифровке другого интервью написали «indebt». Это когда вы внедряетесь в какую-то команду. Чаще всего это возникает тогда, когда нам нужно, чтобы команда для нас что-то сделала, и у нас какая-то зависимость на их сервис. Конечно, у них есть какие-то свои планы, и им обычно неудобно все бросать и делать прямо сейчас все для нас.
Но один человек из нашей команды может пойти к ним и помочь сделать то, что нужно нам прямо сейчас. И это необязательно какая-то мобильная разработка; это может быть backend, например. Например, я ходил embed-иться в команду, которая занимается embed-программированием: то есть, они пишут код Spotify, который внедряется во всякие встроенные девайсы – например, в колонки, вроде колонки Amazon. Я с ними работал 3 месяца, учился понимать, как это все работает. Они пишут на C встраиваемый код, очень оптимизированный, очень маленькие приложения, отлично. То есть, все эти возможности у нас есть.
Как проходит собеседование в Spotify
Расскажу про интервью – как попасть в Spotify, если вы решили, что Spotify вам очень нравится, и вы хотите работать в Швеции, или в Америке, или в любом другом из офисов, где у нас есть разработка, хотя это в основном в Швеции и Америке. Остальные офисы обычно занимаются маркетингом, правами на публикацию музыки и другими вещами.
Вопрос: как попасть на работу в Spotify? Что писать и не писать в резюме, как проходит собеседование?
Я не очень знаю, что писать в резюме. Обычно нас учат так: в резюме вы пишете одну страницу (расписывать много не надо): где вы работали, когда, какие у вас были главные достижения.
Главные достижения – это надо показать, что то, что вы делали, было очень важно для компании; вы что-то сделали, произошел эффект на выручку, вы – очень ценный сотрудник. Соответственно, надо указать, что ваши языки программирования, технологии, которые вы знаете, подходят под ту позицию, на которую вы подаетесь.
То есть, первый фильтр, который работает от подачи резюме до того, как с вами поговорит хоть какой-то рекрутер, отсеивает очень много людей. Естественно, надо постараться написать резюме так, чтобы оно подходило под ту позицию, на которую вы посылаете резюме. Когда меня набирали 3 года назад, я был один нанятый кандидат на 200 человек. 200 человек заслали резюме, прошли какие-то стадии отбора, и из 200 человек я один попал на работу. Сейчас ситуация еще хуже, потому что про Spotify знают больше, людей присылает резюме больше, отбор достаточно жесткий.
Как происходит процесс набора? Вы посылаете резюме, и, если вам достаточно повезло – рекрутер решил, что резюме подходит на позицию – то сначала с вами поговорит рекрутер; скорее всего, по телефону. Он будет выяснять простые вопросы: какую вы хотите зарплату, когда можете начать работать, надо ли вам переезжать (надо ли вас перевозить в страну).
Иногда бывает выбор, в какой стране работать, но обычно в позиции это уже написано. После этого разговора, если нас и вас все устраивает, вас приглашают на техскрининг. Это интервью на 1.5 часа. Вас просят рассказать о себе: с какими системами вы работали; нужно понять, каков ваш опыт в дизайне систем. Вот вас попросили какую-то фичу сделать — отвечаете от начала до конца: как вы ее распланировали, сделали, протестировали, выкатывали (это для мобильных приложений). Это на 10-15 минут, а потом вам будут задавать вопросы по области знаний – чтобы понять, что вы знаете, что не знаете.
Типичное: «Расскажите, что такое activity в Android». Хорошая завязка, все с этого начинают; потом можно еще много чего накопать с этого вопроса. Вам не надо отвечать на 100%, чтобы пройти: здесь просто понимают, что вы знаете и на какую позицию можете претендовать.
Потом – около 40 минут – вы будете писать какой-то код, чтобы показать, что вы умеете программировать, с подсказками решать какую-то задачу. Не требуется знать и уметь решать все задачи с leetcode до самого сложного уровня; вам просто дадут задачу, чтобы вы показали, что вы умеете программировать, логически мыслить, работать с другими людьми – потому что вам надо будет понять задачу, которую вам дали. Не просто прочитать и сразу же закодить ее молча. Нужно показать, что вы поняли задачу, задать дополнительные вопросы, спросить, какие есть ограничения на задачу.
Вам, скорее всего, скажут: «Вы должны самый лучший код написать, который вы писали в своей жизни. С тестами все прекрасно, покажите, что вы умеете».
И это называется техскрининг. Это интервью отвечает за то, чтобы понять, есть ли у вас шанс пройти onsite-интервью. Это и вам полезно, и компании. Если все хорошо, то вас приглашают в офис на onsite (хотя сейчас это происходит по видеосвязи, из-за пандемии). Проходит четыре интервью, каждое – по часу, с перерывом в середине на обед.
Первое интервью – value, про ценности Spotify: соответствуете ли вы ценностям компании, заинтересованы ли вы в ценностях компании. Это интервью проходит по модели STAR или CAB.
STAR – это «звезда»: модель, когда вы можете кому-то давать фидбек и спрашивать фидбек. Это расшифровывается как «situation, action, result»: исходная ситуация, какое вы предприняли в этой ситуации действие, какой получился результат. Вас будут спрашивать: например, «расскажите о ситуации, когда вы обвалили production на своей работе: что вы делали, какие уроки вынесли?» И вам нужно быть готовым отвечать на подобные вопросы. Надо иметь примеры из вашей работы по различным ситуациям, нужно уметь заворачивать их в модель STAR, уметь подгонять примеры под любые вопросы, которые вам задают. Их могут задавать по-разному – а вам надо делать, как в анекдоте про блоху.
Модель CAB – «competence, achievement, behavior». Компетенции, достижения, поведение. Тоже распространенная вещь, ее не изобрели в Spotify. Competence – это про то, что у вас была какая-то задача, вы сели с ней разбираться, долго старались, и у вас получилось. Achievement – это примерно то же самое. Вы показываете, что вы стараетесь, даже если у вас не выходит. Behavior – это про поведение. Как вы себя ведете в разных ситуациях, как реагируете, какие уроки извлекаете. Я не менеджер, поэтому мне сложно это оценивать; про STAR и CAB лучше еще почитать.
Второе интервью – алгоритмическое программирование. Вам дадут задачу, какой-то алгоритм (не очень сложный). Вам не надо знать ответ; нужно показать, как вы умеете программировать, как вы умеете выяснять постановку задания, задавать вопросы тем людям, которые проводят интервью. Нужно смочь написать алгоритм (с подсказками), возможно, улучшить его, и уметь рассказать про его алгоритмическую сложность. Возможно, вас спросят о том, какие бы вы еще тесты написали.
Третье интервью – программирование в IDE (это специфично для мобильных разработчиков). Вас попросят расшарить экран, запустить IDE – обычно Android Studio, но это на ваш выбор – и написать приложение за 40 минут по задаче, которую вам дадут. Как и раньше, вам нужно будет работать с вашим интервьюером, уточнять задание, точно знать, что вы делаете, что и как вас попросили. Вы должны продумать и написать тестирование и обработку ошибок.
Четвертое интервью – system design. Здесь надо задизайнить систему. Вас попросят реализовать какую-то известную фичу из приложения, но код вы писать не будете. Вам надо будет продумать, что будет включать в себя выполнение этого задания. Вы расскажете интервьюерам, какие могут быть подводные камни при реализации. Может быть, вы что-то попробуете набросать на бумаге, чтобы понять, как все работает. Если вы графический человек, можно будет построить диаграмму. Или можно просто рассказать, как будет работать приложение, как его нужно будет программировать, как можно будет обойти сложные части. Полное планирование одной задачи.
Это все четыре интервью. После них вам присылают оффер, вы соглашаетесь на него (или нет).
Что я хотел бы добавить по поводу интервью. Это уже большая удача, если ваше резюме посмотрели: то есть, вы хорошо написали его, оно подошло на позицию, и более сильных кандидатов не оказалось. Это достаточно большая удача, не используйте ее наугад.
Если вы решили, что хотите работать в Spotify, надо хорошо подготовиться к интервью, попроходить mock-интервью, пытаться проходить в другие компании (процесс интервью довольно стандартный). Не делайте так, что вы подались в Spotify, вас позвали, и это вообще ваше первое интервью – шансов на успех будет не очень много. Бывают разные случаи, конечно; мы не только старших инженеров набираем. Но джуниору тоже нужно показать, что он готов учиться и работать в этой компании. Он должен показать, что способен сделать лучше, чем другие начинающие программисты.
Сложно ли пройти интервью? Если вы хорошо подготовились – нет, не сложно. Сложно ли потом работать — зависит от того, какой вы человек и подходят ли вам ценности компании.
О Spotify Lite
Примерно 3 года назад, когда анализировали данные регистрации пользователей, заметили, что велик интерес пользователей в тех странах, на которые мы обычно не рассчитывали при разработке.
Приложения Spotify обычно разрабатываются с расчетом на Северную Америку, Европу, где у людей хорошие телефоны, связь быстрая и не обрывается. Поэтому приложение было не очень оптимизировано. Где-нибудь в Бразилии его было сложно скачать, а потом оно запускалось долго, съедало много трафика. Все это влияет на то, приятно ли пользователями, будут ли они пользоваться приложением и покупать подписку.
Задача Spotify Lite – решить эти проблемы, убрать барьеры, которые предотвращают использование приложения. Эти проблемы – медленные телефоны, плохая или дорогая связь. У пользователей может быть любое сочетание из этих трех признаков, поэтому мы занимаемся всем спектром перфоманса. У нас одна команда, много Android-разработчиков. Приложение уже существует 2 года, основные рынки – Бразилия, Аргентина, Мексика. Мы владеем этим приложением, занимаемся всем процессом релиза.
Если вы напишете в Lite Support – может быть, я сам вам отвечу; у нас нет отдельной суппорт-команды, у нас есть разработчики, которые занимаются приложением, и они иногда читают письма в Lite Support.
Мы ездили в Бразилию и Индонезию, проверяли приложение «на земле». Это очень большая разница по сравнению с офисом с хорошим интернетом. Конечно, у нас есть network profiler, чтобы моделировать «медленный» интернет, но это все же не похоже на настоящие условия. Например, на то, что происходит, когда ты в Бразилии спускаешься в метро: между станциями может не быть никакого покрытия. В стриминг-приложении, если ты едешь достаточно долго и следующая песня не успела кэшироваться, может произойти остановка. Это очень важно понимать, важно ставить себя на место пользователя – «empathy to the user».
Про перфоманс – как работать с перфомансом. На самом деле, это довольно просто и очевидно, когда вы садитесь и на это внимательно смотрите и анализируете. Когда говоришь программисту «performance optimization», у него в голове сразу слышится «premature» — то есть, «преждевременная оптимизация перфоманса»; это не без основания так.
Перфоманс – это ситуационная и субъективная вещь. Конечно, если приложение у пользователя крашится каждые 5 минут, то это уже не перфоманс, сначала надо починить падения.
Приложениям вроде Spotify важно быстро загружаться после включения, не слишком много отбирать памяти в телефоне, не очень много использовать трафика и быстро начинать проигрывание после нажатия кнопки. У другого приложения – банковского, новостного и так далее – другой контекст. Вам надо оптимизировать те метрики, которые важны для показателей вашего приложения.
Все просто: вы устанавливаете текущее базовое значение метрики, мониторите изменения, предпринимаете сфокусированные попытки улучшить базовое значение, потом тестируете влияние изменений на метрику. Про все это можно прочитать в статье, которую мы написали про Spotify Lite в блоге Engineering at Spotify; там мы немного рассказываем про то, что конкретно мы делали, чтобы, например, уменьшить размер Spotify Lite.
В каждой статье про перфоманс на Android обязательно бывает цитата из Google: «на каждые 6 Мб увеличения размера скачивания мы видим уменьшение install conversion rate (когда пользователь видит приложение и решает скачать его) на процент». Это – совершенно магическая цифра. Они нигде ее не подтверждают, и она совершенно разная в разных контекстах. Если, например, уменьшить приложение размером в 10 Мб на 6 Мб, это будет очень круто. А если оно было размером в 160 Мб, то мало кто это заметит.
Вопрос: почему нет Spotify Lite на iOS?
Не имеет смысла. Очень мало старых телефонов, все покупают новые.
Вопрос: где заканчивается зона ответственности команды? Вы сами паблишите, выкатываете, отвечаете за бету?
Да, как я уже рассказывал. Мы занимаемся всем процессом паблишинга приложения.
Вопрос: Internal / Closed Track Testing?
Да, и internal, и closed, и open – все есть.
Я не успел рассказать про тулы для профилирования скорости, но это все гуглится, когда нужно что-то конкретно улучшить. Вы идете на stack overflow, начинаете искать статьи, и все находится. Android Studio очень многое предлагает для анализа перфоманса; если надо копать глубже, то вы дальше смотрите, что использует Android Studio для того, чтобы предоставлять вам эту информацию, и копаете туда с другими параметрами.