Эту книгу можно прочитать выборочно как дополнение к более цельным материалам по системному дизайну. Для первого знакомства с дизайн-интервью я бы её не советовал: автор пытается охватить слишком много тем, поэтому большинству из них не хватает глубины.
Мне книга была интересна с позиции интервьюера. System Design — одна из самых сложных секций в инженерной воронке найма: здесь нет готовых ответов, а проверять нужно не запоминание шаблонов, а умение мыслить в масштабе больших систем.
О чём книга
Книга разделена на две части. Примерно треть посвящена ходу собеседования и базовым техникам проектирования: сбору требований, анализу подводных камней, масштабированию и другим основам. Остальные две трети занимают разборы Flickr, CDN, Airbnb и других систем.
Из книги можно узнать:
- как обычно проходит интервью по системному дизайну;
- как собирать функциональные и нефункциональные требования;
- как учитывать нагрузку и масштабирование;
- как проектировать типовые системы вроде мессенджера или новостной ленты.
Три идеи из книги
- Продумайте и обсудите снижение функциональности системы при сбоях. На интервью обычно проектируется высоконагруженная система, поэтому нужно учитывать ошибки и отказы её компонентов.
- Не забудьте про логирование, мониторинг и алертинг. Делать сложную архитектуру без наблюдаемости — медленное самоубийство. Необязательно проектировать каждую деталь: достаточно обозначить решение и углубиться, если интервьюер попросит.
- Не стесняйтесь спрашивать: «Есть ли другие пользовательские требования?» Интервьюер выступает в роли заказчика и помогает собрать требования. Из-за нервов легко упустить небольшое, но значимое ограничение.
Что мне не понравилось
Если охарактеризовать книгу одним словом, я назвал бы её вторичной. В первой трети у автора смешались ход интервью, техники проектирования и масштабирования, карьерные советы и множество мелких тем. В итоге текст получился поверхностным и нигде не углубился достаточно сильно.
Разборы систем понравились ещё меньше. Эта часть показалась мне перегруженной ненужными деталями, а некоторые решения вызвали вопросы. Большинство кейсов не привносят ничего нового: мессенджер и ленту Twitter уже только ленивый не проектировал.
Интересно было прочитать два менее типовых примера: сервис пакетного аудита баз данных и дашборд для топ-10 товаров Amazon. Ещё в книге много отсылок к другим материалам, на которые опирался автор.
Стоит ли читать
Если вы ещё ничего не читали по системному дизайну, лучше начать с книги Алекса Сюя: она понятнее и лучше структурирована. «Пережить интервью» стоит использовать как дополнение и выбирать только те главы, которые закрывают конкретный пробел в подготовке.
