Разработка в Wargaming – встреча с Максимом Барышниковым, Head of Platform (ч.II)

?v=1

Эта статья — продолжение беседы с Максимом Барышниковым, Wargaming, Head of Platform. Первая часть, посвященная технологиям и архитектуре, уже была была опубликована на Хабре (https://habr.com/ru/post/496954/). Эта часть посвящена управлению в программистской компании.

Из неё вы узнаете, например:


  • Какая в Wargaming идеология разработки, что такое fear driven development и почему приходится сдерживать Scrum-адептов
  • Какие инструменты используют в Wargaming для сбора обратной связи и оценки «удовлетворенности» сотрудников и почему состояние «я устал, я ухожу» почти никогда не сюрприз
  • Насколько важны для инженеров soft skills и culture fit?
  • Что такое «переездец» и другие эпические мемы и фейлы компании

Алексей Рыбак: У вас есть какая-то основная идеология, какой-то девиз, как у Facebook — «Move fast and break things»?

Максим Барышников: У Wargaming есть убеждение собственников, которые известны всем и которые зафиксированы в девизе «We deliver legendary online games. Globally. With passion». Он не менялся с самого начала существования Wargaming, в смысле он был сформулирован, когда понадобился, когда Wargaming стал интернациональной компанией. Но убеждения гендиректора, Виктора Кислого, они всегда были такими. У него всегда были игры на первом месте. Он сам отчаянный геймер. Он просто хотел делать больше хороших игр, а любит он конкретно такой жанр (военно-стратегические игры, прим.). Если посмотреть, какие игры делал Wargaming, они все примерно про это.

Алексей Рыбак: Смысл фразы «Move fast, break things» заключается в том, что «Ребята, давайте мы все перестанем быть условными «черепашками». Давайте «пушить» себя, как можно быстрее релизиться. Может быть, даже что-то будет падать. Это нестрашно.

Максим Барышников: Я знаю. Просто вынужден был сделать небольшую предысторию. То, о чем говорил — это в определенной мере смысл существования компании.
Дальше. По поводу идеологии конкретно разработческой. Wargaming — это entertainment компания, она про игры, в меньшей мере про инженерию. Поэтому у нас инженерия может иметь несколько различную идеологию в зависимости от того, что именно это за команда: команда танков, инженерия моей команды платформы, инженерия команды кораблей или инженерия других каких-то игровых команд.

Алексей Рыбак: Можно сказать, что вы уже поделились — это всегда происходит при определенном объеме, размере компании — на отдельные мини-государства, в которых и культура немножко обособленная, процессы обособленные?

Максим Барышников: Да. Не могу сказать, что мы сделали это полностью осознанно, скорее оно соответствует общей логике вещей.

Алексей Рыбак: Но это естественная вещь. Когда тысячи человек, по-другому не бывает.

Максим Барышников: Еще и географически в разных странах. Да. Де-факто оно разбилось так. Но стараемся сделать из всего этого федерацию, если уж продолжать эту аналогию. И иметь дипломатические устойчивые отношения. Но де-факто это разные группы людей с немного отличающейся культурой и идеологией.

Алексей Рыбак: Скажи, пожалуйста, у вас есть какие-то любимые менеджерские практики — Канбан, Scrum, правильный Scrum, стихийный Scrum, или waterfall, что-то такое?

Максим Барышников: Я не люблю разговаривать на эти темы, потому что моя идеология — это инструменты всегда вторичны или процессы всегда вторичны, а важно то, что мы делаем и зачем.
Мне вспомнилась идеологиия инженерной культуры в одной из наших команд в Чикаго, она называется fear driven development. То есть страх того, что… всё, что может пойти не так, пойдет не так, и твой код должен это отрабатывать.

Алексей Рыбак: А, в хорошем смысле. То есть не страх палки…

Максим Барышников: Да, а страх того, что все твои самые худшие кошмары могут осуществиться с точки зрения твоего кода. У них действительно получается очень надежный код, который не ломается практически ни при каких условиях. Иногда с точки зрения софта продолжать выживать бессмысленно, но он всё равно живет.

Алексей Рыбак: Ты говоришь, что вторично. Хорошо. То есть ты хочешь сказать, что у вас каждая команда может определить свой цикл разработки, и как часто делать релиз. Нет такого, что есть такая практика, что релизы случаются раз в неделю, две недели или месяц? Какой-то фреймворк или какой-то набор практик, которые поддерживают ритм и сигнализируют о том, что где-то что-то просело с точки зрения поставки продукта? Я с тобой согласен, что важнее то, что и зачем. Но это ортогональные вещи. Что и зачем — это некая глобальная мотивация. Что и зачем мы сидим в лодке? Потому что мы спортсмены, мы хотим выиграть медаль, и вообще это клево — плавать. А для того, чтобы хорошо гребли, есть человек, который «считает» или что-то ещё делает, но это разные вещи (прим. АР ­– имеется в виду «рулевой», сидит на корме, направляет лодку и задает ритм гребли).

Максим Барышников: Я понимаю, что это разные вещи. Просто я такое количество раз сталкивался с ситуациями, когда какой-нибудь очередной Scrum-фанатик, Scrum-адепт прибегает и говорит: «Вам нужно срочно отмасштабировать Scrum». Я говорю: «Зачем?». — «Как зачем? Это же Scrum. Его надо масштабировать». Я говорю: «Зачем? Что ты этим решаешь?».

Алексей Рыбак: Теперь я понял контекст. Хорошо, как бы ты охарактеризовал тогда ваш процесс?

Максим Барышников: Теперь буду говорить про мое подразделение, потому что я из «Танков» перешел все-таки какое-то время назад. И напомню свою ситуацию. Большое количество сервисов (150 штук), 200 человек на 150 штук сервисов. Относительно большое количество относительно маленьких команд. И взаимозависимость между сервисами. Очевидно, мы должны соблюдать ритм релизов и прочего.

У нас есть release train, который формируется с четким расписанием, движется таким-то образом. То есть для того, чтобы в него попасть, тебе надо сдать стабилизированный билд тогда-то, так-то протестированный, и он поедет. Это с точки зрения каденции релизов, всего этого процесса.
Алексей Рыбак: А это расписание, например, релизов, видимо, есть релиз клиентских частей, есть релиз серверных частей, есть какие-нибудь стандартные практики, например, «релизим бэкенд каждый день», или каждую неделю? Какая динамика?

Максим Барышников: Я сейчас говорю про свои преимущественно бэкенд сервисы. Платформа — преимущественно набор бэкенд-сервисов. Там есть фронтенд, там есть цифровая дистрибуция. Это отдельная история. Я пока отложу ее немножко. Бэкенду вполне хватает двухнедельных release train. В конечном итоге, у нас каждый день происходит какое-то количество релизов, 3–4 штуки в день гарантированно. Чаще больше.

Алексей Рыбак: Это в рамках hot fix?

Максим Барышников: Нет. Скорее всего, 3–4 штуки — это будет запланированное.

Алексей Рыбак: Зачем 3–4?

Максим Барышников: 3–4 разных релиза. 150 сервисов.

Алексей Рыбак: Грубо говоря, это всё раз в две недели. Но когда ты все эти 150 вместе сложил, то?… Понятно.

Максим Барышников: С точки зрения «Танков» мы способны зарелизить клиентскую hotfix версию в течение четырех часов, если надо. В течение четырех часов от коммита (commit), когда сделан коммит типа «Я пофиксил». Четыре часа нужно на то, чтобы QA проверил, дал добро, для того, чтобы собрались патчи, для того, чтобы они разошлись по всему, для того, чтобы мы раздали это на клиент (если клиентский патч нужен). Если серверный патч, к сожалению, без рестарта мы его наложить не можем, но мы можем сделать это относительно прозрачно для игроков. Перезапуская кластера (периферии) по очереди, но при этом сохраняя всем возможность играть.

Алексей Рыбак: Работу менеджера в такой большой команде, наверное, можно разделить на три части. Первая — это когда ты в каком-то проекте, либо как проектный менеджер — он может быть внутренний, продуктовый, это неважно, — участвуешь как эксперт. Второе у тебя есть У тебя работа по организации всего: где ты хочешь быть, куда хочешь прийти, что-то перестроить. И наконец можно выделить в отдельную группу всё остальное, что связано с HR, PR, DevRel, еще чем-то. Ты когда-нибудь задумывался, в какой пропорции у тебя в твоей роли сейчас — большой отдел, много компонент, несколько сотен человек — эти задачи делятся? Выступаешь ли ты где-то как эксперт, или ты забил на это и это невозможно? Или это можно делать несколько часов в месяц, и ты стараешься брать какие-то проекты?

Максим Барышников: Да. Я про это думаю, думаю много. Если баланс нарушается, то я начинаю с этим что-то делать. Последние несколько лет я нигде, наверное, не выступал. Не потому что у меня на это не хватает времени, а потому что скорее у меня внутреннее ощущение, что, мне кажется, не особенно есть что сказать. Это инженерная проблема. Я перестал быть 100%-м инженером несколько лет назад, и с тех пор я скорее догоняю контекст, нежели иду впереди него. Отсюда логичный вывод как у инженера:, а что же я могу рассказать тем людям, которые и так всё знают лучше меня?
Я также разумом осознаю, что, наверное, если покопаться, то мне есть что рассказать, но я не знаю, что из этого. То есть я не знаю, что из всего того, что у меня есть в голове, интересно, а что нет.
Алексей Рыбак: Из этих трех групп в каком балансе у тебя делится? Что ты открываешь, и где находишь какие-то новые челленджи именно в этих трех группах задач?

Максим Барышников: Процентов 20 своего времени я участвую как продуктовый либо инженерный эксперт в тех или иных инженерных или проектных, продуктовых инициативах. Я по-прежнему стараюсь быть hands on человеком. Если мне не дают попрограммировать, то хотя бы по архитектуре чуть-чуть. Кстати, программировал я позавчера в последний раз. Там просто в процессе обсуждения между двумя разными командами возникла такая challenging, казалось бы, формулировка инженерной задачи, и я подумал, что, возможно, у меня есть к этому решение. Мы немного пообсуждали и я не смог отказать себе в удовольствии сесть и вечерком накидать прототип. Вечерок, правда, затянулся. Я сел в восемь вечера, закончил в два ночи, но зато утром отдал это решение, оно работало, задачу решало.

Алексей Рыбак: 20% на такие проекты. А остальное?

Максим Барышников: Не только на такие. Не только там, где надо попрограммировать. А там, где надо продуктовые кейсы рассматривать.

Алексей Рыбак: Экспертно, project management.

Максим Барышников: Да. Почти половину своего времени я трачу в том или ином виде на людей, на то, чтобы помочь им в той конкретной ситуации, где они сейчас находятся. Обычная задача руководителя. То есть я просто представляю, если откатать сколько-то времени назад, что помогло бы мне лично в этой ситуации с точки зрения моего руководителя, что бы меня ускорило или дало какой-то контекст или инсайт. И стараюсь эти вещи помогать людям проходить чуть быстрее, чем они прошли бы самостоятельно.

Алексей Рыбак: То есть это всё делается в рамках регулярных 1:1?

Максим Барышников: Это регулярные 1:1, это еще какие-нибудь дополнительные мероприятия, это какие-нибудь сборища по интересам. Там много разных форматов, а не только 1:1. У меня 1:1 бывают не только с моими прямыми подчиненными.

Алексей Рыбак: У менеджера в твоей группе — либо, может быть, это практики на всю команду — есть какой-то менеджерский фреймворк, менеджерский чек-лист каких-то вещей, которые надо делать, и в которых они постоянно участвуют?

Максим Барышников: Под менеджерами ты понимаешь людей, которые управляют другими людьми, или которые проектные или продуктовые менеджеры?

Алексей Рыбак: Да, я имею в виду людей, которые занимаются people management, у которых есть прямые подчиненные.

Максим Барышников: Есть фреймворк, который в основном фокусируется на том, чтобы дать человеку все инструменты, чтобы он проверял состояние каждого из членов своей команды, в том числе мотивационный статус, удовлетворенность в том или ином виде, и так далее. Оно помогает лучше проводить 1:1, помогает самому сотруднику управлять своей производительностью, своим перформансом, получать удовольствие от работы.

Алексей Рыбак: Но надо же подталкивать человека к тому, чтобы он делился в каком-то формате этой информацией. Это делается неформально? И это обязательство скорее в течение 1:1 обсуждать это, или есть какой-то процесс?

Максим Барышников: Я бы не сказал про процесс. Есть инструмент.
Например, берем среднестатистического хорошего разработчика, который демонстрирует навыки и потенциал лида. Говорим ему: «А теперь ты лид». Что он будет делать? Ему говорят: «Чувак, ты теперь руководитель этих людей, практически отец для них. Ты должен заботиться об их безопасности, удовлетворенности. Что ты будешь делать?». Говорит: «Ну, я не знаю». И ему сразу мы можем предложить набор инструментария, по которому: «Я понимаю, что ты не знаешь, как проводить 1:1, и тебе немножко некомфортно: вчера он был твой коллега, а сегодня ты его начальник». Что можно в этом случае сделать? Как построить эту беседу? Как преобразовать отношения? Как их разграничивать? Как понимать состояние, статус, удовлетворенность? Там куча всего.

Алексей Рыбак: Это ты говоришь, как коучить будущих или вновь обращенных. А ты сказал, что есть определенный фреймворк по сбору и предоставлению обратной связи, на основе которого строятся уже разговоры. Причем речь там была не о тимлидах, а вообще о всех сотрудниках. Это просто HR раз в какое-то время что-то собирает, или у вас есть какое-то HR tech решение, внутреннее, внешнее? Или в рамках ревью вы это делаете?

Максим Барышников: Ты просто столько вопросов позадавал, казалось бы, в одном вопросе. Да, у нас есть небольшой свой инструментик, который удобен для того фреймворка, который есть у нас. Он помогает и 1:1 проводить, и фиксировать эту информацию. Вся информация там, у меня сразу есть куча и метрик, и всякого прочего.

Алексей Рыбак: Правильно ли я понимаю следующее. Например, я твой подчиненный. Мы сели с тобой, проводим 1:1, грубо говоря, ты зашел в какой-то инструмент,»1:1, четверг вечер, с Алексеем». Хоп, тебе высветилось: «Спросить Алексея, как дела». Как бы он задает некую структуру разговора, что там можно зафиксировать, и через неделю это повторится. Я утрирую.

Максим Барышников: Практически. С той лишь разницей, что конкретно я это делаю не так формально. Но этот наш молодой лид, ему формальный сценарий поможет гораздо больше. И информация под рукой, записанная с прошлых встреч, его собственные заметки о договоренностях с человеком и т.п.

Алексей Рыбак: То есть какой-то контекст. Обычно просто используется Google Doc, туда выписываются все текущие задачи и вопросы.

Максим Барышников: Тот же самый Google Doc требует от тебя определенной дисциплины, и чтобы ты сам себе какие-то пометки делал. А тут тебя ведут практически за руку по этой штуке.

Алексей Рыбак: Понятно. Если говорить про какие-то HR-tech решения, опять же, очень кратко, просто по компонентам, что вы используете? Система поддержки 1:1 интервью. Что еще?

Максим Барышников: Отслеживание мотивации (инструменты), инструменты (9 box)[https://www.predictivesuccess.com/blog/9-box/]), если их знаешь.

Алексей Рыбак: Когда слышу про отслеживание мотивации, у меня «кафка» начинается сразу, «фашизм», такие ассоциации. Что это и как это работает?

Максим Барышников: Тут меня во многом покусали наши адепты, есть методология Сьюзен Фаулер «Оптимальная мотивация». Меня самого поначалу триггерило это словосочетание, поэтому я его использовал меньше, а тут, видишь, не замечаю, как использую. Сьюзен делит на шесть или семь разных состояний, и она помогает понять тебе, в каком конкретно состоянии ты сейчас находишься. К мотивации «баззвордовой» имеет довольно мало отношения. Например, есть статус, когда я что-то делаю, потому что меня заставили.

Алексей Рыбак: Можешь рассказать какой-нибудь кейс, когда на основе этого что-то было полезным? Потому что очень часто в таких HR-вещах что-то делается, вроде получаются какие-то данные, может быть, даже какие-то люди упарываются в эти данные и что-то говорят, но, по сути, это не очень сильно влияет на бизнес.

Максим Барышников: HR-tech — для меня слово новое. Я посмотрю, какой контекст туда вкладывают. Наверняка что-то знакомое, но тем не менее. Эта работа, даже просто на 1:1 поговорить про это состояние, типа: «Ты сейчас работаешь почему: потому что тебя заставили, потому что ты хочешь или потому что ты фигачишь как бешенный?», просто поставить какую-то текущую отметочку, оно очень сильно помогает самому человеку понять: я сейчас на выгорание лечу со всех ног или…?

Алексей Рыбак: Это все-таки рекомендация вести разговоры, на 1:1 такое поднимать, или какая-то система, какой-то опросник? Я понимаю, когда за рюмкой чая можно это обсудить. Тут важно состояние обоих людей, в первую очередь человек, который рассказывает. В это состояние тоже надо погрузиться. Если выдернуть человека по расписанию — не так просто.

Максим Барышников: Всё абсолютно так. И каждый человек сам решает, как и что ему делать. Если у них двоих сложились в пятницу вечером такие обстоятельства, они поговорили на эту тему, руководитель может в этом же нашем инструменте поставить: «Мы так-то поговорили, и получилось, что состояние такое». Это он для себя на самом деле оставил.

Алексей Рыбак: Ты сказал, первое — 1:1, второе — такой сбор информации о мотивации. Что еще? Ты сказал, что HR-tech для тебя что-то новое. Я свободно оперирую термином, может быть, не вполне корректно. В HR-tech я запихиваю всю автоматизацию, которая связана с HR процессом, вплоть до найма, массового найма, проведения онлайн-интервью, опросники, ревью. Это сегмент рынка, потому что многие не делают инструменты внутри, а берут готовые решения.

Максим Барышников: Я не ответил на вопрос, была ли какая-то польза от этого. Польза как минимум в том, что состояние условно «я устал, я ухожу» для нас никогда не сюрприз.
Алексей Рыбак: Превентивный сбор или попытка как можно раньше узнать о потенциальных проблемах. Что еще?

Максим Барышников: Да. Из инструментария у нас есть разного рода отслеживание вовлеченности. Абстрактное понятие, чуть менее ругательное, чем мотивация. Есть несколько инструментов.

Алексей Рыбак: Но отслеживание пугает.

Максим Барышников: Периодически через опросы. Хочешь — участвуй, хочешь — не участвуй.

Алексей Рыбак: То есть какой-то опрос, который потом анализируется.

Максим Барышников: Да. Есть методики, как мы его делали внутри, но есть несколько хороших тулов на рынке. Например, (Сulture Amp)[https://www.cultureamp.com/], такая штука.

Алексей Рыбак: Из вашей компании делались доклады, по-моему, в экосистеме конференций Олега Бунина, может быть, какой-нибудь TeamLead или еще что-то. Это твой департамент или это какой-то общий HR-департамент на всю компанию? Ольга…

Максим Барышников: … Проходская. Ольга — это мой HR.

Алексей Рыбак: Понятно. То есть фактически всё, что она рассказывает — это те практики, которые приняты у вас? (Прим. АР — см., например, доклад Ольги Проходской («Может ли менеджер мотивировать своих сотрудников»)[https://www.youtube.com/watch? v=pvVoyidLHbs]).

Максим Барышников: Да.

Алексей Рыбак: В свое время я восхитился некоторыми вещами, концентрацией на «правильность» процесса, на «правильные» опросники. Я даже шэрил это всё в группе. Всем, кому интересно, я рекомендую эти доклады посмотреть. Может быть, мы когда-нибудь про это всё поговорим более подробно.
Потихоньку время подошло к концу. Я не задал гигантское количество вопросов. Что-то еще припасено. А сейчас попробуем спросить остальных. Ребята, есть ли в этой части вопросы?
Пока вопросов нет. Тогда пока буду задавать сам.
Когда ты переходил из команды бэкенда, твоя команда была поменьше или тоже достаточно большая?

Максим Барышников: Из серверной команды? Она была маленькая. Она и сейчас небольшая.

Алексей Рыбак: Честно говоря, не знаю, в какой момент у человека очень сильно меняется фокус на определенных задачах, и насколько он масштабно смотрит на те или иные вещи, бьет себя по рукам, чтобы не лезть в какие-то детали. Каждый раз, когда ты переходишь определенный рубеж — видимо, он у всех разный, — приходится как-то меняться, менять свои привычки, приобретать какие-то новые привычки. Лично для тебя что было самое челленджовое, и какие навыки приходилось, наоборот, гасить, и какие навыки в срочном порядке приобретать?

Максим Барышников: Самый большой челлендж между работой инженера и руководителя в какой-то мере, он случился даже до Wargaming. Я вскользь упоминал, что у меня была своя компания. Я туда впрыгнул из сугубо инженерной роли. Роль была достаточно большая, было до 70 человек. И я оттуда впрыгнул в авантюрку про собственную компанию, которая не была провальная, но и не была особенно успешна. И там у меня произошел первый пяток больших ломок между инженером и не инженером. Зато очень сильно расширила кругозор и подготовила, дала какую-то идею, какими векторами и направлениями нужно будет заниматься. После этого случился Wargaming, и я тогда умышленно, когда приходил в Wargaming, говорил, что «я не хочу быть руководителем никого, по крайней мере в ближайшее время. Дайте мне регенерироваться и войти обратно». Поэтому я был отдельно стоящим инженером-полуархитектором, но со временем вернулся обратно в строй. И последующие шаги были скорее осознанные. То есть я понимал, когда я прихожу в какую роль, что меня там ожидает из челленджей. И плюс-минус я там сильно не ошибался в своих ожиданиях.

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

Максим Барышников: Во-первых, тебе надо осознать, что когда ты становишься лидом, либо при росте, твоя первейшая обязанность — это твои люди, твоя команда, насколько они боеспособны, в каком они состоянии, и так далее. Даже то, что они сейчас прямо делают, менее важно, чем это. И ты гораздо меньше можешь принести пользы написанием кода, нежели работой с этими вещами.

Второе. Графоманство… Наверное, не было у меня очень большой проблемы в том, что не хватало времени на письма и прочее.

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

Алексей Рыбак: У нас есть один вопрос, этот вопрос в чате Youtube, задает его Алекс Лурье: «На что обращаете внимание, когда собеседуете программистов? Знания конкретных технологий для вас важны?». Ты ответишь на этот вопрос, а я к этому добавлю ещё один вопрос: насколько для вас важны soft skills или culture fit? Если да, то как вы его проверяете? Как вы интервьюируете?

Максим Барышников: Буду отвечать по порядку. Технические скиллы важны, безусловно. Какое-то время назад, когда Wargaming очень бурно рос и нужно было набирать неимоверное количество людей, наоборот, собеседовали на технические скиллы плоховато. «Ладно, что-то умеете — остальному научим. Сойдет», и так далее. И на софт скиллы не обращали внимание совсем, за что позже поплатились. Сейчас люди у нас собеседуют очень профессионально. Софт скиллы занимают от 30% до 40–45% финального решения.

Алексей Рыбак: Не очень понимаю. Инженер собеседует по софт скиллам?

Максим Барышников: Инженер собеседует по техническим скиллам. Этот же инженер в том или ином виде «примеряет» culture fit, что он может сделать сам по себе. Насколько человек подходит команде, какой получится у него culture fit.

Алексей Рыбак: Комфортно работать с ним или нет? хочу с ним работать или нет.

Максим Барышников: Быть хорошим интервьюером — это прокачиваемый навык. Разные наши интервьюеры в разной степени могут замерить или дать свой фидбэк по софт-скиллам. Кто-то делает это очень хорошо, и там не надо никакого дополнительного репорта HR или еще кого-то. Кто-то делает это меньше. Но наблюдателем на интервью действительно присутствует рекрутер, HR, который тоже дает свои рекомендации по софт-скиллам. Иногда может подключиться к разговору. Но в основном разговаривают либо коллеги, либо руководители тех, куда идут люди. Иногда собеседуем друг другу (прим. в соседнюю команду, а не в свою), в зависимости от доступности интервьюера. Но сейчас — я уверен, не только у нас, а вообще везде — софт-скиллы — это очень важная история.

Алексей Рыбак: Серия интервью обычно какой длины?

Максим Барышников: Сейчас стала короче — два, максимум три интервью. Длиннее, если это какой-нибудь очень сложный relocation. То есть когда человека надо сложно перевозить.

Алексей Рыбак: В любой компании есть определенное количество баек или мемов, которые передаются из поколения в поколение. И в том числе образуют какую-то внутреннюю культуру в компании, атмосферу. Можете что-то такое рассказать про Wargaming?

Максим Барышников: Могу скорее несколько инженерных баек рассказать.
В истории «Танков» был момент, когда нужно было изобрести мультиткластерность. Когда кластер один, то всегда есть предел его масштаба и дальше ты сильно кластер не размасштабируешь: упираешься в пропускную способность дата-центра, и так далее. Процесс придумывания этой мультикластерности, он был достаточно своеобразный. Но важно то, что тех, кто принимал в нем участие, они стали своеобразными отцами-основателями дальше в мифологии команды. Они сейчас не работают в этой команде, но приобрели статус практически мифических существ. И часто в code review — по крайней мере немножко раньше — можно было встретить такие вещи: «Вот так не делай». — «Почему?». — «Отцы завещали так не делать. Я не знаю почему».
Сам процесс переезда сущностей между кластерами внутри называется «переездец».

Алексей Рыбак: Это классно.

Максим Барышников: Почему «переездец»? Потому что аккаунт в процессе ездит между разными дата-центрами.

Почему хотел рассказать про «отцы завещали»? Это был настолько устоявшийся термин, что когда один из этих самых отцов в каком-то левом совершенно code review оставил комментарий, это произвело просто фурор, когда он рассказал, почему он так говорил, почему это имело тогда смысл, и почему оно не имеет смысла сейчас.

Алексей Рыбак: Какие-нибудь самые крупные, или самые смешные, или несмешные фэйлы, которые случались, и что делали в будущем, чтобы их не происходило?

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

Фэйл с последствиями — это единственный раз, когда при мне откатывали продовую базу данных, и откатывали на час назад или около того. Единственный раз (по-моему, в 2016 году) мы серьезным образом из-за бага зацепили экономику игры. И тогда пришлось откатывать базу данных, чего не делали за всю мою историю до этого. Это серьезная процедура. Инженерно она очень легкая, но с точки зрения игроков это беспрецедентная штука.

Алексей Рыбак: Но это был останов, или это был хирургический откат?
Максим Барышников: Это был останов, это был откат на бэкап. И типа: «Ребята, а теперь начинаем всё сначала. Этого часа не было».

Алексей Рыбак: Слушай, а с точки зрения отката, я так понимаю, что у вас просто все состояния где-то хранятся, и вы в принципе имеете все процедуры достать какой-то условный снэпшот на утро на какой-то час, и перевосстановиться. Правильно?

Максим Барышников: Каждого конкретного пользователя мы можем так сделать на сколько-то дней назад. И можем целиком. У нас целиковые бэкапы и инкрементальные снэпшоты тоже есть.

Алексей Рыбак: Обычно, когда бэкап нужен, если ты не делаешь регулярных учений, ты такой: «Так, ладно. Вроде у меня бэкап есть. Ой, не тот бэкап. Слишком большая дельта. А надо еще сверху накатить вот это. Блин, не накатывается». То есть для того, чтобы этот пайплайн был абсолютно готов, что-то надо делать регулярно. Чтобы прямо четко, если произойдет какая-то ошибка, на момент последнего инкрементального бэкапа найти основной бэкап, поднять, поверх накатить всё остальное, и прямо с нуля всё поднять, чтобы всё заработало.

Максим Барышников: Ты совершенно прав. Даже если ты уверен, что ты делаешь бэкапы, но не проверяешь, что они хорошие, то ты сильно рискуешь. Мы поступили тут немного хитрее. Не то, чтобы прямо специально, просто так хорошо совпало. Мы используем эти бэкапы для других целей, производственных, регулярных.

Алексей Рыбак: Вы уверены в их консистентности и работоспособности?

Максим Барышников: Да.

Алексей Рыбак: Понятно.

Максим Барышников: Я хотел рассказать еще одну маленькую байку. В профиле игрока есть бинарь, в котором мы сохраняем определенные данные. Понятно, у тебя под поля есть определенное количество байтиков. Оно всё размечено у тебя красиво. И один раз мы допустили ошибку, из-за которой при увеличении определенного довольно редкого счетчика на определенной технике, он начинал перетирать байты из соседнего счетчика, из-за чего начиналась совершенно невообразимая свистопляска. И оно успело попортить нам данные, потому что счетик медленно растущий, мы это сразу не заметили.

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

Алексей Рыбак: Понятно. Друзья, думаю, мы на этом нашу официальную часть закончим. Вопросов больше не поступало. И начнем нашу неофициальную часть. Стриминг я выключу для того, чтобы неофициальная часть была, может быть, более неофициальной.

Максим Барышников: У меня чай давно кончился. Я уже другой стакан взял.

Алексей Рыбак: Сейчас я останавливаю стрим. Спасибо всем большое, что были с нами. Пишите, пожалуйста, в комментариях, что вам понравилось, что не понравилось, что спросить в следующий раз. И до новых встреч!

Полную видео версию беседы можно посмотреть на YouTube, секция про управление начинается на 58-й минуте. А ещё 24-го апреля будет новый (онлайн-митап MySQL@Scale)[https://feedme.timepad.ru/event/1296478/] c экспертами из Avito, Badoo, ECOMMPAY и ProxySQL и на него ещё есть места.

© Habrahabr.ru