На чем написан спотифай
«Spotify: История продукта». Создание десктопного приложения
От десктопного приложения с серверами в шкафу до революционного формата потоковой передачи музыки.
«Spotify: История продукта» — серия статей от команды Spotify в России, где читатели vc.ru могут узнать, как создавался сервис, какие решения стояли за продуктовыми изменениями и кто придумал музыкальные стриминги такими, какими они выглядят сейчас.
В 2006 году Дэниэл Эк и его друг Мартин Лорентсон уже были состоявшимися ИТ-предпринимателями. Дэниэл основал компанию Advertigo, которая анализировала предпочтения пользователей и на основе этого показывала им рекламу, а Мартин владел одной из крупнейших компаний рекламной сферы в Европе — Tradedoubler. У обоих было время и капитал для инвестирования. Идея сервиса потоковой передачи музыки подходила обоим, тем более, на тот момент сервисам в этой области было куда расти с точки пользовательского опыта.
Легальная музыкальная индустрия в то время была не совсем «клиентоориентирована». Диски сами по себе были дорогие, а чтобы выбрать пластинку, приходилось идти в салон и слушать её в наушниках. Приобрести один трек было нельзя — только всю пластинку.
В ответ на неудобство отреагировали пираты. При этом с пользовательский опытом у их сервисов тоже все было не очень. Чтобы получить контент, пользователю требовалось установить специальное ПО, зайти на пиратский сайт, найти файл с песней и загрузить его. На всё это можно было потратить минут 20, чтобы затем неожиданно узнать, что трек загрузился с неправильным названием, в плохом качестве, а вместе с ним вы загрузили вирус.
Пиратство в то время уже «убивало» продажи компакт-дисков, но каким должен быть пользовательский опыт, чтобы человек не хотел больше возвращаться на пиратский сайт? Другими словами: как украсть у пирата? Этим вопросом задалась команда Spotify. Основатели решили: если продукт будет достаточно хорош, пользователи даже согласятся слушать рекламу. Так сервис сможет зарабатывать сам и позволит платить правообладателям.
Это первый урок, который мы вынесли: удобство важнее всего. Люди будут копировать песни, пока не появится что-то более простое. Как только это произойдет, они переключатся.
Чтобы песни играли мгновенно, Spotify пришлось разработать собственные протоколы, создать потоковую инфраструктуру. Иначе говоря — игнорировать все существовавшие на тот момент стандарты.
Урок № 2: Если хотите что-то коренным образом улучшить, вы должны нарушить существующие стандарты и найти новое комплексное решение.
Spotify решил использовать peer-to-peer: это «одноранговая сеть», она основана на равноправии участников. В ней часто нет выделенных серверов, а каждый узел (peer) одновременно и является клиентом, и выполняет функции сервера.
По идее Эка и Лорентсона, первые 30 секунд любого трека в Spotify всегда загружаются непосредственно с серверов компании, а остальная часть — из одноранговой сети. Таким образом можно уменьшить объём сетевого трафика и количество серверов. Сеть способна получать доступ к кэшу на компьютере пользователя, то есть он сможет слушать свой собственный кэш (это тоже снижает нагрузку на сервера).
Вместо HTTPS можно использовать более эффективные протоколы, основанные на постоянном TCP-соединении. Для всего остального можно задействовать одноранговую сеть.
По этой схеме Spotify мог начать проигрывать песню всего через секунду.
Схему придумали, теперь нужно было создать сам продукт. Для этого Дэниэл и Мартин наняли инженеров.
В первые пару месяцев новая команда вообще не хотела строить сервис на одноранговой архитектуре. В то время большая часть интернета состояла из так называемых «тонких клиентов»: веб-страниц, которые запускались в браузере. Загружаемые приложения — «толстые клиенты» — тоже были (например, Skype или AOL Instant Messenger), но в меньшинстве. Добиться интерактивности в браузерных клиентах было невозможно.
Чтобы решить эту задачу, Дэниэл Эк предложил присоединиться к команде Spotify Людде Стригеусу, создателю μTorrent. Идея музыкального сервиса заинтересовала его больше, чем предложения из Кремниевой долины. И Людде точно знал, что делать: то же самое, что и другие — но ровно наоборот. Именно он убедил команду сосредоточиться на одноранговых сетях и отказаться от идеи браузерного приложения.
Урок № 3: Уровень амбиций привлекает великие таланты.
Собственные стек и протоколы, «толстый» загружаемый клиент — вместо «тонкого» браузерного. Все это — неочевидные решения. Но именно они помогли компании привлечь неординарно мыслящих людей, достаточно амбициозных для того, чтобы делать что-то по-настоящему новое.
К 2008 году, когда Spotify уже имел работающее технологическое решение, создатели поняли: в отличие от большинства других отраслей, в медиаиндустрии создание продукта — только половина дела, притом самая легкая. Сложнее было лицензировать саму музыку: перед запуском Spotify пришлось заключить сделки с лейблами и артистами. Индустрия относилась к новой компании с подозрением: ведь одноранговая технология была способна подорвать сложившуюся систему.
И здесь Spotify получил самый важный урок — №4: каждый продукт должен уметь что-то невозможное.
Spotify позволил «загрузить» всю музыку мира на свой жесткий диск, мгновенно и бесплатно. Первыми откликнулись шведские звукозаписывающие компании и подписали первые сделки со Spotify. Уже в первые несколько месяцев сервис стал очень популярным в Швеции.
Шведский кошмар Стива Джобса: как Spotify перевернул музыкальную индустрию и потеснил Apple
Шведская компания Spotify по праву считается революционером в музыкальной индустрии: она первой в Европе предложила легально и бесплатно слушать музыку, не скачивая треки на устройство, тем самым встав на пути у Apple, развивающий аналогичный сервис iTunes. Spotify быстро стал популярным и увел часть пользователей Apple, развязав с гигантом холодную войну, которая длится по сей день (Даниэль Эк даже утверждал, что в 2010 году ему звонил Стив Джобс и несколько минут дышал в трубку).
Forbes публикует отрывок из книги « Против гигантов. Как Spotify подвинул Apple и изменил музыкальную индустрию» шведских журналистов Свена Карлссона и Юнаса Лейонхуфвуда, в которой описана полная история амбициозного стартапа из Швеции. Книга выйдет в издательстве «Альпина Паблишер» в сентябре 2020 года.
Музыка даром
27 сентября 2008 года Spotify устраивает большую вечеринку в стокгольмском клубе Berns. Шикарные интерьеры украшены зелеными гелиевыми шариками. Рядом с барной стойкой гости играют в Guitar Hero. В мире финансовый кризис, а у Spotify в денежном плане все прекрасно. Сотрудники празднуют запуск. Но проблема в том, что запуск-то пока не состоялся. Есть нерешенные вопросы по поводу лицензирования. На вечеринке — почти сорок сотрудников, все нарядно одеты. Даниэль Эк и Мартин Лорентсон — в черных костюмах. Директор по маркетингу София Бендз — в бежевом платье. Разработчик Гуннар Крейц — как обычно, в футболке с логотипом KTH (Королевский технологический институт в Стокгольме — Forbes). Спиртное течет рекой. Сотрудники общаются с друзьями, инвесторами и представителями музыкальной индустрии.
В качестве спонсоров София Бендз привлекла пивоваренную компанию и производителей грушевого ликера Xanté. Шакил Хан приветствует сотрудников — а те не вполне понимают, кто он такой. Несколько месяцев Петра Ханссон и Никлас Иварссон ведут переговоры о лицензиях для Spotify. Звукозаписывающие компании постоянно выставляют новые требования, касающиеся соответствующих стран и форм выплаты. Строго говоря, около 55% доходов Spotify получат звукозаписывающие компании, которым принадлежат права. Еще около 15% получают музыкальные издательства, защищающие интересы авторов треков. На финансирование деятельности Spotify остается в лучшем случае 30%. Но на практике все значительно дороже. Компании хотят подстраховаться от упущенной выгоды и возвращаются к разного рода гарантированным выплатам — например, минимальной ставке за трек. Spotify будет вынуждена платить, даже если не продаст рекламные места и не найдет подписчиков. Кроме того, Spotify платит авансом — согласно ожидаемым доходам. Аванс не возвращается, если стриминговый сервис не достигает запланированных показателей. Если число пользователей окажется меньше ожидаемого, это дорого обойдется Spotify. В первые годы выплаты будут настолько велики, что превзойдут совокупные доходы…
То есть компания изначально убыточна — еще до того, как подсчитана стоимость ведения бизнеса. Все, что касается лицензионных договоров, содержится в строжайшей тайне. В детали посвящены единицы. Кроме того, вечеринка в клубе Berns — не место для обсуждения подобных вопросов. Для многих этот субботний вечер становится излишне… веселым. Один из сотрудников, к примеру, выпивает столько Xanté, что теряет ключи, посреди ночи взламывает дверь в собственную квартиру и попадает в полицейский участок.
Игра по-крупному
Через несколько недель договоры подписаны. 7 октября София Бендз рассылает пресс-релиз, в котором сообщается, что сервис Spotify запущен, а премиум-подписка стоит 99 крон в месяц. Поначалу она доступна только клиентам провайдера Bredbandsbolaget. Директор по маркетингу названивает многочисленным журналистам. В конце октября Даниэль Эк и Мартин Лорентсон встречают журналистов Dagens nyheter ( крупнейшая шведская ежедневная утренняя газета — Forbes). 39-летний президент обещает: «Это будет нечто великое». Мартин Лорентсон одет в белый свитшот с серебристым принтом. Мартин рассказывает журналисту (он же — один из авторов этой книги), как устроен Spotify. «Мы хотим создать лучший музыкальный сервис на рынке. Думаю, через два-три года у нас будет 20 миллионов пользователей», — заявляет он (на деле это займет четыре года).
В интервью Мартин Лорентсон объясняет: сервис бесплатный, это обеспечит быстрый рост: «Мы предполагаем, что за подписку заплатят от 2 до 15% пользователей. Остальным хватит бесплатной версии». По словам Мартина Лорентсона, сервис будет запущен в̀ восьми странах. Позднее число стран сократится до шести — Германию и Италию оставят на будущее. Запуск начинается в Швеции. В Великобритании он проходит поэтапно, в течение всего 2009 года, и тщательно контролируется руководством компании. Прочие страны, где доступен сервис, — Финляндия, Норвегия, Франция и Испания.
Статья в Dagens nyheter выходит 31 октября и называется «Шведский кошмар Apple».
Запустив сервис, Даниэль Эк сразу начинает думать о создании мобильного приложения. Руководить этой работой поручено Густаву Сёдерстрёму, выпускнику KTH. Голубоглазый 32-летний блондин уже заработал многомиллионное состояние, продав Yahoo свою компанию, занимавшуюся провайдерскими услугами (мобильный интернет). Со временем он станет одним из главных соратников Даниэля Эка. Многие конкуренты Spotify уже предлагают мобильный стриминг. Финский оператор мобильной связи Nokia оклеила всю Европу, как обоями, своей рекламой — «Nokia приходит с музыкой». Их шведский конкурент Sony Ericsson открыл музыкальный магазин Play Now Arena. Самый крупный мобильный оператор Швеции назвал свой продукт Telia Music Player. Но Даниэль Эк намерен соревноваться не с ними. Он хочет потягаться с Apple.
Итак, отправная точка: пусть мобильное приложение дает возможность слушать музыку везде, где работает iPod. А еще — там, где нет зоны покрытия, в аэропортах и за границей. Для этого нужны лицензии звукозаписывающих компаний на трансляцию музыки в автономном режиме работы телефона.
Начало холодной войны
Сёдерстрём задействует лучших специалистов Spotify. Новый шеф отдела мобильных приложений, который привык раздавать прямые указания, поначалу не вызывает доверия сотрудников. В армии он руководил егерским отделением в Арвидсъяуре: подчиненные слушались и шли следом, но лыжню прокладывал он. Только вот руководить проектом в Spotify оказывается сложнее. У каждого разработчика есть свое мнение, а у кого-то — сразу несколько черновых вариантов, как должно выглядеть мобильное приложение.
Они успешно взламывали программную платформу Nokia Series 60 и первый iPhone. Густав Сёдерстрём сталкивается с сопротивлением: пространные дискуссии по электронной почте длятся неделями. Но постепенно Сёдерстрёму удается утихомирить критиков. Вскоре он уже сам рассылает длинные письма о путях развития Spotify, которые получает весь производственный отдел. Письма приходят в любое время суток — это станет нормой на несколько ближайших лет.
Мобильное приложение Spotify должно входить в премиум-подписку. Его получат только те, кто готов платить. Даниэль считает, что пользователи оценят не только доступ к музыке, но и удобство — он называет это английским словом convenience. Если трек Spotify загружается на компьютер, это автоматически синхронизируется с телефоном. Густав Сёдерстрём и Никлас Иварссон ведут переговоры по поводу лицензий с Sony и Universal в Лондоне. Звукозаписывающие компании подписывают соглашения. Они понимают, что заработают больше, если будет больше платных подписчиков.
В июле 2009 года Даниэль Эк приходит в закрытый клуб Soho House на Грик-стрит в Лондоне. В клубе дизайнерская мебель и приглушенное освещение. Знакомый, на встречу с которым и явился Даниэль, замечает в глазах у него хитрый блеск. «Сейчас я тебе кое-что покажу», — сообщает генеральный директор Spotify. Знакомого зовут Рори Селлан-Джонс, он журналист BBC, пишущий на технические темы. IT-компании обычно забрасывают его всевозможными темами для публикаций, но Даниэль Эк и вправду показывает нечто особенное. Вроде бы обычный плеер Spotify — но в iPhone! Приложение находится в стадии бета-тестирования и время от времени вылетает, но у него есть несколько замечательных функций. Можно даже загружать собственные плейлисты и слушать музыку в метро, в автономном режиме.
Журналист понимает, что это может стать большим шведским прорывом. Он несколько дней тестирует приложение и первым сообщает о появлении мобильного стриминга Spotify. В конце июля Spotify отправляет приложение в App Store для одобрения. В компании многие опасаются, что Apple заблокирует приложение. Неужели Стив Джобс действительно откроет двери для конкурентов?
Герои нового времени: главные молодые предприниматели десятилетия
Герои нового времени: главные молодые предприниматели десятилетия
Интервью с Senior Android Developer Spotify Славой Савицким
Неделю назад у нас выступал Слава Савицкий — Senior Android Developer в Spotify. Слава рассказывал о том, как айтишники живут в Швеции (например, он брал декретный отпуск по уходу за ребенком), о работе в Spotify, о новом приложении Spotify Lite для слабых андроидов, и, конечно, об Андроид-разработке в целом.
Делимся с вами записью и расшифровкой эфира.
Меня зовут Слава Савицкий. Я сегодня буду рассказывать о жизни и работе в Швеции, о Spotify, как устроиться работать, про Spotify Lite, анализ перфоманса Android-приложений. Постараюсь охватить все, что было в анонсе. Не могу отвечать на вопросы о будущем и планах 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 часов вечера, пытаясь в чем-то разобраться, а на следующий день к ним приходит менеджер, в ужасе: зачем? Почему ты так? Давай мы тебе поможем! Все сейчас сделаем, все объясним, не надо так работать!
Наверно, все слышали про понятие «лагом» — «ни много, ни мало, столько, сколько нужно». Это такой принцип шведской жизни, наряду с другим принципом, который, наверно, на все скандинавские страны распространяется: «хюгге» — это когда вы устраиваете себе спокойный отдых дома. То есть, вы находитесь дома, вы устраиваете себе ванну, вы хорошо покушали – в таком плане.
Не могу сказать, что здесь все интроверты, но для меня, как для интроверта, это прекрасная страна в плане темпа жизни. Конечно, это не для всех; здесь у власти очень много лет подряд были социал-демократы, и общество во многом построено на принципе уравнивания доходов. Это хорошо, если вы во время пандемии оказались низкооплачиваемым сотрудником – тогда государство вам будет доплачивать, и вы уже будете не таким низкооплачиваемым. Но для получения сверхдоходов это, конечно, плохо. Если вы хотите получать большие доходы в бизнесе, для этого Америка подходит больше.
Часто спрашивают, можно ли жить в Швеции только с английским. Можно, за исключением крайних случаев – например, если вам придется выступать в суде, то вам также придется нанять мою жену как переводчика. Конечно, для интеграции в общество придется в какой-то момент выучить шведский – чтобы читать новости, общаться с сотрудниками не только в рабочем режиме; это полезно.
Здесь есть такой закон – можно в любом месте, не обозначенном как частная территория (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, вся ваша работа – даже вступительное интервью – будет меряться относительно этих ценностей. Подходите ли вы нам или нет, делаете ли вы прогресс, пока вы развиваетесь в компании. Я могу их перечислить.
Вопрос: почему от модели 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 для того, чтобы предоставлять вам эту информацию, и копаете туда с другими параметрами.