Пользователь Max Stern
Max Stern
35 уровень
Нижний Новгород

Топ-10 книг по программированию для начинающих

Статья из группы Random
У меня есть коллега, который провел уйму технических собеседований для будущих “джавистов”. Однажды я спросил его, что влияет на решение взять на работу соискателя без реального опыта при выборе среди людей с приблизительно равными знаниями языка. Учитывая ситуацию на рынке, думаю, этот вопрос актуален для многих из вас. Топ-10 книг по программированию для начинающих - 1“Увлеченность технологиями, умение выбрать лучший вариант решения задачи, общая ИТ-эрудиция, понимание, что его ждет на работе” — таков был его ответ. Когда-то я описал в статье книги по программированию для начинающих, которые помогли мне изучить Java. В этой статье я остановлюсь на изданиях, которые помогут новичку-программисту обрести ту самую ИТ-эрудицию, понимание будущей работы, а также упростить задачу выбора лучшего решения. То есть получить работу и максимально хорошо проявить себя в ней с самого начала. Этот список я составлял согласно собственным предпочтениям, поэтому он может быть несколько субъективен. Здесь есть и классические учебники по программированию, для студентов, и настольные книги для программистов всех поколений.

Улучшаем код и продуктивность

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

Программист-прагматик. Путь от подмастерья к мастеру (Эндрю Хант, Дэвид Томас)

Оригинальное название: The Programmatic Programmer from From Journeyman to Master by Andrew Hunt and David Thomas Топ-10 книг по программированию для начинающих - 2Если вы не читали эту книгу, скорее всего, на форумах и специализированных ресурсах вы неоднократно встречали цитаты из неё. Образ программиста-прагматика в этой книге настолько чёткий и идеализированный, что… его впору назвать романтиком, как бы парадоксально это ни звучало. Тем не менее, советы из книги — дельные и актуальные невзирая на её солидный возраст. Не знаю, с чем сравнить “Программист-прагматик” в мире книги по программированию. Ближайшие аналоги вне этого мира — “Ветхий завет” или какая-нибудь супер-крутая поваренная книга. В “Прагматике” всё очень конкретно и максимально применимо на практике. Порой доходит до банальностей (например, в разделе про эффективное общение собраны элементарные правила делового этикета), но порой советы из книги незаменимы, особенно если у начинающего разработчика нет терпеливого и внимательного ментора. Таковы подсказки о повторяемости кода, создании прототипов, оценках. Или напоминание о невозможности создать совершенную программу. Есть там и полезные технические моменты, касающиеся, например, отладки кода, модульного тестирования или скорости алгоритмов...словом то, что нужно для подготовки к карьере программиста.

Рефакторинг Улучшение существующего кода (Мартин Фаулер)

Оригинальное название Refactoring: Improving the Design of Existing Code by Martin Fowler, with Kent Beck Топ-10 книг по программированию для начинающих - 3Если вы попросите кого-то перечислить лучшие книги по программированию всех времён, которые помогли сделать карьеру, кто-нибудь обязательно упомянет “Рефакторинг”. Кто-то может сказать, что эта книга устарела, и в чём-то будет прав. Она писалась в те времена, когда рефакторинг ещё не был повсеместным правилом, и некоторые истины в ней очевидны для начинающих программистов сегодняшнего дня. Тем не менее, приёмы рефакторинга расписаны в ней настолько хорошо и подробно (местами, я бы даже сказал, многословно), что каждый новичок найдет в ней что-то полезное. Несколько лет назад вышло обновленное издание книги, и там были добавлены новые приемы, что просто отлично. К тому же примеры в этой книге написаны на Java. Из недостатков отмечу разве что многословность. Тем не менее, книгу рекомендую.

Чистый код (Роберт Мартин)

Оригинальное название Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin Топ-10 книг по программированию для начинающих - 4Эта книга хоть и поновее предыдущей, но уже тоже стала классикой книг по программированию. “Дядя Боб”, как иногда кличут Роберта Мартина во всемирной программистской тусовке является одним из авторов манифеста Agile, а также некоторых принципов современного “чистого” программирования, например, SOLID. Одним из главных лейтмотивов книги можно считать...эмпатию или просто хорошее отношение ко всем, кому придется работать с вашим кодом (в том числе и вам самому в будущем). На этом простом принципе и здравом смысле строятся большинство правил “Чистого кода”. Большинство правил и советов кажутся очень правильными, из тех, которые интуитивно крутятся в голове, но четко сформулировать их непросто. Впрочем, с некоторыми мыслями автора можно поспорить: он порой чрезвычайно категоричен. Например, он пишет, что хороший код не нуждается в комментировании. Тем не менее книга обязательна к прочтению.

Эффективная работа с унаследованным кодом (Майкл Физерс)

Оригинальное название Working Effectively with Legacy Code by Michael Feathers Топ-10 книг по программированию для начинающих - 5К этому жизнь вас не готовила… Нет, правда: если вы только учитесь, то не представляете, какая это боль — работать с базами унаследованного кода, который, вероятно, писал ещё дедушка Билла Гейтса. Этот код часто написан совсем не так, как вы привыкли, а задокументирован настолько плохо, что иногда хочется найти его автора и... Увы: жизнь Java-программиста на больших проектах очень часто связана именно с поддержкой legacy. Эта книга может помочь с техническими аспектами работы с древним кодом, а кроме того, поможет вам смириться со своей участью. И да, я серьезно. Эта книга вам пригодится, если вы твердо нацелились на аутсорсинговую или продуктовую компанию с большими проектами.

Head First. Паттерны проектирования (Эрик Фримен, Берт Бейтс, Кэти Сьерра, Элизабет Робсон)

Оригинальное название Head First Design Patterns: A Brain-Friendly Guide by Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson Топ-10 книг по программированию для начинающих - 6Шаблоны проектирования, эти логичные правила хорошего тона, которые если их не изучать со временем и так придут в голову (или нет…) и которые превращаются буквально в суперсилу начинающего программиста, если к ним начать присматриваться как можно раньше. Да, на первых порах полезно покрутить относительно сложный персональный проект и попробовать разбить его на подзадачи самостоятельно… и в конце-концов найти тот самый паттерн. Однако когда речь идет о работе, времени на эксперименты не всегда хватает. Когда я попал на стажировку я очень мало знал о паттернах: учась на JavaRush я попросту проскочил все эти фабрики-синглтоны-инъекции-зависимости, сочтя, что и так разберусь, когда будет надо. Однако разобраться нужно было очень быстро, и именно книга “Head First. Паттерны проектирования” мне в этом помогла. Она легко написана, наполнена иллюстрациями и юмором… мне кажется что подача для темы “шаблоны проектирования” очень важна: ее можно подать оооочень скучно, а можно — так, как в Head First. Отличное дополнение к “Чистому коду” и/или “Рефакторингу”!

Архитектура компьютера и общие компьютерные науки

Насколько важно будущему программисту разбираться в архитектуре компьютера, знать, как устроены операционные системы, а как — базы данных? Не факт, что эти знания вам пригодятся в работе непосредственно. Но они определённо помогут вам продемонстрировать увлеченность ИТ-сферой и ИТ-эрудицию. И самое главное: если вы знаете, как всё устроено, это поможет вам решать задачи лучше. Инфа 100%. Так что вот вам ещё две книги в помощь.

Код (Чарльз Петцольд)

Оригинальное название Code: The Hidden Language of Computer Hardware and Software by Charles Petzold Топ-10 книг по программированию для начинающих - 7Первое издание “Код” увидело мир ещё в начале двухтысячных, но на деле она могла появиться и раньше, и позже — и была бы всё так же актуальна. Дело в том, что в этой книге работа компьютера объяснена на очень-очень низком уровне, начиная с того, как работают те самые нули и единицы, и самый первый технический пример — это схема фонарика, который можно считать простейшим однобитным компьютером… Нет, вы не думайте, что в книге все очень примитивно. На самом деле ровно наоборот… Там описаны схемы компьютеров, с командами, работа памяти и операционных систем по самой сути. Пожалуй, именно после её прочтения я понял, как работают компьютеры. Пускай архитектура и набор команд процессора меняется, а пропускная способность памяти увеличивается, по сути вычислительные машины работают ровно так же. Нужны ли эти знания Java-программисту? Непосредственно в работе они пригодятся очень немногим. Но косвенно мне в работе часто помогало то, что я понимал как всё это работает на самом деле.

Введение в компьютерные науки (Гленн Брукшир, Деннис Брилов)

Оригинальное название Computer Science: An Overview by Glen Brookshear and Dennis Brylow Топ-10 книг по программированию для начинающих - 8Эта книга попала ко мне ещё в университете, когда я изучал основы компьютерных наук. Только мне достался перевод шестого издания, а в настоящее время актуальным является 13-е издание. Книга представляет собой базовый курс по компьютерным наукам, который уже много лет читается в университетах США и других стран. Охват материала в ней очень широк: архитектура машин, системы счисления, обработка данных, операционные системы, принципы построения баз данных, структуры данных, файловые структуры и так далее. Не все разделы книги написаны одинаково хорошо. Например, некогда меня очень смутил разделы про методы проектирования и базы данных, а вот разделы про системы счисления, побитовые вычисления, архитектуру ПК и структурам данных мне очень зашли. Самое классное в книге — огромное количество упражнений с ключами. Такая книга, помимо студентов, пожалуй, нужна в первую очередь самоучкам без технического образования, чтобы восполнить пробелы и получить представление о компьютерных науках в целом.

Алгоритмы и структуры данных. Та ещё напасть!

Учитывая насколько высокоуровневым стало современное программирование, знание алгоритмов утратило первостепенную важность. Теперь достаточно применить нужную библиотеку и не ломать голову над тем, как лучше отсортировать массив. Однако ломать голову в работе вам всё-таки придётся, и не раз. Помните пункт “умение выбрать лучшее решение из возможных” из требований к начинающему программисту? Так вот, что бы кто ни говорил, я считаю хорошую алгоритмическую подготовку отличной прокачкой для поиска оптимальных решений. Посему, следующие две книги — о них. Об алгоритмах.

Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих Адитья Бхаргава

Оригинальное название: Grokking Algorithms: An illustrated guide for programmers and other curious people by Aditya Y. Bhargava Топ-10 книг по программированию для начинающих - 9Сам автор в начале книги пишет, что алгоритмы дались ему не сразу, и он старался писать “Грокаем алгоритмы” так, чтобы она читалась просто. Рассчитана она на начинающих программистов, то есть тех, кто может написать “hello, world” и знает, что такое int, строка, цикл, ветвление и массив. Ну и может вывести массив на экран. Требуемое знание математики — приблизительно на уровне 6-7 класса средней школы без изысков. И это — первый серьезный плюс книги. Она не пытается представить читателя студентом-математиком, как многие издания на тему. То есть если вы боитесь математики, алгоритмов, уже пытались учить последние и ничего не поняли, эта книга прекрасно подойдет для вашей реабилитации в собственных глазах. Второй позитивный момент — в книге рассмотрено то, что вполне может пригодиться на практике (понимание этого — уж точно). Начинается она с объяснения сути бинарного поиска и эффективности — буквально на пальцах и со множеством картинок. Третий — в книге много вопросов и упражнений (примеры кода — на Python, но это не так уж и важно). Момент который для кого-то может быть позитивным, а для кого-то — негативным: книга не строит из себя всеохватный справочник. Скажем, из общепринятых для изучения алгоритмов здесь есть только два — неэффективный алгоритм вставки и эффективный алгоритм быстрой сортировки. Почему бы автору не рассмотреть другие алгоритмы, скажем, пузырька или слияния — не знаю. На самом деле алгоритм слияния в книге упоминается, но кратко, без разбора и только в сравнении с быстрой сортировкой. С остальными темами всё точно так же. Есть основы, которые разобраны очень хорошо, но порой очень хочется более углубленного продолжения, а его попросту нет. Одним словом перед нами очень базовая книга, после которой, скорее всего, захочется найти книгу, в которой всё расписано посерьезнее. Например, следующую.

Алгоритмы на Java (Роберт Сэджвик, Кэвин Уэйн)

Оригинальное название: Algorithms by Robert Sedgewick and Kevin Wayne Топ-10 книг по программированию для начинающих - 10На самом деле эта книга может как очаровать, так и отпугнуть. Отпугнуть хотя бы своим объемом в...очень много страниц и определённой академичностью. Поэтому если в к ней, академичности, не склонны, или не чувствуете себя уверенно в математике ( старшие классы, простейшие элементы высшей математики для инженеров), то с этой книги лучше не начинать. Математических терминов там не так уж и много, но сам подход предполагает такое мышление. А вот после предыдущей книги — почему бы и нет. Она даст ориентир. Первая глава местами — обобщение знаний по Java и определение некоторых структур данных. Её лучше читать выборочно, а вот вторую и третью главу не помешает изучить достаточно подробно. Остальные — также полны интересной и основательной информации о графах и строках. Я бы сказал, такие вещи ОЧЕНЬ помогают в формировании программистского мышления. Касательно изложения — чувствуется, что автор — преподаватель, но привык работать с людьми по большей мере заинтересованными и подготовленными. Так что наберитесь терпения и читайте. А также решайте задачи, их тут хватает. Кстати, на Coursera вы можете найти курс по алгоритмам, созданный авторами книги.

Знай свой фреймворк

И, напоследок еще одна книга. И снова — полезная.

Spring в действии (Крейг Уоллс)

Оригинальное название: Spring in Action by Craig Walls Топ-10 книг по программированию для начинающих - 11Очень известная книга с не менее известной обложкой с “мужиком в юбке”, который на самом деле не в юбке. Откровенно говоря, изучение Spring по одной только книге — очень непростая задача, даже если стараться сразу всё пробовать на практике. Кстати, понять, как это сделать после прочтения той или иной главы бывает крайне непросто. Я работал с этой книгой когда попал на стажировку в компанию, и вот при таком использовании она очень помогает. Мало того, я даже сегодня, уже работая программистом, постоянно к ней возвращаюсь. Короче говоря, получить общее представление о главном джавовом фреймворке с её помощью можно.
Комментарии (1)
Чтобы просмотреть все комментарии или оставить свой, перейдите в полную версию
Justinian 41 уровень, Mega City One
15 мая 2020

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

Some comments are necessary or beneficial.
Твоя позиция, что не бывает полезных или необходимых комментариев? :) Анкл Боб сформулировал СОЛИД как единую концепцию, сформулировал набор правил, которые определяют вектор развития инженерной разработки. В своей книге он приводит конкретные примеры и конкретные ситуации и показывает почему это плохо. Показывает исключения. Да, в целом правило звучит однозначно, хороший код не нуждается в комментировании и это действительно так. Но с любого правила есть свои исключения. Если мы в собственном саду видим яблоко, то мы его можем сорвать и скушать. И я не вижу здесь повода для того чтобы говорить что врачи-гигиенисты и инфекционисты слишком категоричны в своих высказываниях относительно правил "перед едой нужно мыть руки", "нужно мыть/промывать продукты питания" и тд. Мы должны быть гибкими и учитывать контекст, почему в одних случаев орел пишется с маленькой буквы, а в другой Орел с большой. Почему когда есть абсолютная моральная догма в обществе - помоги другому, мы на улице услышим хриплый голос парнишки в абибасе с темного подъезда "эй, мужик помоги, скажи сколько времени и дай сигаретку, иди сюда" то мы не пойдем и не поможем. И не скажем сколько времени. Есть разные уровни контекста, именно поэтому я и советую всем читать эту книгу, поскольку она показывает конкретные как ситуации когда это плохо,так и показывает что есть ситуации, когда это вполне допустимо. Но это уже так к слову, статья крутая.