Всем привет, этот пост посвящен двум популярным книгам по подготовке к собеседованию по системному проектированию. Я купил и прочитал обе, поэтому могу дать обзор и подготовить резюме для тех, кто заинтересован. Хотя я рекомендую прочитать обе книги. (Запомнить все из них — задача сверхчеловеческая, но достаточно будет, если вы уловите такие концепции, как «Приблизительные оценки» или «Конкурентность»).
Прежде всего, интервью по системному дизайну в настоящее время входит в обычную программу технических собеседований, даже если вы работаете в отрасли всего 2–3 года. Индустрии всегда нужны специалисты, которые могут реализовать систему в цифровом формате в виде кода, а также те, кто может каким-то образом повлиять на компанию и принести ей пользу, предлагая высокоуровневые решения.
Нижеприведенная информация отражает мою точку зрения и мои личные впечатления. Возможно, они вас расстроят, но я считаю необходимым предоставить вам честную информацию и поделиться своими ощущениями.
Я не хочу утомлять вас чтением и хочу в краткой форме представить вам обзор книг. Приступим.
System Design. Подготовка к сложному интервью

Дает вам базовые знания о числах, которые необходимо знать или которые можно принимать по умолчанию.
Представляет общее понимание масштабирования реальных систем, как это делается в ранних главах книги.
Дали вам ориентиры по подходу и поведению, которые помогут минимизировать объём работ при переходе к вопросам по проектированию систем на интервью.
Есть некоторые части, где не стали слишком глубоко погружаться в детали. Но я понимаю, что материал рассчитан на тех, кто только начинает готовиться к интервью по проектированию систем.
Даже если вы знаете, как решить некоторые из задач, они покажут вам больше возможностей для применения альтернативных решений в вашем проекте.
Примеры, которые мне понравились => Проектирование ограничителя трафика, Согласованное хеширование, Проектирование системы уведомлений, Проектирование YouTube
System Design II. Распределенные системы. Подготовка к сложному интервью

Более продвинута в контексте проектирования архитектуры решений.
Также не хватает вводной части о том, как последовательно продвигаться в масштабировании системы, но после прочтения нескольких глав можно уловить общий паттерн.
Даёт больше ор��ентиров по допущениям для тех, кому нужно быстрее оценивать пропускную способность и ёмкость системы.
Автор выбрал типичные проблемы, с которыми вы сталкиваетесь в повседневной работе как инженер-программист, а не просто популярные вопросы. Но поскольку именно такие задачи приходится решать в реальном мире, они вскоре станут более распространёнными.
Основное внимание уделяется детальной проработке технической реализации: обозначаются темы, на которых стоит сосредоточиться, но не конкретные технологии, которые нужно использовать. В некоторых случаях всё же требуется применение конкретных технологий, но таких примеров немного.
Каково происхождение этих технологий?
Какова их история, как мы решали эти задачи в прошлом?
Почему они появились?
Какие проблемы призваны решать эти технологии?
Зачем они нужны в архитектуре системы?
Лучшая и самая уникальная часть этой книги. ❤️
Примеры, которые мне понравились => Распределенная очередь сообщений, Система бронирования отелей, Платежная система, Цифровой кошелек
В чем разница между двумя книгами?
Прежде чем перейти к различиям, стоит отметить, что обе книги очень помогли мне в подготовке к собеседованию, в том числе и вне времени подготовки. Они подсказали мне какие темы нужно изучить глубже и где искать дополнительные источники. Они просто готовят вас к тому, чтобы стать лучшим инженером-программистом. Теперь перейдем к различиям.
Синяя обложка. Я бы назвал её «Это только начало игры». Я ставлю ей оценку 4/5. Почему 4? С моей точки зрения, и я уже упоминал это ранее, «в некоторых частях не было глубокого погружения в детали». В ряде случаев не до конца понятно, почему именно эти решения нужно использовать в проектировании, и всё ещё приходится дополнительно разбираться, чтобы обосновать архитектурные решения. Тем не менее, я всё равно рекомендую её к прочтению.
Зелёная обложка. Это улучшенная версия после получения обратной связи и анализа точек роста первого тома, поэтому второй том вышел с содержанием гораздо более высокого качества. Он объёмнее и даёт более чёткие рекомендации о том, какие вопросы стоит задавать интервьюерам. При этом серия книг выстроена как единое целое, и некоторые темы встречаются только в первом томе. Это значит, что если вы не читали первый том, вы можете упустить часть концепций, хотя их, конечно, можно найти и в интернете. В целом я ставлю 5/5. Возможно, вы просто переусердствуете с подготовкой к среднему уровню, но кто знает? Результат вы всё равно не можете полностью контролировать. И напоследок: на мой взгляд, эта книга готовит даже к более высокому уровню, я почувствовал это после прочтения всей серии. (Честно говоря, более чем по половине концепций из книги мне пришлось дополнительно искать информацию в интернете, чтобы изучить их подробнее, и это просто уничтожает 🤣)
Собеседования по системному проектированию не имеют «правильных» или «неправильных» решений, но вы обязаны уметь объяснить, почему выбрали именно эти технологии в своём проекте решения. Всё это - коммуникация между вами и интервьюерами.
Если вам демонстрируют неловкие моменты, это красный флаг 🚩.
Если вы не минимизировали область проектирования, это возможный красный флаг 🚩.
Если вы не подготовились и опираетесь только на свой прошлый опыт — вы сами себя взорвали 🤯💣💥.
Приобрести книги, упомянутые в посте, можно на нашем сайте:
«System Design. Подготовка к сложному интервью» купить.
«System Design II. Распределенные системы. Подготовка к сложному интервью» купить.
Для Хаброжителей скидка 35% по купону — System Design
