Книги по программированию полезны, это в этом сомневаться не стоит, но есть большое НО. Поймите эту фразу буквально, полезны именно книги по программированию, а не по конструкциям какого-либо языка с вольным пересказом документации, или чего хуже, пересказом других пересказов. Часто книги «для начинающих» не учат программировать, а создаются лишь для заработка денег на желающих научиться этому делу.
Когда человек только начинает заниматься программированием, да и вообще любом новым для себя делом, ему сложно понять на что стоит тратить время при обучении, а от чего следует отказаться. Множество новичков тратят огромное количество времени на совсем ненужные книги, которые только отдаляют желаемый результат и охлаждают пыл обучения.
Как разобраться в изобилии книг? Для удобства я разделю все книги по разработке на 4 категории.
Макулатура
Первая категория — это откровенная макулатура, бессмысленные книги, которые созданы ради сбора денег с интересующихся программированием и IT тематикой в общем. На таких книгах собирают огромные кассы издатели и писатели. Я ничего не имею против заработка денег, флаг в руки этим людям. Но для потребителя это просто жвачка со вкусом еды вместо самой еды.
Примеров таких книг очень много, да и вычислить их не составляет труда. «Как» скоро покажу. Кто-то скажет, что не хорошо так говорить о книгах, о том что это большой интеллектуальный труд и все такое прочее. Но задумайтесь над тем какой вред наносят эти книги. Тысячи, а может быть и миллионы людей будут тратить своё драгоценное время жизни, скорее всего самое продуктивное время, на пустые книги, вместо чтения реально полезной литературы или занятий на практике. Эти люди могут вообще разочароваться в программировании не дочитав эту водянистую субстанцию до конца.
К сожалению большая часть книг относится именно к этой категории. Создаются подобные «шедевры» по одному сценарию, состоящему из двух этапов. Во-первых, нужно дать какое-нибудь простое и понятное наименование. К примеру, «Самоучитель по JavaScript», «Полное руководство по PHP», «Язык Java для чайников» и так далее. Во-вторых и последних, содержание. Берем какую-нибудь документацию, не особо утруждаемся и переписываем своими словами. Вся документация в любом случае в книгу не влезет, поэтому отрубаем процентов 50. На этом собственно все, осталось только написать введение и заключение, книга готова. Новички все равно не учтут того, что практически сразу публикации такие книжки становятся неактуальными, так как живые языки постоянно меняются. Также начинающие не знают, что документация в сравнении с самоучителями это польза в чистом виде, без всякой воды и домысливания со стороны писателя.
Страдает ли от этого покупатель книги? Да, страдает, но ничего не замечает, поэтому претензий обычно нет. От новичков нет претензий. Мнения опытных разработчиков не особо важны, так как они не целевая аудитория для продаж, поэтому все равно что они скажут. Будут против, да и ладно.
Вы можете скептически отнестись к данной наплевательской схеме написания книг, но она есть. В виде примера приведу забавный случай с книгами по PHP 6. Были выпущены самоучители по этой версии языка (пример). Такой версии языка нет, а книги есть. В реальности существует PHP 5-й версии, PHP 7-й версии, а 6-й нет.
6-ю версию PHP решили пропустить из-за сложности реализации желаемых функций и стали развивать 7-ю.
Писатели самоучителей штампуют книги наперед, и поэтому такие казусы могут происходить.
Тут сделаю важное замечание, среди этой категории книг есть исключения. Иногда подобные книги о языке выпускают авторы самого языка или технологии. Такую литературу, конечно же, стоит прочесть. Пример такой книги — «Язык программирования C» от Брайана Кернигана и Денниса Ритчи.
Когда писал эту заметку я думал над тем, стоит ли показать примеры книг из этой категории. Потом решил, что обижать конкретных авторов не хочу. Ведь они не совершают ничего плохого, просто зарабатывают на жизнь как могут, это не преступление. Да, они выпускают плохой продукт, местами вредный продукт, точно также как какие-нибудь чипсы или сухарики. Но никто же не ругает производителей этих чипсов и сухариков, хотите, покупайте, хотите нет.
Все эти книги легко заменяет документация по языкам, причем, документация содержит минимум «воды», а сама информация обычно актуальна. Где искать документацию? Гугл в помощь. «Официальная документация и НУЖНЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ». Если у языка есть официальная документация, то это самый простой и быстрый путь к его освоению. Выбор за вами.
Обзорные книги
Это книги без каких-либо глубоких и реально полезных знаний. Скажем так, в таких книгах вы найдете перечень того, что нужно изучать по интересующей вас теме. Эти книги расширяют кругозор. Приведу пример из своей практики, когда меня интересовала тема безопасности веб-сервисов, одной из прочитанных книг в то время, помимо статей и форумов, была книга Михаила Фленова «Web-сервер глазами Хакера«. В ней вы не найдете глубоких мыслей или супер секретов, но как обзор того куда стоит смотреть для достижения желаемых целей, книга подходит.
Эта книга была полезна в первые год-два после выхода, это где-то начало 2010-х годов, и на текущий момент её содержимое значительно устарело.
После прочтения подобной книги у вас появится фундамент от которого вы оттолкнетесь. Книги из данной категории совсем неплохие, так как показывают множество дорожек по которым стоит пройтись. Это бывает полезно.
Настоящие книги по программированию
Это полезные книги и таких очень мало. Нужно учесть тот факт, что такие книги обычно не предназначены для начинающих. Если вы не являетесь опытным разработчиком, хотя бы «мидлом» в распространенной классификации, то эти книги не для вас. Литература этой категории, что называется, «без картинок» и даже иногда без примеров кода программ. Чтобы понять мысли людей написавших эти книги и сделать для себя какие-то полезные выводы, нужно обладать хотя бы несколькими годами практического опыта. Что значит практического? Вам нужно писать код все это время, а не просто находиться в команде в качестве стажера или менеджера, обучение в колледже, университете или в одной из онлайн-школ не в счет. После нескольких лет решения реальных задач вам станет доступно их содержимое. Это книги самых разных тематик. Они толком не привязаны ни к одному языку программирования или технологии. В таких книгах в качестве языка для примеров часто используется Java/С++/C# или вообще псевдокод, хотя это не особо важно, так как советы из них применимы практически ко всем языкам. Что это за книги такие? Приведу несколько примеров книг из данной категории для разработчиков различного уровня.
Если вы знаете, что уже умеете программировать, решаете задачи, знаете как бороться с проблемами, но ваш код не особо красиво смотрится, то стоит обратить внимание на эти книги:
- Совершенный код. Стивен Макконнел.
- Чистый код. Создание, анализ и рефакторинг. Роберт Мартин.
- Рефакторинг. Улучшение существующего кода. Мартин Фаулер.
Если вы хотите повысить навыки владения успешными практиками ООП и шаблонами проектирования, то обратите внимание на эти две книги, причем с сохранением последовательности чтения:
- Паттерны проектирования. Фримен и Фримен.
На мой взгляд это одна из самых дружелюбных книг для разработчиков знакомящихся с шаблонами. Я начинал знакомство не с неё, но если можно было бы вернуться в прошлое и посоветовать книгу для начала работы с шаблонами, то 100% это была бы она. - Приемы объектно-ориентированного проектирования. Паттерны проектирования. Джонсон Ральф, Хелм Ричард, Влиссидес Джон, Гамма Эрих. Трудно найти профессионального разработчика не знакомого с этой книгой. Но читать её нужно уже подготовленным, знание и понимание ООП обязательно, причем на хорошем уровне. Не рекомендую эту книгу читать без четкого осознания преимуществ ООП.
Для опытных разработчиков, часто занимающихся проектированием, будет полезны вот такие книги (хотя опытные и так с ними хорошо знакомы 🙂 ):
- Чистая архитектура. Роберт Мартин. Книга совсем свежая, написана легко, а главное оттуда есть что почерпнуть.
- Предметно-ориентированное проектирование. Самое основное. Эрик Эванс.
- Реализация методов предметно-ориентированного проектирования. Вон Вернон.
Больше хороших материалов для опытных разработчиков можете найти тут itreviewchannel.ru/chto-pochitat-i-posmotret-po-arhitekture-po.
«Нудятина»
Переходим к последней категории. Зайду, что называются, со стороны к этой категории книг. В любой сфере человеческой жизни есть люди стоящие у истоков индустрии, внесшие в неё огромный вклад. Это уважаемые всеми специалисты, даже теми, кто вообще не понимает что они сделали. Примером таких людей может быть Дональд Кнут. Это ученый из нашей родной IT сферы, внесший огромный вклад в виде реально крутых книг и статей по информатике. Он воспитал тысячи учеников и вообще много сделал для информатики. Также имеет кучу всяких наград, даже наверное больше чем у Брежнева, только эти награды присвоены за дело, а не просто так «выпишу сам себе еще медальку». Из-за своего статуса, такие люди уже не могут позволить себе написать простенькую книгу, которую прочтет и поймет любой обыватель. Они пишут огромные и сложные для понимания фолианты, наподобие книги «Искусство программирования» в нескольких томах.
Такие книги являются сплавом второй категории, т.е. обзорных книг, с книгами из третьей категории, т.е. книг, которые дают глубокие знания. Плюс все это покрывается сложными терминами. Такие книги можно с легкостью назвать академическими, они используются для обучения в университетах. Но мне представляется, что эти книги вдумчиво стоит читать целиком как можно позже, после десяти, а то и двадцати лет практики. Обратите внимание, для галочки вы можете прочесть все фундаментальные книги по программированию, но будет ли от этого польза? Может да, я же склоняюсь к обратному мнению. В процессе становления следует быть более практичным, а к академическим знаниям подбираться к зрелости, если вообще это вам когда-нибудь будет нужно. На мой взгляд книгами наподобие «Искусство программирования» удобнее пользоваться как справочниками, нежели как учебниками.
- Искусство программирования. Том 1. Основные алгоритмы.
- Искусство программирования. Том 2. Получисленные алгоритмы.
- Искусство программирования. Том 3. Сортировка и поиск.
- Искусство программирования. Том 4, А. Комбинаторные алгоритмы. Часть 1.
Отойдем от категорий. Еще несколько заметок по книгам. От новичков можно услышать следующее, «почему опытные разработчики иногда советуют книги не по языкам на которых мы работаем?» Например, советуют книги по Java или C#, когда мы «кодим» на Ruby, PHP или Python. Повторю то, что говорил раньше. Не имеет практически никакого значения на каком языке приводятся примеры в книге, главное это смысл того, что там написано. Важны подходы к разработке, а не конкретный язык.
Чтение книг подразумевает наличие двух сторон, первая сторона — это, конечно же, сама книга. Вторая сторона, читатель. Если книга плоха, то процесс получения полезных знаний не произойдет в любом случае, но и если читатель, начинающий или просто слабый разработчик, то толка от чтения тоже не будет. Часто бывает так, что некоторые разработчики ругают вообще все книги по программированию без исключений. В большинстве случаев это говорит о недостатке опыта и объеме решенных задач. Так бывает когда программист засиделся на одном месте и решает из года в год, а то и из десятилетия в десятилетие одни и те же задачи, или задачи одного и того же класса, которые не требуют профессионального роста.
К книгам из третьей категории желательно возвращаться после нескольких лет практики, возможно, вы откроете для себя много нового, что раньше казалось недоступным или вообще не виделось на горизонте.
В завершении упомяну английский язык, он частенько бывает нужен для ознакомления с самыми свежими книгами по программированию. Дело в том, что на русский язык редко переводятся самые топовые книги быстро. Также переводятся далеко не все книги, т.к. издательства хотят быть уверены, что заработают и часто выбирают только «выстрелившие» в прокате книги. Поэтому перевод и публикация оттягиваются на годы, иногда даже на десятилетия. Например, книга «Предметно-ориентированное проектирование (DDD).», переведена на русский язык в начале 2010-х, а впервые опубликована в 2003. Такие ситуации не редки. IT сфера России, СНГ, да и вообще всего мира кроме, США и некоторых других англоязычных стран не является авангардом индустрии. Поэтому, чтобы быть в курсе всего самого свежего, необходимо знать тот язык, на котором создаётся большая часть современных веяний в разработке.
На этом все, всем спасибо за внимание. Читайте хорошие книги!
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.