Книги — отличный источник знаний, это верно. Но как определить, где хорошая книга, а где не очень? Лучше всего воспользоваться рекомендательными сервисами либо же посмотреть обзоры на разные книги в сети. Именно поэтому сегодня публикуем подборку хороших изданий, которые в основном пригодятся начинающим разработчикам. Но, вероятно, они будут полезны и более опытным коллегам. Под катом — самое интересное!
Чистый код. Создание, анализ и рефакторинг
Автор: Роберт Мартин
Полезная для многих разработчиков книга, к которой относятся очень по-разному. Кто-то считает её идеальной, а кто-то утверждает, что её не стоит рекомендовать никому. Собственное мнение можно, вероятно, сформировать уже после её прочтения.
Как бы там ни было, основная её идея в том, что код должен быть чистым, а это значит, простым для понимания разработчиком и коллегами, понятным и поддающимся изменениям. Что касается других тем, которые затрагиваются в книге, то это ещё и:
организация кода
обработка ошибок
паттерны проектирования и тестирование
Достоинство книги в том, что она написана хорошим языком, в ней затрагиваются действительно важные темы. Если вы её ещё не читали, рекомендуем ознакомиться, лишней в библиотеке она точно не будет.
Мастер-класс. Совершенный код
Автор: Стив Макконнелл
Первое издание книги многие рекомендуют в качестве достойной альтернативы предыдущему изданию. Те, кто прочитал и первую, и вторую книги из подборки, считают, что вторая всё же полезнее. Но и здесь мнения разделяются.
Первое издание «Мастер-класса» вышло в 2008 году. Но не все знают, что есть и второе, которое в РФ появилось в 2017. Книга обновлена с учётом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования.
Изложенные в книге методики и стратегии помогут разработчику:
проектировать с минимальной сложностью и максимальной продуктивностью
извлекать выгоду из групповой разработки
применять методики защитного программирования, позволяющие избежать ошибок
совершенствовать свой код
применять методики конструирования, наиболее подходящие для вашего проекта
быстро и эффективно производить отладку
своевременно и быстро обнаруживать критические проблемы проекта, обеспечивать качество на всех его стадиях
Программист-прагматик. Путь от подмастерья к мастеру
Авторы: Эндрю Хант, Дэвид Томас
Книга, которая ценится многими разработчиками. Её достоинство в том, что она целиком и полностью посвящена лучшим практикам по разработке ПО. Главная идея авторов — помочь читателю стать программистом-прагматиком, который реально оценивает ситуацию. Также такой профессионал решает проблемы клиентов с максимальной для них пользой.
В книге — большое количество советов для разработчиков с различным опытом, включая как создание чистого эффективного кода, так и по жизненному циклу продукта. Также в книге рассказывается о важности налаживания взаимоотношений с коллегами и клиентами.
Это далеко не новая книга, некоторые технические моменты, упоминаемые в ней, устарели. Но вот базовые подходы к разработке, тестированию, взаимодействию внутри команды и с аудиторией продолжают оставаться актуальными и сейчас.
Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих
Автор: Адитья Бхаргава
Хорошая книга, которая помогает читателю войти в мир алгоритмов и структур данных. Она предназначена как раз для тех начинающих разработчиков, кто либо вообще не знаком с алгоритмами, либо знаком, но слабо.
В книге объясняются нюансы алгоритмов и структур данных, включая алгоритмы сортировок, поиска, алгоритмы работы с графами и т. п. Есть также немало иллюстраций и практических примеров, благодаря чему материал усваивается быстро. Для того чтобы получить и практический опыт, нужно выполнять упражнения, большинство которых хорошо продуманы.
Несмотря на то, что тема книги достаточно сложная, она написана понятным и простым языком. Так что у читателя не должно возникнуть сложностей при прочтении этого издания. К слову, в этой книге могут найти что-то полезное для себя и опытные разработчики. Судя по отзывам, она помогла многим специалистам.
Чистая архитектура. Искусство разработки программного обеспечения
Автор: Роберт Мартин
Ещё одна книга Р. Мартина, которую можно назвать продолжением «Чистого кода». Автор в этом издании рассказывает о роли архитектуры и проектирования в процессе разработки ПО. Кроме того, он также раскрывает нюансы паттернов проектирования архитектуры для решения общих проблем, которые возникают при разработке ПО.
Также есть ответы на часто возникающие у новичков вопросы об архитектуре и дизайне ПО, подробно рассказывается о принципах SOLID. Есть как теория, так и примеры, которые показываются по ходу изложения, помогая лучше понимать прочитанное.
Книга рекомендуется начинающим разработчикам, хотя она может пригодиться и их более опытным коллегам. Крайне полезной она будет для системных аналитиков, архитекторов и вообще разработчиков, которые хотят повысить свой профессиональный уровень.
Достоинство книги в том, что изложение простое, оно не перегружено специнформацией, нет и сложных примеров, доступных лишь избранным. К слову, книгу советуют не только разработчики для разработчиков, она может быть полезна всем, кто взаимодействует с группами разработки, для понимания происходящих процессов.
Эффективная работа с унаследованным кодом
Автор: Майкл Физерс
Эта книга посвящена принципам работы с legacy-кодом, которого особенно много в крупных компаниях. С ним чаще всего возникают проблемы, и чем больше времени проходит, тем серьёзнее эти проблемы становятся. В книге рассказывается о том, как относительно быстро и эффективно разобраться с legacy и поменять его.
В частности, автор рассказывает о важности автотестов, которые в этом случае применяются для того, чтобы убедиться в работоспособности уже изменённого кода. Солидная часть книги посвящена как раз советам по написанию тестов для legacy-кода.
В книге, кроме прочих, рассматриваются такие вопросы:
представление о механизмах внесения изменений в программное обеспечение, включая ввод новых свойств, устранение программных ошибок, улучшение структуры кода, оптимизацию производительности
перенос унаследованного кода в средства тестирования
написание тестов, препятствующих внесению новых ошибок в код
применение методов, подходящих для любого языка или платформы, с примерами кода на Java, C++, C и C#
точное выявление мест в коде, где требуется внести изменения
работа с унаследованным кодом, который не является объектно ориентированным
обращение с приложениями, у которых, на первый взгляд, нет вообще никакой структуры
Head first. Паттерны проектирования
Авторы: Эрик Фримен, Элизабет Робсон, Кэти Сьерра, Берт Бейтс
В книге сложные вещи рассказываются относительно простым языком. В частности, в ней говорится о наиболее важных паттернах проектирования. О том, когда и при каких условиях ими лучше воспользоваться, а также на каких принципах ООП они построены, где и как их нужно применять.
Материал подаётся в виде игровых задач. Выполняя их, читатель постепенно приходит к пониманию, как применять основные паттерны проектирования и достраивать архитектуру грамотно.
На этом пока всё. Но если у вас есть книга, которую вы можете порекомендовать разработчикам, расскажите о ней в комментариях, пожалуйста. Всем нам будет крайне интересно узнать что-то новое.
Комментарии (10)
easimonenko
28.06.2023 17:25+3Начинающим разработчикам рекомендую читать:
книги из своей области
книги из других областей
книги по математике и теоретической информатике
Например, пишите веб-сервисы на Node.js? Поинтересуйтесь, а как с этим обстоит в Erlang, Haskell или Go. Почитайте заодно про теорию вычислений, анализ алгоритмов и теорию языков программирования.
ЗЫ. В список выше я б добавил "Рефакторинг" Фаулера.
a-burlakov
28.06.2023 17:25+3Начинающим разработчикам будет очень непросто выполнить вашу рекомендацию. Когда человек только входит в программирование, ему нужно переварить очень много информации из разных областей (core своего языка, пару фреймворков, базы данных, алгоритмы и т.д.). Читать про другие языки (особенно функциональные) в это тяжелое время нецелесообразно.
А вот мозг мидла, который уже многое впитал и переварил, получит удовольствие и пользу от того, что развивается вширь. Потому что он хотя бы пару вещей узнал вглубь.easimonenko
28.06.2023 17:25Соглашусь с Вами, только кого Вы называете мидлом, я называю начинающим. :) Рука не поднимается называть разработчиком того, кто не знает язык на котором пишет, инструменты, базы данных и остальное, необходимое для выполнения работы разработчика.
ap1973
28.06.2023 17:25+1Основные концепции языков программирования. Р. У. Себеста.
easimonenko
28.06.2023 17:25Хорошая книга (была). На сегодня весьма устарела по содержанию. Есть более новое, но не переведённое, издание, где рассматриваются более актуальные языки программирования.
tania_012
28.06.2023 17:25Простите, но самые большие читатели сейчас это компьютеры. Я нисколько не иронизирую. Книги от профессионалов — это важнейшая пища для языковых моделей — существуют ли простые способы дать им почитать — вы не в курсе этого вопроса?
OlegZH
Осталось, только, узнать, какую книгу, действительно, было бы полезно написать для разработчика(ов)? И те книги, которые здесь упомянуты. Действительно ли они помогли? Было бы крайне интересно увидеть практические примеры было/стало.
sepetov
Попробую поделиться своим опытом, но почти без кода.
Первой из них я прочитал "Чистый код" Мартина. На тот момент я ещё не работал программистом и в анамнезе было всего пара программ (генератор контрольных работ, небольшая программа для одной компании ЖКХ и мелочи-мелочи). Их было тяжело поддерживать, а код - забористая наркомания. Из-за них я тогда решил, что не буду работать программистом. Книгу прочитал случайно и мнение поменял. Для меня в то время было открытием (ДА! Открытием!), что переменные можно называть не a, b, n1, x_, а осмысленно, причём более осмысленно, чем quantity, volume и т. п. Сейчас это уже кажется смешным :-) Всё, описанное в книге теперь кажется тривиальным, очевидным и банальным.
Далее я прочитал "Чистую архитектуру", но к тому моменту я уже работал программистом и не скажу, что она оказала революционное влияние на мою работу. Скорее устаканила и систематизировала то, с чем я уже столкнулся.
Ну а книга "Грокаем алгоритмы", на удивление, несмотря на свою детскость, буквально недавно принесла мне небольшую премию чуть меньше 80 тыс. Я умудрился успешно применить алгоритм k-ближайших соседей для оптимизации работы склада. Хотя сейчас понимаю, что симплекс-метод подошёл бы явно лучше. На тот момент я его не знал, а в книге он не описывался.
P. S. Паттерны проектирования только открыл, но как-то отложил до лучших времён.
panzerfaust
У меня та же история, что у @sepetov рядом. Прочитал "Чистый код" еще когда писал на FBD-языках для контроллеров Honeywell. С тех пор все эти приемы на кончиках пальцев, и я применяю их даже не задумываясь. И меня поражают разговоры типа "нам надо побыстрее поэтому мы гоним лютый говнокод". Для меня за много лет практики нет никакой проблемы писать и быстро и чисто.
Алгоритмы, паттерны - тоже мастхэв, т.к. это про ваши непосредственные скиллы. Программист, знающий классические алгоритмы CS и паттерны ООП/ФП/архитектуры всегда имеет козырь в рукаве.
"Чистая архитектура" выглядит как компиляция статей, выпущенная только чтобы денежку заработать. Поэтмоу не рекомендую.