Всем привет, этот пост посвящен двум популярным книгам по подготовке к собеседованию по системному проектированию. Я купил и прочитал обе, поэтому могу дать обзор и подготовить резюме для тех, кто заинтересован. Хотя я рекомендую прочитать обе книги. (Запомнить все из них — задача сверхчеловеческая, но достаточно будет, если вы уловите такие концепции, как «Приблизительные оценки» или «Конкурентность»).

Прежде всего, интервью по системному дизайну в настоящее время входит в обычную программу технических собеседований, даже если вы работаете в отрасли всего 2–3 года. Индустрии всегда нужны специалисты, которые могут реализовать систему в цифровом формате в виде кода, а также те, кто может каким-то образом повлиять на компанию и принести ей пользу, предлагая высокоуровневые решения.

Нижеприведенная информация отражает мою точку зрения и мои личные впечатления. Возможно, они вас расстроят, но я считаю необходимым предоставить вам честную информацию и поделиться своими ощущениями.

Я не хочу утомлять вас чтением и хочу в краткой форме представить вам обзор книг. Приступим.

System Design. Подготовка к сложному интервью

  • Дает вам базовые знания о числах, которые необходимо знать или которые можно принимать по умолчанию.

  • Представляет общее понимание масштабирования реальных систем, как это делается в ранних главах книги.

  • Дали вам ориентиры по подходу и поведению, которые помогут минимизировать объём работ при переходе к вопросам по проектированию систем на интервью.

  • Есть некоторые части, где не стали слишком глубоко погружаться в детали. Но я понимаю, что материал рассчитан на тех, кто только начинает готовиться к интервью по проектированию систем.

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

  • Примеры, которые мне понравились =>  Проектирование ограничителя трафика, Согласованное хеширование, Проектирование системы уведомлений, Проектирование YouTube

System Design II. Распределенные системы. Подготовка к сложному интервью

  • Более продвинута в контексте проектирования архитектуры решений.

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

  • Даёт больше ор��ентиров по допущениям для тех, кому нужно быстрее оценивать пропускную способность и ёмкость системы.

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

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

  • Каково происхождение этих технологий?

    Какова их история, как мы решали эти задачи в прошлом?

    Почему они появились?

    Какие проблемы призваны решать эти технологии?

    Зачем они нужны в архитектуре системы?

    Лучшая и самая уникальная часть этой книги. ❤️

  • Примеры, которые мне понравились  => Распределенная очередь сообщений, Система бронирования отелей, Платежная система, Цифровой кошелек

В чем разница между двумя книгами?

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

  • Синяя обложка. Я бы назвал её «Это только начало игры». Я ставлю ей оценку 4/5. Почему 4? С моей точки зрения, и я уже упоминал это ранее, «в некоторых частях не было глубокого погружения в детали». В ряде случаев не до конца понятно, почему именно эти решения нужно использовать в проектировании, и всё ещё приходится дополнительно разбираться, чтобы обосновать архитектурные решения. Тем не менее, я всё равно рекомендую её к прочтению.

  • Зелёная обложка. Это улучшенная версия после получения обратной связи и анализа точек роста первого тома, поэтому второй том вышел с содержанием гораздо более высокого качества. Он объёмнее и даёт более чёткие рекомендации о том, какие вопросы стоит задавать интервьюерам. При этом серия книг выстроена как единое целое, и некоторые темы встречаются только в первом томе. Это значит, что если вы не читали первый том, вы можете упустить часть концепций, хотя их, конечно, можно найти и в интернете. В целом я ставлю 5/5. Возможно, вы просто переусердствуете с подготовкой к среднему уровню, но кто знает? Результат вы всё равно не можете полностью контролировать. И напоследок: на мой взгляд, эта книга готовит даже к более высокому уровню, я почувствовал это после прочтения всей серии. (Честно говоря, более чем по половине концепций из книги мне пришлось дополнительно искать информацию в интернете, чтобы изучить их подробнее, и это просто уничтожает 🤣)

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

Если вам демонстрируют неловкие моменты, это красный флаг 🚩.
Если вы не минимизировали область проектирования, это возможный красный флаг 🚩.
Если вы не подготовились и опираетесь только на свой прошлый опыт — вы сами себя взорвали 🤯💣💥.

Приобрести книги, упомянутые в посте, можно на нашем сайте:

«System Design. Подготовка к сложному интервью» купить.

«System Design II. Распределенные системы. Подготовка к сложному интервью» купить.

Для Хаброжителей скидка 35% по купону — System Design