Зачем сеньорам на собеседованиях задают вопросы по дизайну систем
Веб-разработчик из Amazon рассказывает, как сеньору отвечать на вопросы про дизайн систем.
Geber86 / Getty Images
Виктор Карпов
эксперт
об авторе
Системный дизайн — не просто модный термин, и разработчиков не зря спрашивают о нём на собеседованиях. Компании хотят понять, строите ли вы сферических коней в вакууме или запускали в продакшн нагруженные системы. Им нужен специалист, который собирал метрики и сталкивался с проблемами масштабирования. Такой человек понимает, как его код будет работать на настоящем оборудовании.
В основе статьи — пост из Telegram-канала Виктора Карпова.
На собеседовании хотят оценить «сеньорность» кандидата, узнать, насколько прагматично человек подходит к дизайну систем. Чтобы ему не казалось, что сеть всегда надёжна на 100%, пакеты доставляются мгновенно, а все зависимости работают как часы. Этому учатся, когда запускают проекты и набивают шишки.
В дизайне всегда есть ограничения и компромиссы. Если мы строим систему бронирования отелей, то как получать данные? Будем парсить сайт Hilton, пока нас навсегда не заблокируют? Нет, нужны API. А они всегда возвращают актуальные данные? Из-за ограничений на число запросов мы не будем запрашивать их каждую секунду, и поэтому нужен кэш. А что будем делать, когда случится рассинхрон — человек комнату забронировал, а на самом деле она уже занята?
Другая классическая ошибка — думать, что отелей слишком много и MySQL не подойдёт в качестве базы данных. На самом деле в мире всего 700 тысяч гостиниц. И список такого объёма будет несложно шардировать — то есть разделить на несколько БД и просто направлять запросы к нужной базе.
Дальше вы с интервьюером продолжаете раскапывать такую задачу до конца. Факт остаётся фактом: компания оценивает сеньоров только через разговоры на свободную тему, а правильных ответов в них нет.