К основному содержимому
к дискуссии
Конспект дискуссии2024Fellow

System Design Interview: казнить нельзя помиловать

Дискуссия на HighLoad++ о том, где ставить запятую в «казнить нельзя помиловать». Александр Поломодов защищает System Design интервью как способ масштабировать найм в компании с тысячами инженеров, Филипп Дельгядо считает нынешний формат бесполезным и вредным. Ведущий держит спор, опрашивает зал, в середине устраивает голосование шариками, а итоги показывает в финале.

HighLoad++ 20247 минут

Конспект сокращён относительно полной дискуссии; примеры и оценки передают опыт и позиции участников.

Основная линия материала
01

Доставка еды и обвинение в карго-культе

По оценке ведущего, в зале около 70% бэкенд-разработчиков и 25–30% тимлидов и техлидов; фронтендеров и DevOps-инженеров заметно меньше.

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

Потом «нужно вставлять Kafka», потому что в чек-листе напишут, что кандидат её не использовал, даже если она не к месту; следом новомодные Grafana и поисковый движок — тоже для галочки. В финале ему сообщают, что он ничего не сказал про нотификации, мониторинг и алгоритмы: «У меня было 45 минут» — «Целых 45 минут».

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

Александр отвечает, что карго-культом можно сделать любой инструмент — как в истории про поклонение самолётам; вопрос в том, понимаешь ли ты границы применимости.

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

Восемь лет назад Александр проводил полуторачасовые интервью с мини-задачками из домена команды — придумывать их было легко, потому что он был в контексте.

02

Пустота под кубиками и цена галочек

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

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

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

Филипп бьёт по связи формата с практикой. Сам разговор о нефункциональных требованиях небольшого продукта может занять два часа, но получение неизвестных пока ответов растягивает работу на две-три недели; на интервью, по его оценке, теряется 90% требований, остальные собираются неверно — и балл всё равно ставят.

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

Формат ещё и сужает ответы: задача из книжки спокойно ложится в один PostgreSQL, а экзотическую базу средний интервьюер не оценит — нельзя рассказывать то, чего он не поймёт. Отсюда главный тезис: подмена архитектуры квадратиками со стрелочками и надписью «кэш» портит индустрию, тогда как архитекторы в основном пишут тексты. Александр называет заявление громким, но соглашается, что сам против «рисователей стрелочек».

03

Что вместо: опыт, критика, инциденты

Альтернатива Филиппа — пятнадцать минут разговора про реальный опыт: почему у вас микросервисы? «Дают масштабирование» — а был ли у вас такой масштаб? «Дают скорость поставки» — а поставка ускорилась? Сказать «давайте возьмём Kafka» по книжке легко, реальный опыт требует осознания.

Участник из зала, пробовавший нанимать через разговор об опыте, называет две проблемы: оценка чудовищно субъективна и почти не передаётся другому интервьюеру, а сдержанный инженер про свой опыт просто ничего не расскажет — «выкатили в прод, всё запустилось, что тут рассказывать».

В ответ Филипп описывает обучение интервьюеров через совместную работу: берёшь другого лида, проводишь интервью вместе с ним и объясняешь, зачем задан каждый вопрос. Сам формат он предлагает менять примерно раз в год, чтобы подготовка не подменяла проверяемый навык.

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

Александр описывает дополнительную секцию для senior+: час по резюме и кейсам про архитектуру и процессы разработки; её добавили после историй, когда человек собирал все галочки, а потом разрушал команду или бесконечно держал задачу готовой на 90%. Александр оговаривается: эта секция помогает заметить часть рисков, но не устраняет их все.

Для SRE проектирование с нуля давало мало нового, и уместнее оказалась симуляция инцидента: «ты уехал в отпуск без ноутбука, дежурит джун, всё горит».

Про маленькие компании Филипп замечает, что проектирования там много, а оценивать первого технического лидера некому: победившее решение одной архитектурной каты, если он правильно помнит, тянуло где-то на 50 тысяч долларов в месяц в Amazon — там, где тысячу клиентов дешевле обслужил бы человек с Excel.

В финале Александр говорит, что не видит другого способа выводить сотни инженеров в месяц, а Филипп — что формат ищет под фонарём и решает задачу одинаковости, а не качества: «алгоритмы бессмысленны, но безвредны». Итоги голосования шариками ведущий показал залу, а интерпретацию оставил за скобками.

Выводы

Что стоит унести с собой

  1. 01Секция выросла из масштаба: когда в месяц закрываются сотни позиций, проверку навыков приходится делить между интервьюерами, иначе несколько сильнейших инженеров просто не выдержат потока.
  2. 02Сигнал даёт не набор технологий на схеме, а то, использует ли кандидат ответы на свои же вопросы: спросить про нагрузку и ничего не изменить в дизайне не считается.
  3. 03Главная претензия Филиппа — не бесполезность, а вред: подготовка по книжкам учит делить DAU на число секунд в сутках и подменять архитектуру квадратиками с надписью «кэш».
  4. 04Среди предложенных альтернатив — поиск ошибок в чужом дизайне, разбор интервью, тесты к архитектуре и симуляция инцидента. Филипп предлагает проверять такие форматы и регулярно менять их, чтобы подготовка не подменяла навык.

Источники