Белорусский программист в Spotify: «Работай, как хочешь, главное — результат»

18 марта 2015, 10:53

Через неделю в Минск приедут представители двух европейских компаний, которые часто ставят в пример при построении производственного процесса в ИТ. Об одной из них, шведском музыкальном сервисе Spotify (более 60 млн пользователей), в Беларуси слышали немногие. Не знал о компании и белорусский программист Кирилл Жданович, пока год назад не получил приглашение на должность разработчика в стокгольмский офис Spotify. Сегодня Кирилл любезно согласился поделиться своими наблюдениями о непростой для постороннего, но естественной и эффективной для «своих» системе организации процессов разработки в компании на основе методологии Agile.

Читать далее

Кирилл Жданович

«Участие в соревнованиях помогло пройти все собеседования»

— Сложно ли было попасть в Spotify?

— Не то, чтобы сложно, но я до сих пор уверен, что успешное прохождение интервью в такого рода компаниях — достаточно большое везение. Многое зависит от человеческого фактора: ты можешь понравиться или не понравиться. Даже мои знакомые, хорошие люди и специалисты, не прошли собеседование. Возможно, они не подошли на определённую позицию, но сильны в другом.

В Минске я работал в компаниях достаточно успешных, где можно учиться у людей: «Кредо-Диалог», Wargaming.net, BP Mobile и потом в MAPS.ME. Когда заканчивал институт, познакомился с Лёшей Толстиковым, куратором минской Школы анализа данных «Яндекса», — и поступил туда.

Мне кажется, что ШАД и участие в соревнованиях типа Codeforces и TopCoder помогли мне пройти все собеседования. Во многих компаниях очень часто задают алгоритмические задачи, и у меня все интервью заканчивались на 20 минут раньше, потому что я всё решал гораздо быстрее положенного. Вопросы, связанные с архитектурой, даются мне сложнее, потому что разработкой занимаюсь не так давно.

— Ты хотел попасть именно в Spotify или просто выбирал из нескольких вариантов?

— Меня нашли рекрутёры. В MAPS.ME было интересно, особенно с сооснователями Юрой Мельничеком, Виктором Говако и Сашей Золотарёвым — очень много знаний получил. Мне просто написали и спросили, хочу ли я попробовать. Я подумал, что никогда не собеседовался в такие компании — почему бы и нет. И Швеция — интересная страна для жизни. Начал узнавать, чем занимается Spotify. Оказалось, что это очень известная компания, с большим количеством пользователей и интересным продуктом. Чем больше узнавал, тем больше хотелось получить работу. Съездил на интервью — и мне почти сразу прислали «офер». Я решил, что смогу многому там научиться. Прошёл почти год, и я до сих пор не жалею.

«Think it. Build it. Ship it»

— В вашем офисе много иностранцев?

— Понятно, что основной контингент — шведы, но иностранцев много. Кажется, что во всех офисах компании работают представители около 60 национальностей. Здесь я встретил людей из таких стран, о которых раньше слышал всего пару раз. У меня в команде есть испанцы, девушка из Польши, француз, американка и американец, британец и, конечно, шведы.

Многие крупные компании стремятся к разнообразию. Считается, что круто иметь людей из разных стран, с разным видением. Это помогает делать продукт для более широкого круга людей. В команды стараются набирать как опытных, так и молодых сотрудников, которые могут привнести свежие идеи — пусть и странные на первый взгляд. В отличие от команды, все члены которой читают один сайт, тут люди здорово друг друга развивают.

— Действительно ли корпоративная культура Spotify так отличается от того, что ты видел раньше? Что было самым необычным для тебя?

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

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

Мы постоянно хотим делать продукт лучше. У Spotify есть слоган: «Think it. Build it. Ship it». Т.е. сначала мы подумаем, потом сделаем, потом посмотрим — и поправим. Когда мы что-то сделали, мы обязательно смотрим назад: как это прошло, что мы могли сделать лучше, какие ошибки мы не хотели допускать.

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

В офисе Spotify в Стокгольме.

«Трайбы», «скуоды» и Agile-культура

— Как тебя вводили в курс дела? Что такое Bootcamp?

— Через неделю после прихода в компанию я пошёл на Bootcamp. У нас в группе было семь разработчиков, нужно было за две недели сделать прототип продукта и посмотреть, как это работает. Получается, что мы были маленьким squad'ом (Первичная команда разработчиков в Spotify — Прим. dev.by), у нас был свой Agile-coach, свои тестировщики, свои менторы. Это было, как прививка: мы играли с мёртвыми бактериями, нам было весело, все только приехали, общаемся, и продукт весело делается. При этом мы посещали семинары, узнали о системах оценки в компании, о том, как тестируются продукты, о безопасности. Придя в команду, у меня было ощущение, что я уже готов к работе.

— Agile-coach есть в каждой команде?

— В каждом «трайбе» (Объединение команд разработчиков, работающих в связанных областях — Прим. dev.by) решают сами. В одной команде у нас был коуч, а сейчас он непостоянный, работает с несколькими командами.

Мне нравится, что всё измеряется, обсуждается, что может измениться направление, — гораздо лучше понять сейчас, что это не будет работать, чем когда мы это уже доставим пользователям.

Хочу сказать, что Agile-культура для кого-то хороша, а для кого-то нет. Например, мой брат, у которого 15 лет опыта в разработке, не понимает, зачем нам нужен Agile-coach. Здесь тоже есть такие люди. Не все любят долгие планирования, не все считают это полезным. Но другим это подходит — помогает строить процессы.

— Сколько человек в твоей команде?

— Я работал в нескольких командах. Их стараются делать достаточно маленькими — как маленькие стартапики. И все сидят вместе. Обычно в командах от 7 до 14 человек. Например, в продуктовой команде может быть сразу тестировщик, дизайнер, автоматизатор, Agile-coach, разного вида разработчики и product owner. Кто-то может приходить на время, чтобы помочь с реализацией какой-то идеи.

Команда, в которой я работаю сейчас, занимается поиском. Конечно, мы зависим от иных сервисов, но при этом достаточно самостоятельны. Все работают автономно и потом между собой синхронизируются.

— А общее направление движения обсуждается на совместных собраниях?

— Везде это работает по-своему. Мы разбиты на «трайбы», в которые входит несколько команд (squads). Есть ещё подуровни, но они не так важны. Очень часто нам рассказывают, что мы делаем и почему мы делаем это именно так, чтобы люди знали, что происходит. Когда команда что-то сделала, она может показать это всем: от своего «трайба» до всей компании. Поскольку есть несколько офисов, обычно это происходит в большой переговорной комнате с видеосвязью.

— Есть какие-то «дедлайны», обязательные отчёты или вы настолько автономны, что никто не следит даже за тем, когда вы что-то делаете?

— «Дедлайны», само собой, есть, отчёты, наверное, тоже, но я как разработчик о них не знаю. Я вижу еженедельные отчёты от всех «трайбов» о достижениях и планах.

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

Компания очень быстро движется и часто приходится менять направление, нужно быть очень гибким. Иногда бывает, что ты идешь к какой-то цели, но потом понимаешь: конечно, здорово иметь это, но сейчас есть более важные приоритеты. Или мы сделали что-то, что, как нам казалось, потребует доработки, но оказывается, что текущее состояние нас удовлетворяет. Или бывало, что мы раньше срока всё сделали и думаем, что бы ещё добавить.

— Как часто вы делаете релизы?

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

Здесь код не лежит долго в ветках, его постоянно добавляют в мастер под флагами, что позволяет его легко включить или выключить.

Тут работает такая идеология: мы хотим часто «шипить», получать быстрый фидбэк и быстро учиться — и всё это как-то работает.

— Как обсуждаются ошибки?

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

— Команды часто между собой взаимодействуют?

— Постоянно. У нас есть гильдии: например, все Java-разработчики общаются, есть собрания, на которых они обсуждают технологии. Все вместе обсуждают, например, переход на другой фреймворк. Команды очень зависят друг от друга. Но, к примеру, моя команда гораздо больше зависит от команд из нашего «трайба», чем от каких-то других.

— По какому принципу команды собираются в «трайбы»?

— В основном это то, за что отвечает команда. Мой «трайб» больше работает с данными, именно с самой музыкой. Есть «трайб», который работает с мобильными клиентами и десктопом.

«Софт, который мы делаем, превращается в нечто волшебное»

— Как работает внутренний open source?

— Всё начинается с разговора: ребята, я хочу использовать ваш код и сделать то-то. Они могут сказать, что это как раз то, что они хотели, но нужно учитывать какие-то особенности. Это хорошая подсказка. Конечно, бывает, что кто-то что-то сделал без предупреждения, а ты потом смотришь и удивляешься. Бывает, что люди по незнанию что-то сделали. Но все постоянно что-то друг другу «контрибьютят». Человек может потратить своё время, например, в Hack day, и что-то добавить — и все только рады.

— Ты уже участвовал в Hack Week?

— Да, участвовал. Но у меня не было никакой революционной идеи, я просто написал штуку, которая должна была быть, но на неё не хватало времени. Но параллельно я участвовал в продукте, который можно назвать инновационным. Это достаточно интересно.

Есть планы глобальные, а есть то, что люди хотят попробовать и внести в продукт. И недельный хакатон — прекрасное время для этого. Во многих компаниях есть innovation labs, где сидят люди и что-то придумывают. Здесь здорово, что каждый может в этом поучаствовать. Если у тебя есть идея — бери и делай. И потом специалисты, которые занимаются продуктом, изучают результаты. Я уже был свидетелем того, как вещи, придуманные на Hack Week, были запущены в продакшн.

— «Овертаймы» случаются?

— Есть такая забавная шведская фраза о том, что если ты «овертаймишь», люди будут думать, что у тебя нет личной жизни и друзей. Каждый решает для себя, иногда это даже не приветствуется.

Работая в своей первой команде, я обещал что-то сделать, но не успевал. Это не ломало сроки, но я не хотел сам себе вредить. И я работал допоздна. Ко мне подошел мой PO и говорит: «Видел, ты сегодня пришел в 8, а уже 7 вечера — иди домой». И он достаточно часто такое говорил.

Однажды я задержался по собственной инициативе, потому что нужно было доделать что-то важное. Потом он написал мне примерно такое письмо: «Ты молодец. Это было не обязательно, но за то, что ты это сделал и поработал на три часа больше, в понедельник уйди на полдня раньше».

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

Есть обязательное время, когда ты должен быть на «митинге». А потом можешь работать из кафе или из дома, если при этом люди могут с тобой взаимодействовать. Главное — результат. Я не видел, чтобы кто-то этим злоупотреблял.

— В видео много говорилось о мотивации в Spotify. Есть какая-то особая система?

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

Ещё работает представление о том, что софт, который мы делаем, превращается в нечто волшебное. Когда я работал с «картами», это было так: «Карты всего мира у вас в кармане». А здесь мы всем несём музыку и хотим, чтобы больше людей её слушало. Можно сказать, что отчасти мы сами себя мотивируем, потому что это крутой продукт, который нравится людям. Когда я только приехал и искал квартиру, хозяева спрашивали, где я работаю. Когда я отвечал, что в Spotify, люди расплывались в улыбке.

Если сотрудников не мотивирует музыка, они могут быть нацелены на технологию, на крутые штуки, интересные решения, которых нет у других компаний.

— Расскажи о бытовой стороне работы в Spotify.

— Офис очень здоровский. У каждой команды своя комната с open space, в одной части стоят столы, в другой — место для собраний с диванами, стульями, телевизором для связи и досками для рисования. Сейчас я сижу в маленькой переговорной комнате с досками, здесь помещается человек шесть. У каждой команды есть своя такая комната.

Spotify очень славится социальными ивентами. Компания часто «хостит» всякого рода митапы. Много совместных поездок, мероприятий. Например, все желающие организованно едут кататься на лыжах или заниматься сёрфингом. Очень часто в офисе бывают живые выступления музыкальных групп, которые можно увидеть на больших фестивалях. Летом и зимой проходят традиционные новогодняя и летняя вечеринки.

Печеньки в офисе повсюду, но стараются смотреть за работниками, чтобы они были в форме. Поэтому у нас больше овощей и фруктов. В холодильнике есть протеиновые коктейли для тех, кто занимается спортом.

Есть комната, где можно поспать, два игровых помещения, музыкальная студия с профессиональным оборудованием. В компании много музыкантов, диджеев. Как-то в офисе был концерт, на котором сотрудники играли каверы на песни известных групп.

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

О передовом опыте Spotify в имплементации и масштабировании методологии Agile директор по разработке компании Кевин Голдсмит (Kevin Goldsmith) расскажет в Минске 26 марта. Организатором бесплатного для посещения мероприятия выступиила Godel Technologies Europe. Подробнее>>>

 

Фото: Spotify

Обсуждение