Подготовка к System Design Interview

В последнее время этап System Design Interview становится все популярнее. Нередко этап SD назначают даже тем, кто идет на позицию мидла. Тут конечно, возникает закономерный вопрос: зачем и нафига? А это для того, что бы посмотреть уровень инженерной экспертизы, умение выбирать технологии под задачу и аргументировать решения.

Периодически провожу интервью-секцию по дизайну систем и у меня есть что сказать тем, кто к ней готовится.

Практика

  • Начните с проектирования систем, с которыми вы уже знакомы или работали. Анализируйте текущие решения и ищите возможности для оптимизации.

  • Проектируйте популярные сервисы, такие как YouTube, Tinder или шахматные платформы. После этого изучите реальные кейсы и подходы компаний, чтобы понять, насколько ваши идеи совпадают с реальностью.

  • Решайте архитектурные задачи (kata’s) на ресурсах типа Architectural Katas. Они предлагают отличные сценарии, хотя готовых ответов нет, что стимулирует самостоятельную работу над решением.

  • Участвуйте в описании архитектуры вашего проекта на работе. Пишите Architecture Decision Records (ADR), документируйте ключевые решения и обсуждайте их с командой.

Общение - Присоединяйтесь к сообществам и каналам, посвящённым системному дизайну. Вовлекайтесь в обсуждения, делитесь своими идеями и учитесь у других.

  • Узнайте, есть ли на вашей работе архитектурный комитет, и постарайтесь стать его участником. Это отличная возможность получить опыт работы с крупными проектами и принимать важные решения.

  • Обсуждайте архитектурные решения с вашим архитектором. Понимание принятых ранее решений поможет вам развить критическое мышление и научиться обосновывать свои предложения.

Теория

  • "Книга с кабанчиком" - Высоконагруженные приложения М. Клеппман

  • Посещайте ресурс ByteByteGo, где сложные концепции объясняются простыми словами и наглядными примерами.

  • Паттерны корпоративных приложений М. Фаулер

Интервью

  • Не бросайтесь сразу в проектирование. Внимательно прочитайте задачу, соберите требования, узнайте какая нагрузка предполагается.

  • Задавайте вопросы, уточняйте требования и скоуп задачи.

  • Регулярно сверяйте проектируемую архитектуру с требованиями. Оценивайте, насколько она соответствует функциональным и нефункциональным требованиям, учитывает ли исключительные случаи и потоки данных.

Вот и все, удачи на интервью! Пиши в комментариях, что можете посоветовать тому, кто готовится проходить интервью по system design. Делитесь своим опытом.

Подготовка к System Design Interview
В последнее время этап System Design Interview становится все популярнее. Нередко этап SD назначают даже тем, кто идет на позицию мидла | Сетка — социальная сеть от hh.ru