За шесть лет в Mindbox Ростик из студента-разработчика, пилящего кастомный продукт, стал ключевым сотрудником компании, отвечающим за переезд на новый стек.
21 июля 2021
«Если бы компания сейчас была такой же, как шесть лет назад, я бы уже уволился», — архитектор Mindbox Ростислав Листеренко
За шесть лет в Mindbox Ростик из студента-разработчика, пилящего кастомный продукт, стал ключевым сотрудником компании, отвечающим за переезд на новый стек. Поговорили с ним о развитии, найме и о том, почему быть в роли догоняющего — круто.
ДОСЬЕ ГЕРОЯ: РОСТИСЛАВ ЛИСТЕРЕНКО
Ростислав (Ростик) Листеренко, архитектор платформы клиентских данных Mindbox
Год рождения: 1994
Образование: МГТУ им. Н. Э. Баумана, факультет «Информатика и системы управления»
Стаж в компании: 6 лет
Ростик, ты пришел в Mindbox, еще когда учился в Бауманке. Это первая твоя работа?
Нет, до этого я работал в компании, выполнявшей госзаказы. После второго курса пришел туда на практику, через пару месяцев получил оффер на парт-тайм и остался на два с половиной года. Но свои первые честно заработанные деньги я получил от Microsoft: переводил для них какую-то документацию во время учебы.
Почему ты решил стать программистом?
Я не помню, на самом деле. Компьютер у меня появился, когда я перешел в пятый класс. В то время все работало гораздо хуже, чем сейчас. И как-то оно зацепилось — начал разбираться, что, почему и как работает. В основном, конечно, чинил что-либо, что до этого было сломано. И потом пришло понимание, что ни в чем другом я себя особо не вижу.
Тогда я ничего не знал про разработку и уж точно не формулировал, что хочу писать enterprise в Mindbox для маркетинга. Просто было ощущение, что через какое-то время без компьютера ничего работать не будет. Уже тогда на кассах в магазинах стояло что-то похожее на компьютеры — куда уж более приземленное применение. Плюс я всегда был тихим интровертным ребенком, поэтому перспектива сидеть за уютным столиком в офисе и чтобы никто не трогал — это лучшее, что могло быть.
Как ты попал в Mindbox?
Илья Васютович, с которым я вместе учился, скинул мне вакансию и сказал: «Тут нормальные пацаны, сходи на собеседование». А я знаю требовательность Ильи — если он говорит, что хорошие пацаны, то, скорее всего, точно хорошие. И мое впечатление на собеседовании полностью соответствовало этому. В тот раз я для порядка сходил на несколько собеседований в другие компании, куда позвали. Там уровень был гораздо хуже, где-то вообще не спрашивали про разработку. А тут полтора часа четыре человека задавали всякие каверзные вопросы и пытались меня вывести на чистую воду.
По собеседованию я понял, что плохие разработчики сюда просто не пройдут. И средний уровень здесь гораздо выше, чем в прошлой компании, и амбиций побольше. Это значит, что мне будет чему поучиться.
Какое первое впечатление о компании у тебя сложилось?
Когда я пришел собеседоваться, меня посадили в переговорку и закрыли. Дали листок бумаги с заданием и сказали: пиши. И я пишу-пишу. Потом поднимаю взгляд на стену — и там нарисован комикс. Написано: «Ребята, давайте не будем наступать в горшки с говном». Следующий кадр — толпа людей, все стоят в этих горшках и говорят: «Вообще-то мы всегда наступали и нормально было», «А мне нравится наступать в горшки с говном», «Нормально все, ты неправ, уходи». И я подумал, что, наверное, тут весело. И в принципе не ошибся.
Тот самый комикс про горшки с говном
За шесть лет, что ты в Mindbox, компания сильно выросла: было около 45 человек, сейчас под 170. Нет ощущения, что все стало строже, бюрократичнее?
Где-то стало более бюрократично, где-то, наоборот, менее. Например, раньше, если хочешь поболеть, то ок, два дня ладно, потом бери справку. Не дай бог, просрочишь на один день. Короче, все как положено. А потом Саша [CEO Mindbox Александр Горник] такой: а вообще-то можно этим не заниматься. И все. И это не единичный случай. Форма для заведения отпуска — это же минимум бюрократии. Она тоже появилась не сразу, где-то в 2016 году. Так что где-то становится проще и удобнее, лучше.
А где-то хуже?
Не то чтобы хуже — по-другому. Другой путь, если говорить конкретно про работу разработчика. Сейчас фичи добавляются не по желанию клиента: клиентов больше и нельзя просто так взять и сделать, как раньше.
По-другому взаимодействуем при разработке. У нас еще декларируется общее владение кодом, но со временем становится все больше людей, которые какие-то участки нашей системы просто не знают и никогда не узнают, потому что это им не понадобится.
То есть, когда я приходил, сложно было найти разработчика, который проработал испытательный и не понимает, как работает пайплайн и как код оказывается на продакшене. Сейчас из-за того, что пайплайн усложнился и разработчиков стало больше, кто-то не знает всех деталей. С одной стороны, это ограничивает круг людей, с которыми ты можешь обсудить какую-то конкретную проблему, а с другой — позволяет людям не заниматься тем, чем им не хочется заниматься.
Но ты как архитектор знаешь все? У тебя есть общая картина в голове?
У меня есть общая техническая картина в голове: хорошо знаю, что как работает, приезжает на продакшен, куда клиент уходит, как сервисы взаимодействуют между собой. Но я не знаю каких-то более близких к бизнесу вещей. Для меня лояльность — темный лес. Наверное, самые далекие от меня области продукта — это как раз лояльность и машинное обучение.
За что у нас отвечает архитектор?
У нас архитектор — это человек, которого шпыняет CTO, если продукт, доверенный этому человеку, ведет себя плохо. Архитектор — это про ответственность за продукт. За то, что он выдерживает SLA, который мы гарантируем клиенту, масштабируется без дефектов и тратит на свое существование меньше денег, чем приносит. И также от архитектора ожидают, что он проактивно замечает проблемы и предпринимает действия для их решения. На минорные проблемы сам заводит карточки и координирует команду. А если происходит что-то совсем масштабное и нужно инвестировать много ресурса, чтобы справиться, то архитектор эскалирует до того, как это станет нерешаемым.
Чем ты занимался, когда только пришел в Mindbox?
Сначала меня посадили писать кастомный импорт клиентов L’Oréal, но в той команде я продержался месяц. На самом деле я приуныл, когда пришел. Люди, которые были прикольными на собеседовании, куда-то растворились. Особенно тяжело было в первые дни, когда ты никого не знаешь и пытаешься дойти до своего рабочего места и не потеряться по дороге. Саша до сих пор считает, что тогда я его шантажировал: пришел в кабинет и сказал, что ухожу. На самом деле истина где-то посередине, но в любом случае разговор закончился переходом в другую команду, где я проработал три года.
В 2015 году, когда Ростик пришел в Mindbox, у нас было три команды разработки. В 2021-м их уже 10
Разница между командами была настолько принципиальной?
Да, в новой команде был другой общий настрой. Это сложно сформулировать — там было принято сомневаться во всем подряд в продуктивном смысле и стараться найти максимально удачное решение. То есть не раз было такое, что есть задача сделать что-то, а потом выяснялось, что этого не надо делать, нужно сделать все по-другому. И получалось лучше.
Вспомнишь свой первый инцидент?
Про первый инцидент я даже не сразу понял, что он мой. Я сделал какой-то тикет ровно так, как его сформулировали. Там было что-то про то, чтобы запретить выдачу призов вот этим пацанам. Я и запретил. И все новогодние праздники выдача призов крупнейшей FMCG-компании полностью не работала, так как из-за этого что-то сломалось в другом месте и никто не заметил. Скорее всего, задача была поставлена так, что опытный человек понял бы ее правильно. А я понял так, как понял. Онбординга в те времена еще не существовало. И выплывали сильнейшие.
Сейчас с онбордингом уже по-другому?
У нас в разработке есть серия искусственных задач, которые делаются с настоящим продуктом, но не приезжают на продакшен, никем не используются. Они нужны, чтобы на конкретном примере рассказать про концепции нашего продукта, про конкретные инструменты и решения, которыми мы пользуемся. С этим, очевидно, нельзя ознакомиться в другом месте, поэтому мы в какой-то момент пришли к выводу, что проще пустить человека в песочницу на неделю.
Разработчики также проходят несколько курсов из менеджерского туториала, чтобы ознакомиться с доменом с точки зрения клиента. Это очень полезно: проще работать с разработчиком, который понимает, что делает и для кого.
И еще онбординг заключается в том, что ты выдаешь чуть более подробные задачи, чем обычно, и смотришь, как человек с ними справляется. Соответственно, помогаешь. Сначала активно, а потом меньше, меньше. И человек становится совсем самостоятельным.
С тобой было так же? Движение в сторону архитектора было плавным?
Да, когда я перешел во вторую команду, первое, что стало заметно, — разнообразие задач. Было ощущение, что ребята занимаются вообще всем в разработке. Так что я брал первую попавшуюся задачу на доске, которая висела. А иногда бывает — работаешь и видишь, где лажа. Ты можешь завести задачу починить лажу, а можешь расписать, как ее можно починить. И со временем второго становится больше, чем первого.
Потом появилась идея, что, раз мы выпускаем продукт, должен быть архитектор. И как-то так получилось, что я формально стал архитектором уведомлений. Я их делал — нормально пошло. Это мало на что влияло в тот момент. Я, грубо говоря, ревьюил ребят из другой команды. Очень сложно было понять, полезно это или нет. Мне всегда гораздо больше нравилось самому что-то делать, чем пытаться организовать других. Поэтому тут было некоторое противоречие, и в принципе оно никуда не делось. Сейчас на код у меня уходит не меньше 40% времени. Меньше я на самом деле и морально не готов брать. Но вроде нет необходимости.
Ростик предпочитает работать в офисе: сам факт перемещения в пространстве помогает ему переключиться
Если говорить про главное улучшение в разработке за эти годы, что бы ты назвал?
Зарплаты выросли. Это на самом деле важно как точка соприкосновения с рынком вне компании: заставляет каждый раз задумываться о том, что происходит у тебя, что происходит у других. Например, в какой-то момент мы поняли, что технологически отстали и надо инвестировать в новый стек. Мы всегда говорили, что хотим нанимать топовых людей и давать им топовые условия для работы — тогда будет топовый продукт. А нанимать хороших разработчиков на устаревший стек сложно — у них же амбиции и все дела. И прямо сейчас мы занимаемся обновлением платформы ядра нашего продукта.
Как получилось, что ты стал активно участвовать в технических собеседованиях?
У меня выстроилась логическая цепочка, что я должен нанять человека в команду, потому что была недоукомплектованность. А это значило, что мне нужно включиться в наем. И с тех пор я в найме.
Расскажи, кого мы сейчас нанимаем.
На самом деле у нас такой список требований и ожиданий, что вслух произнесешь — потом стыдно станет, потому что таких людей не бывает. Плюс мы сильно отсеиваем по техническим навыкам: у нас довольно серьезные собеседования.
То есть мы ищем только опытных разработчиков?
Нет, необязательно. Мы не нанимаем мидлов — тех, которые про сидеть на попе ровно. У нас есть Школа стажеров. Туда мы берем потенциально крутых ребят, подготавливаем немного в тепличных условиях по нашему продукту, по процессам. И очень хорошо видно, кто у нас приживется, кто нет, просто по тому, как ребята взаимодействуют между собой, как они реагируют, как разбираются со сложностями, которые встречаются. Стажировка длится три месяца. За это время мы понимаем, что человек перспективный, заинтересован работать и развиваться. И что ему, скорее всего, тут будет хорошо. И вот таких мы берем в штат. Это одна ветка.
А вторая — мы ищем уже состоявшихся специалистов с релевантным для нас опытом. То есть это опыт в продакшене с активно используемыми проектами, опыт принятия важных решений. Например, у нас есть вопросы про то, что конкретно человек сделал, чтобы повысить надежность продукта, починить какую-то конкретную проблему. И если у такого человека есть желание, то после испытательного он может развиваться в сторону архитектора.
На что мы смотрим, кроме технических навыков?
На умение продуктивно работать в команде. Немного общее понятие, но имеется в виду, что у нас нет задач, которые можно сделать в одно лицо. И очень важно, чтобы люди находили общий язык, понимали, что они делают и зачем, проактивно решали проблемы, которые возникают по дороге. То есть тех, кто склонен к итальянским забастовкам, у нас не поймут. Если ты эскалируешь проблемы, внимательно прислушиваешься к тому, что тебе советуют, и работу работаешь, то все будет хорошо.
В нашей разработке есть принципиальные отличия от других компаний?
Мне сложно говорить, потому что, кроме Mindbox, я почти нигде не работал. Наверное, что нас отличает — много разработчиков работает над одним и тем же куском кода. Мне кажется, в других компаниях ты реже пересекаешься с большим количеством разработчиков, у тебя гораздо меньше поводов спорить, продавать какие-то решения.
Плюс не все работают над продуктом с доступом 24/7. Это накладывает определенные ограничения на то, какие изменения и как ты можешь вносить в продукт и насколько быстро они влияют на клиентов. Это ценный навык, но по-своему тяжелый и скучный.
Ты как-то сказал, что разработчикам полезно менять работу каждые 5–6 лет. Почему ты еще с нами?
Во-первых, мне нравятся люди, с которыми я работаю. И это ключевое. К сожалению, со временем стало меньше людей, которые заведомо опытнее, чем я, к которым можно обратиться с проблемой, и они точно тебе помогут.
А во-вторых, компания не стоит на месте. И я все равно в роли догоняющего, потому что задачи становятся сложнее, штат больше, амбиции круче. И благодаря этому нет застоя. Грубо говоря, если бы Mindbox сейчас был таким же, как шесть лет назад, когда я пришел, то я, скорее всего, уже уволился бы. Просто потому что в какой-то момент неразвивающуюся компанию можно перерасти — ты понимаешь, что новому уже не научишься. Мы сейчас далеко не в той ситуации.
Как ты прокачиваешь свои навыки?
Решаю следующую проблему, которая передо мной стоит. Это не самый ожидаемый ответ. У нас непростые задачи, и пока ты над ними думаешь, прокачиваешься. Плюс читаю новые статьи, обзорную документацию. Я не хожу на тренинги, практики, конференции. Всегда было неинтересно.
ЧТО ПОЧИТАТЬ: СОВЕТЫ РОСТИКА
Книги:
Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin
The Clean Coder: A Code of Conduct for Professional Programmers, Robert C. Martin
The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt, David Thomas
Refactoring: Improving the Design of Existing Code, Martin Fowler
Code Complete: A Practical Handbook of Software Construction, Steve McConnell
Блоги:
То есть ты пока не перерос Mindbox?
Нет, думаю, до этого далеко. Суть в том, что в растущей компании, а Mindbox растет, у тебя в любой момент могут возникнуть задачи и потребности, о которых ты до этого даже не знал.
Ты прямо поливаешь медом. А есть что-то, что тебя огорчает в Mindbox?
Прямо сейчас меня дико бесят новые названия переговорок.
Где вы их взяли? Это же планеты из «Звездных войн»?
Я не брал. И не все они из «Звездных войн». И даже те, что из «Звездных войн», — это абсолютно не для переговорок. Это была очень плохая идея. Я недоволен. Голосовал я не за них. При всей моей любви к научной и ненаучной фантастике. Всему свое место.
А если серьезно, что расстраивает в работе?
Расстраивает скорость изменений в разработке — очень маленькая. То есть никто не знает, как полагается, но точно хотелось бы быстрее. Настолько гигантский продукт, настолько много народа, что ты начинаешь что-то делать и эффект виден через год или больше. Или эффекта вообще нет, потому что по дороге что-то произошло.
Наверное, чаще всего в Mindbox я слышу разговоры про выгорание и переработки. Ты много работаешь?
Восемь-девять часов в день, иногда больше, иногда меньше. У меня нет ощущения, что я перерабатываю. Наверное, я мог бы себе позволить работать меньше, если бы сильно этого хотел. Вряд ли кто-то был бы против, но я не чувствую в этом потребности.
Просто новички часто жалуются, что у нас высокий ритм и довольно интенсивная работа. Ты это так не ощущаешь?
Я согласен. И считаю, что это круто.