11 хороших книг для начинающих и middle-разработчиков: от простого к сложному
Подборка универсальных книг, которые помогут джунам разобраться в профессии и процессах в командах разработки.
Иллюстрация: Катя Павловская для Skillbox Media
Никита Сироткин
Исполнительный директор IT-компании VVDEV. Языки программирования: JavaScript, Java, Objective-C, C и C++.
В эту подборку я включил универсальные книги — они не привязаны к конкретным языкам программирования, но помогают разобраться в основах Computer Science, алгоритмах и процессах, научиться писать хороший код, грамотно проектировать программы и стать хорошим программистом. Книги расположены по принципу «от простого к сложному».
Теоретический минимум по Computer Science. Всё, что нужно программисту и разработчику
Владстон Феррейра Фило
Перевод с английского: А. Логунов.
Издательство: «Питер». 2018 год, 224 с.
Оригинальное название: Computer Science Distilled. Learn the Art of Solving Computational Problems.
Зачем читать. В книге сжато и интересно подаются основы алгоритмов, структур данных, устройства компьютера и другие темы, относящиеся к Computer Science.
До программирования автор доберётся только в восьмой главе: в ней будут изложены базовые вещи — например, переменные и парадигмы. Примеры алгоритмов с функциями, циклами, условиями и операторами присваивания записаны псевдокодом, который всем понятен.
Книгу стоит прочитать, если у вас нет профильного образования или вы ещё учитесь. Если вы получили профильное образование, читать будет ещё легче, а вы, возможно, наконец-то разберётесь в темах, которые были непонятны во время обучения. Книга также подойдёт, если вы хотите вспомнить основы или убедиться, что не всё из университетской программы забыто.
На что обратить внимание. Вторая глава знакомит с вычислительной сложностью алгоритмов. Вы узнаете, чем различаются алгоритмы с единичной, логарифмической, квадратичной, линейной и экспоненциальной сложностью.
В третьей главе доходчиво рассказано, что такое итерация и рекурсия, а также в каких случаях они используются. Полезно при выборе оптимального метода решения задачи.
Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих
Адитья Бхаргава
Перевод с английского: Е. Матвеев.
Издательство: «Питер». 2019 год, 288 с.
Оригинальное название: Grokking Algorithms. An Illustrated Guide For Programmers And Other Curiours People.
Зачем читать. Это ещё одна книга, которая помогает подготовиться к профессии программиста. В первой части даются довольно примитивные алгоритмы, зато к последним главам автор начинает решать действительно интересные задачи.
Цель книги — познакомить с разными типами алгоритмов. Автор не разбирает очень сложные задачи, но предлагает материалы для глубокого изучения каждой темы.
Книга подойдёт школьникам старших классов или студентам, знакомящимся с алгоритмами. Сильный фундамент на материалах из этой книги построить не получится, но она может дать хороший старт в разработке.
Что особенно полезно:
- описание динамического программирования;
- алгоритмы поиска, хеширования и машинного обучения — расширяют кругозор, в какой бы нише вы ни планировали работать.
Идеальный программист. Как стать профессионалом разработки ПО
Роберт Мартин
Перевод с английского: Е. Матвеев.
Издательство: «Питер». 2022 год, 224 с.
Оригинальное название: The Clean Coder. A Code of Conduct for Professional Programmers.
Зачем читать. Это книга не про код. В ней идёт речь о полезных софт-скиллах, которые нужны в самом начале пути разработчика: о процессе написания кода, отношении к задачам, TDD (разработке через тестирование). Читается легко — это не техническая литература. Книга будет полезна разработчикам, проджект-менеджерам и даже дизайнерам.
Несколько полезных советов из книги:
- Учите других. Пользу от преподавания получает и сам преподаватель — это лучший способ отшлифовать свои навыки.
- Не отправляйте сырой код на тестирование. Проверяя работу подрядчиков, я иногда наблюдаю, как на тестирование отправляется дефектный код. При этом сам разработчик прекрасно знает, что не выполнил задачу. Такой подход приводит к срыву дедлайнов. Вы должны быть уверены в своём коде. Если вы не успеваете сделать задачу в срок, лучше предупредить коллег, чем впустую тратить время команды тестировщиков.
- Учитесь писать гибкий код. Для этого изучите паттерны проектирования и стройте на их основе программную архитектуру.
- Не останавливайтесь в обучении. Программирование не стоит на месте — постоянно появляются новые инструменты, новые паттерны. Если не следить за новостями, можно вернуться в каменный век за год.
- Не пишите код ночью. Почему программисты любят работать ночью? Первое — ничто не отвлекает. Но никто не мешает организовать комфортную работу в дневное время. Переводите телефон в режим полёта, работайте там, где не шумно. Второе — работая ночью, вы выглядите героем: «Я просидел всю ночь и написал много кода». Учтите — ночной код будет часто возвращаться на доработку: днём, когда вы планируете поспать, вам придётся отвечать коллегам в мессенджерах, а вечером вы уже не можете задавать коллегам вопросы по задачам.
Чистый код
Роберт Мартин
Перевод с английского: Е. Матвеев.
Издательство: «Питер». 2018 год, 464 с.
Оригинальное название: Clean Code. A Handbook of Agile Software Craftsmanship.
Зачем читать. Автор рассказывает о простых, но важных вещах, повторяя их так часто, что вы наверняка их запомните. Я бы отнёс эту книгу к уровню «начинающий-продолжающий разработчик». Возможно, стоит прочитать её на старте, а потом снова пролистать через год. Правила, описываемые в книге, я бы отнёс скорее к советам: местами их важность преувеличена. Но их цель — обратить внимание на проблему.
Программист-прагматик. Путь от подмастерья к мастеру
Эндрю Хант и Дэвид Томас
Перевод с английского: И. Берштейн.
Издательство: «Диалектика»,.2020 год, 368 с.
Оригинальное название: The Pragmatic Programmer.
Зачем читать. Книга сильно устарела в части примеров и технических моментов, однако для построения рабочих процессов она до сих пор актуальна. Автор разбирает фундаментальные подходы к разработке, тестированию и взаимодействию внутри команды. Книга будет полезна и для проект-менеджеров.
Приёмы объектно-ориентированного проектирования
Эрих Гамма, Ричард Хелм, Джон Влиссидес, Ральф Джонсон
Перевод с английского: А. Слинкин.
Издательство: «Питер». 2019 год, 368 с.
Оригинальное название: Design Patterns. Elements of Reusable Object-Oriented Software.
Зачем читать. Я бы назвал эту книгу справочником — её не нужно читать от начала до конца. Информация здесь сухая и техническая, примеры кода — на C++ и SmallTalk. Вам достаточно ознакомиться с содержанием, чтобы при необходимости найти нужный материал. Потом, в процессе разработки, вы сможете возвращаться к книге и уже на практике проверять паттерны, которые решают ваши проблемы.
Паттерны удобно разбиты на категории, так что не придётся постоянно пролистывать всю книгу.
Погружение в паттерны проектирования
Александр Швец
Интернет-издание. 2018 год, 406 с.
Зачем читать. Это ещё одна книга по паттернам проектирования. В ней разбираются 22 классических паттерна. Можно читать последовательно, от края до края, а можно выборочно — только нужные главы. В конце каждой главы описываются отношения текущего паттерна с остальными представленными в книге. Примеры паттернов приводятся на псевдокоде, без привязки к языку программирования, а значит, будут понятны разработчикам с разными стеками.
Чистая архитектура
Роберт Мартин
Перевод с английского: А. Киселёв.
Издательство: «Питер». 2022 год, 352 с.
Оригинальное название: Clean Architecture. A Craftsman’s Guide to Software Structure and Design.
Зачем читать. Если вы хотите найти книгу, которую точно будете читать ближайшие полгода, то вот она. В качестве бонуса вы получите чёткое понимание того, что до этого вы писали код совершенно неправильно. К сожалению, это не значит, что теперь вы умеете писать правильно, но, возможно, архитектура следующего вашего проекта уже станет похожа на кривенькую хибару, а не на шалаш из палок в кустах около дома.
Совершенный код
Стив Макконнелл
Перевод с английского: В. Вшивцев.
Издательство: «Русская редакция». 2019 год, 896 с.
Оригинальное название: Code Complete.
Зачем читать. Я читал эту книгу семь лет назад и прочитал снова, прежде чем писать рецензию. Книгу дополнили: добавили новые инструменты и сотни новых примеров.
Считаю «Совершенный код» одним из лучших практических руководств по программированию. Вы узнаете, как кодить с максимальной продуктивностью, избегать ошибок и правильно работать в команде, а также научитесь использовать конструирование и совершенствовать свой код.
Мифический человеко-месяц, или Как создаются программные системы
Фредерик Брукс
Перевод с английского: А. Логунов.
Издательство: «Питер». 2021 год, 368 с.
Оригинальное название: The Mythical Man-Month. Essays on Software Engineering.
Зачем читать: Вы проект-менеджер и хотите нанять ещё двух разработчиков, чтобы закрыть проект вдвое быстрее? Рекомендую отложить ружьё, из которого вы целитесь себе в ногу, и прочитать эту книгу.
Я бы выделил несколько важных моментов из книги, о которых все забывают:
- Нельзя добавлять новых людей в проект на поздней стадии разработки. Это сильно замедлит процесс.
- Проекты чаще всего проваливаются из-за неправильного распределения времени и задач между сотрудниками. В книге приводится формула расчёта минимального времени выполнения и даются советы, как оптимизировать процесс разработки без срыва сроков.
- Обычно код не готовят к повторному использованию сразу — и это может сильно усложнить работу в будущем.
Мама, я тимлид
Марина Перескокова
Издательство: «Альпина Паблишер». 2021 год, 228 с.
Зачем читать. Это книга не про разработку, а скорее про менеджмент и управление командой. Даже если вы не метите в тимлиды, эта книга будет полезна, чтобы понять, с какими проблемами сталкивается ваш руководитель ежедневно и как помогать ему по мере возможностей.
Книга расскажет:
- как быть руководителем проекта;
- как общаться с начальством;
- как вести команду к результату.