Дизайн секции как проверка навыков проектирования систем на собеседованиях

Рис. “Заглавный слайд”
Рис. “Как выглядит найм”
  • computer science про структуры данных и алгоритмы
  • языковая секция, в которой проверяется знание основного языка и экосистемы вокруг него
  • дизайн распределенных систем
Рис. “Диаграмма уровня кандидата и стадий найма”
Рис. “Зачем мы проверяем навыки дизайна систем?”
  • Мы быстро растем по количеству клиентов — повышается нагрузка на существующие системы, они становятся все более высоконагруженными
  • У нас появляются новые бизнес-вертикали как внутри России, так и за ее пределами — нам нужны люди, которые могут брать на себя ответственность за части продукта, а не просто писать код по постановке спущенной сверху какими-то архитекторами
  • Наши продукты формируют экосистему — это значит, что они должны быть интегрированы между собой, причем интеграция не должна мешать продуктам развиваться с нужной скоростью
  • Вслед за ростом числа клиентов и продуктов у нас растет штат — это приводит к тому, что монолитные команды делятся на автономные stream-aligned команды, в которых требования к компетенциям участников возрастают
  • Мы идем в сторону децентрализации принятия архитектурных решений — инженеры в командах должны сами уметь в проектирование систем
Рис. “Чем это полезно кандидату”
  • Если дизайн-секция пройдена круто, то мы можем предложить более интересные условия как по уровню дохода, так и по уровню интересности задач
  • Если дизайн-секция пройдена нормально, то мы можем предложить кандидату команду, где он сможет расти на практических задачах под чутким присмотром коллег
  • Если дизайн-секция не пройдена, то мы даем кандидату персонализированную обратную связь, в которой отмечаем что стоит подтянуть и где это можно изучить
Рис. “Как выглядит дизайн секция”
Рис. “Основные шаги собеседования”
  • high availability (высокая доступность)
  • data consistency (консистентность данных)
  • high throughput
  • scalability
  • auditability
  • как приходит запрос в нашу систему
  • что мы с ним делаем — сохраняем в базу данных, закидываем в очередь, отправляем в /dev/null
  • и так далее
Рис. “Как выглядит типовая задача”
Рис. “Пример задачки”
Рис. “Как мы оцениваем кандидата”
Рис. “Критерии оценки кандидатов”
Рис. “Уровни оценки по критериям”
Рис. “Общая оценка кандидата на примере конкретного профиля”
  • Кандидат неплохо поработал над формализацией задачи, уточнил функциональные и нефункциональные требования и четко понял что от нашей системы ожидают
  • Дальше он правильно прочертил границы системы, планируемые сценарии, которые требуется реализовать, и зафиксировал API, которое мы предоставляем
  • После этого он хорошо понял и нарисовал процесс, включая happy path и exceptional flow, возможно с небольшими наводящими вопросами
  • Дальше он неплохо задизайнил концептуальную схему и определился с моделями данных, которые ходят и хранятся внутри системы
  • Вот с конкретными технологиями все пошло не так здорово — их он предложил, но взял просто из своего опыта без особого понимания насколько они хорошо подходят в контекст задачи
  • Соответственно вопросы нагрузки тоже зашли не очень хорошо — сам он их не собрал, поэтому пришлось подсказать кандидату, что их требуется учесть. Но их учет был скорее ради галочки, чем реально что-то предусматривал
  • Читаемость получившейся схемы вышла на уровне
  • А секция дополнительных вопросов была посвящена вопросам про широту знаний в технологиях. Но широта знаний — это не сильная сторона кандидата.
Рис. “Как научиться проектировать системы”

--

--

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Alexander Polomodov

Alexander Polomodov

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.