7 книг для бэкенд-разработчика про алгоритмы, SQL и архитектуру

За качество этих книг отвечают IТ-специалисты

7 книг для бэкенд-разработчика про алгоритмы, SQL и архитектуру

Бэкенд редко заканчивается на одном языке, фреймворке и паре эндпоинтов. В понедельник нужно понять, почему запрос стал медленнее на большом объёме данных. Во вторник – договориться с соседней командой о контракте API. В среду выясняется, что архитектура, которую год назад нарисовали на доске, больше не соответствует современным требованиям. А в пятницу приходит инцидент – и приходится разбираться не только с кодом, но и с тем, как команда реагирует на сбои.

Для каждой из этих задач можно найти статью, доклад или ответ в документации. Но в какой-то момент фрагментов становится слишком много. Хорошая техническая книга помогает собрать тему в последовательную картину: показывает связи между решениями, ограничения и цену ошибок, которые сначала кажутся безобидными.

Внутри — семь книг, которые до выхода в печать прошли вычитку в Read IT Club: сообществе действующих ИТ-специалистов, которые проверяют термины, код и схемы. Книги разбиты на четыре смысловых блока: алгоритмы и код, работа с данными, сервисы и контракты между командами, архитектура, которая выдерживает изменения и сбои.

ВАМ ПРИШЛО ПРИГЛАШЕНИЕ 💌
Приходите к нам в соцсети поделиться своим мнением и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте — шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!

Для технической книги важна не только тема, но и качество перевода. В одном из изданий на схеме встретился IP-адрес с октетом 783, а в IPv4 каждое из четырёх чисел лежит в диапазоне от 0 до 255. Такие вещи не всегда заметит литературный редактор – здесь нужен человек, который каждый день работает с технологией и может мысленно проверить схему, пример, задачу или восстановить логику процесса.

Так в КРОК появился Read IT Club – сообщество книжных дебагеров, которые рецензируют и переводят профессиональную ИТ-литературу. Его участники получают оригинальный текст вместе с переводом, сверяют терминологию, код, схемы, команды и примеры, а затем возвращают издательству замечания до того, как книга уйдёт в печать. 

Фундамент: алгоритмы и код

«Прикладные структуры данных и алгоритмы. Прокачиваем навыки»

Автор: Джей Венгроу

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

Автор объясняет Big O, разбирает массивы, хеш-таблицы, стеки, очереди, деревья и графы. В книге много упражнений и примеров на Python, JavaScript и Ruby. Код можно не просто прочитать, но и запустить: поменять входные данные, сравнить подходы, посмотреть, в какой момент решение начинает вести себя иначе.

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

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

«Простое объектно-ориентированное проектирование: чистый и гибкий код»

Автор: Маурисио Аниче

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

Книга не привязана к одному языку. Её идеи применимы в Java, C#, Python, Kotlin и других объектно-ориентированных стеках. В центре внимания находятся поддерживаемость, тестируемость и границы между модулями. Это особенно важно для сервисов, которые живут не один релиз: в долгом проекте код чаще читают, меняют и пытаются безопасно расширить, чем пишут с нуля.

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

Данные: не только написать запрос

«Антипаттерны SQL. Как избежать ловушек при работе с базами данных»

Автор: Билл Карвин

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

Билл Карвин рассматривает такие решения как антипаттерны: объясняет, почему к ним приходят, в какой момент они начинают мешать и какие альтернативы есть. В книге разобраны проектирование схем, ключи и связи, запросы, индексация, иерархические структуры и работа с переменными атрибутами.

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

«Нечёткое сопоставление данных в SQL. Качество данных и эффективность запросов»

Автор: Джим Лемер

В идеальной базе один и тот же клиент всегда записан одинаково. В реальной – у него могут отличаться регистр, контактные данные, порядок слов в названии компании. Попытка объединить такие данные простым JOIN обычно заканчивается либо потерянными совпадениями, либо ложными.

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

Книга пригодится не только дата-инженерам. Бэкенд-разработчик регулярно сталкивается с «грязными» входными данными: при миграции, интеграции с внешними системами, обработке анкет, адресов, каталогов и исторических записей. В книге отлично разобрана граница между тем, что разумно сделать внутри SQL, а что лучше вынести в приложение. Особенно полезна книга для задач, где данные проходят через ETL- и ELT-процессы: интеграции, миграции, объединения нескольких систем и подготовки витрин. Автор показывает, где обработку разумно оставить на стороне базы, а где лучше передать приложению. Этот выбор влияет и на скорость отдельного запроса, и на надежность системы, которую команде предстоит поддерживать годами.

Большая скидка — 16% на все курсы Практикума

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

До 30 сентября на все курсы действует скидка 16%, она применится автоматически при оплате. Потом цены станут выше, поэтому не откладывайте!

Если не хватает уверенности в асинхронном Python — берите «Мидл Python-разработчик»; сервис уже вырос из одного репозитория и пора аккуратно резать его на части, а не переписывать с нуля — «Микросервисная архитектура»; а если зона ответственности давно включает не только код, но и мониторинг с разбором инцидентов — «SRE — обеспечение надёжности систем».

Сервисы, контракты и изменения

«Микросервисы и API»

Автор: Хосе Аро Перальта

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

Хосе Аро Перальта рассматривает микросервисную архитектуру через API: как определять границы сервисов, проектировать контракты, выбирать способы взаимодействия, документировать интерфейсы и избегать чрезмерной связанности. В книге есть REST, GraphQL, паттерны интеграции и примеры на Python.

Книга подойдет как первая системная точка входа в проектирование микросервисов и API. Текст помогает разобраться, как формулировать контракты между сервисами, какие детали фиксировать в документации и почему простой API часто оказывается надежнее «гибкого», но запутанного.

«Эволюционная архитектура. Автоматизированное управление программным обеспечением»

Авторы: Нил Форд, Ребекка Парсонс, Патрик Куа

Архитектурная схема часто появляется в проекте как ответ на текущие ограничения. Потом меняется нагрузка, бизнес-модель, команда, внешние интеграции – а схема остаётся. В какой-то момент любое изменение начинает напоминать операцию на открытом сердце: затронул одну часть и не уверен, что не сломал пять других.

Нил Форд, Ребекка Парсонс и Патрик Куа предлагают смотреть на архитектуру как на то, что должно меняться управляемо. Центральная идея книги – эволюционная архитектура: система сохраняет важные характеристики и одновременно адаптируется к новым условиям. 

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

Эта книга особенно пригодится архитекторам и техлидам, которые работают с legacy-кодом и системами, живущими много лет. Вместо большой переделки, к которой команда никак не может приступить, авторы предлагают другой путь: двигаться небольшими шагами, автоматически проверять важные ограничения и не терять контроль над системой в процессе изменений.

Система, которая переживет сбой

«Безопасные и надёжные системы: лучшие практики проектирования, внедрения и обслуживания как в Google»

Авторы: Хизер Адкинс, Бетси Бейер, Пол Рид, Нил Ричард Мерфи, Шери Мейцен и другие инженеры Google

Инженеры Google предлагают свой взгляд на надежность, как на результат постоянной работы: проектирования, безопасного развертывания, мониторинга, разбора инцидентов и корректировки процессов.

Книга собрана из практик Google и отрасли. В ней есть безопасные API, защита от типовых уязвимостей, статический анализ, управление доступом, автоматизация, инциденты, метрики и организационные решения. Важный смысл издания в том, чтобы адаптировать принципы Google к масштабу своей команды.

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

Для бэкенд-разработчика эта книга становится особенно полезной в тот момент, когда зона ответственности перестаёт заканчиваться на merge request. Код существует внутри сервиса, сервис – внутри инфраструктуры, а инфраструктура – внутри процессов и решений людей. А надежность появляется именно на пересечении этих вещей.

Советуем дополнительно почитать

Что читать начинающему программисту — подборка из пяти книг для более раннего уровня, от Чарльза Петцольда до Дональда Кнута, если после этой статьи хочется начать с основ.

Собеседование на Python-разработчика: что спрашивают у джунов и мидлов — декораторы, генераторы, конкурентность, базы данных и системный дизайн: как знания из этих книг проверяют на практике.

PostgreSQL для собеседования: что учить Junior и Middle — вопросы про MVCC, оптимизацию запросов и EXPLAIN ANALYZE, которые логично продолжают темы книг Карвина и Лемера.

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

Код-ревью с ИИ: 20 промптов для ChatGPT и Claude — современный слой поверх тем из книг: как использовать нейросети для проверки безопасности, архитектуры и качества кода, о которых пишут авторы подборки.

Бонус для читателей

Если вам интересно погрузиться в мир IT и при этом немного сэкономить, держите наш промокод на курсы Практикума. Он даст вам скидку при оплате, поможет с льготной ипотекой или безлимитом на маркетплейсах. Ладно, окей, это просто скидка, без остального, но хорошая.

Вам может быть интересно
medium