Книг по программированию выходит много. Очень много. От тонких брошюр до кирпичей на тысячу страниц. Но время - штука конечная. Поэтому я отобрал 10 книг, которые реально повлияли на моё мышление как разработчика. Тут нет случайных названий. Только то, что проверено годами и тысячами программистов.
Эту книгу стоит прочитать каждому, кто пишет код дольше месяца. Макконнелл не учит конкретному языку. Он учит думать о качестве кода. О том, как называть переменные, как структурировать функции, когда использовать комментарии, а когда переписать код.
Вот простой пример из книги. Сравните два куска кода:
// Плохо
if (x > 0 && x < 100) {
y = y + 1;
}
// Хорошо
if (isScoreInRange(x)) {
incrementPlayerScore(y);
}
Разница очевидна. Второй вариант читается как обычный английский текст. Никаких комментариев не нужно.
Дядя Боб - человек, который знает о чистоте кода всё. Книга жёсткая. Местами спорная. Но она заставляет задуматься: "А не пишу ли я фигню?".
Главное правило из книги: функция должна делать только одно. Если в функции больше 20 строк - скорее всего, её можно разбить. Если есть вложенные if-ы - переделывайте.
Книга 1999 года, но до сих пор актуальна. Тут про ремесло программиста. Про то, как не выгореть, как оценивать сроки, как работать с чужим кодом. Совет "Не повторяйся" (DRY) - оттуда. Совет "Оставляй лагерь чище, чем ты его застал" - тоже оттуда.
Если "Кормен" (книга про алгоритмы) вас пугает - начните с этой. Тут нет сухой математики. Только картинки, примеры на Python и объяснения для тех, кто не спал на уроках информатики.
Вот как Бхаргава объясняет бинарный поиск:
def binary_search(list, item):
low = 0
high = len(list) - 1
while low <= high:
mid = (low + high) // 2
guess = list[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
Просто и понятно. Для бинарного поиска массив должен быть отсортирован. Иначе - никак.
Да, книга на Java. Но алгоритмы от языка не зависят. Седжвик даёт глубокое понимание. Без воды. Сложные вещи объясняет через простые примеры. Если хотите реально разобраться в сортировках, графах и деревьях - берите.
Эту книгу ругают. Говорят, что шаблоны - это костыли для языков, где не хватает возможностей. Отчасти это правда. Но знать их нужно. Хотя бы чтобы понимать, о чём говорят коллеги.
Паттерн "Одиночка" (Singleton) - самый спорный. Его часто используют неправильно. Но в некоторых случаях он нужен. Например, для подключения к базе данных:
class DatabaseConnection:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance.connection = create_connection()
return cls._instance
Только не злоупотребляйте. Одиночка создаёт скрытые зависимости. Это зло.
Ещё один дядя Боб. Тут про то, как строить систему так, чтобы её можно было менять. Про границы между слоями, про зависимость от абстракций, а не от конкретных реализаций.
Главная идея: бизнес-логика не должна зависеть от базы данных, фреймворка или UI. Они должны зависеть от неё.
Книга для тех, кто готовится к собеседованиям. Тут разбор типовых задач, советы по резюме, стратегии прохождения интервью. Автор работала в Google, Apple, Microsoft - знает, о чём говорит.
Книга про продуктивность. Не про то, как работать больше, а про то, как делать меньше, но важное. Дорофеев объясняет, как устроено внимание, почему многозадачность - миф и как не прокрастинировать.
Чем меньше у вас открытых задач, тем быстрее вы их завершаете. Это не магия, это психология.
Замыкает список снова дядя Боб. Тут про профессиональную этику. Про то, что программист должен уметь сказать "нет", если сроки нереальны. Про тестирование. Про ответственность за свой код.
Читать все 10 книг подряд не нужно. Начните с "Чистого кода" и "Программиста-прагматика". Потом "Грокаем алгоритмы". А дальше - по ситуации. Если застряли на собеседованиях - "Карьера программиста". Если тошнит от своего кода - "Совершенный код".
Главное - не просто читать, а применять. Открыли книгу, прочитали главу, пошли переписывать свой проект. Иначе это просто развлечение.
Комментариев пока нет