Книги — отличный источник знаний, это верно. Но как определить, где хорошая книга, а где не очень? Лучше всего воспользоваться рекомендательными сервисами либо же посмотреть обзоры на разные книги в сети. Именно поэтому сегодня публикуем подборку хороших изданий, которые в основном пригодятся начинающим разработчикам. Но, вероятно, они будут полезны и более опытным коллегам. Под катом — самое интересное!

Чистый код. Создание, анализ и рефакторинг

Автор: Роберт Мартин

Полезная для многих разработчиков книга, к которой относятся очень по-разному. Кто-то считает её идеальной, а кто-то утверждает, что её не стоит рекомендовать никому. Собственное мнение можно, вероятно, сформировать уже после её прочтения.

Как бы там ни было, основная её идея в том, что код должен быть чистым, а это значит, простым для понимания разработчиком и коллегами, понятным и поддающимся изменениям. Что касается других тем, которые затрагиваются в книге, то это ещё и:

  • организация кода

  • обработка ошибок

  • паттерны проектирования и тестирование

Достоинство книги в том, что она написана хорошим языком, в ней затрагиваются действительно важные темы. Если вы её ещё не читали, рекомендуем ознакомиться, лишней в библиотеке она точно не будет.

Мастер-класс. Совершенный код

Автор: Стив Макконнелл

Первое издание книги многие рекомендуют в качестве достойной альтернативы предыдущему изданию. Те, кто прочитал и первую, и вторую книги из подборки, считают, что вторая всё же полезнее. Но и здесь мнения разделяются.

Первое издание «Мастер-класса» вышло в 2008 году. Но не все знают, что есть и второе, которое в РФ появилось в 2017. Книга обновлена с учётом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования.

Изложенные в книге методики и стратегии помогут разработчику:

  • проектировать с минимальной сложностью и максимальной продуктивностью

  • извлекать выгоду из групповой разработки

  • применять методики защитного программирования, позволяющие избежать ошибок

  • совершенствовать свой код

  • применять методики конструирования, наиболее подходящие для вашего проекта

  • быстро и эффективно производить отладку

  • своевременно и быстро обнаруживать критические проблемы проекта, обеспечивать качество на всех его стадиях

Программист-прагматик. Путь от подмастерья к мастеру

Авторы: Эндрю Хант, Дэвид Томас

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

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

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

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

Автор: Адитья Бхаргава

Хорошая книга, которая помогает читателю войти в мир алгоритмов и структур данных. Она предназначена как раз для тех начинающих разработчиков, кто либо вообще не знаком с алгоритмами, либо знаком, но слабо.

В книге объясняются нюансы алгоритмов и структур данных, включая алгоритмы сортировок, поиска, алгоритмы работы с графами и т. п. Есть также немало иллюстраций и практических примеров, благодаря чему материал усваивается быстро. Для того чтобы получить и практический опыт, нужно выполнять упражнения, большинство которых хорошо продуманы.

Несмотря на то, что тема книги достаточно сложная, она написана понятным и простым языком. Так что у читателя не должно возникнуть сложностей при прочтении этого издания. К слову, в этой книге могут найти что-то полезное для себя и опытные разработчики. Судя по отзывам, она помогла многим специалистам. 

Чистая архитектура. Искусство разработки программного обеспечения

Автор: Роберт Мартин

Ещё одна книга Р. Мартина, которую можно назвать продолжением «Чистого кода». Автор в этом издании рассказывает о роли архитектуры и проектирования в процессе разработки ПО. Кроме того, он также раскрывает нюансы паттернов проектирования архитектуры для решения общих проблем, которые возникают при разработке ПО.

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

Книга рекомендуется начинающим разработчикам, хотя она может пригодиться и их более опытным коллегам. Крайне полезной она будет для системных аналитиков, архитекторов и вообще разработчиков, которые хотят повысить свой профессиональный уровень.

Достоинство книги в том, что изложение простое, оно не перегружено специнформацией, нет и сложных примеров, доступных лишь избранным. К слову, книгу советуют не только разработчики для разработчиков, она может быть полезна всем, кто взаимодействует с группами разработки, для понимания происходящих процессов.

Эффективная работа с унаследованным кодом

Автор: Майкл Физерс

Эта книга посвящена принципам работы с legacy-кодом, которого особенно много в крупных компаниях. С ним чаще всего возникают проблемы, и чем больше времени проходит, тем серьёзнее эти проблемы становятся. В книге рассказывается о том, как относительно быстро и эффективно разобраться с legacy и поменять его.

В частности, автор рассказывает о важности автотестов, которые в этом случае применяются для того, чтобы убедиться в работоспособности уже изменённого кода. Солидная часть книги посвящена как раз советам по написанию тестов для legacy-кода.

В книге, кроме прочих, рассматриваются такие вопросы:

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

  • перенос унаследованного кода в средства тестирования

  • написание тестов, препятствующих внесению новых ошибок в код

  • применение методов, подходящих для любого языка или платформы, с примерами кода на Java, C++, C и C#

  • точное выявление мест в коде, где требуется внести изменения

  • работа с унаследованным кодом, который не является объектно ориентированным

  • обращение с приложениями, у которых, на первый взгляд, нет вообще никакой структуры

Head first. Паттерны проектирования

Авторы: Эрик Фримен, Элизабет Робсон, Кэти Сьерра, Берт Бейтс

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

Материал подаётся в виде игровых задач. Выполняя их, читатель постепенно приходит к пониманию, как применять основные паттерны проектирования и достраивать архитектуру грамотно.

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

Комментарии (10)


  1. OlegZH
    28.06.2023 17:25
    +2

    Осталось, только, узнать, какую книгу, действительно, было бы полезно написать для разработчика(ов)? И те книги, которые здесь упомянуты. Действительно ли они помогли? Было бы крайне интересно увидеть практические примеры было/стало.


    1. sepetov
      28.06.2023 17:25
      +5

      Попробую поделиться своим опытом, но почти без кода.

      Первой из них я прочитал "Чистый код" Мартина. На тот момент я ещё не работал программистом и в анамнезе было всего пара программ (генератор контрольных работ, небольшая программа для одной компании ЖКХ и мелочи-мелочи). Их было тяжело поддерживать, а код - забористая наркомания. Из-за них я тогда решил, что не буду работать программистом. Книгу прочитал случайно и мнение поменял. Для меня в то время было открытием (ДА! Открытием!), что переменные можно называть не a, b, n1, x_, а осмысленно, причём более осмысленно, чем quantity, volume и т. п. Сейчас это уже кажется смешным :-) Всё, описанное в книге теперь кажется тривиальным, очевидным и банальным.

      Далее я прочитал "Чистую архитектуру", но к тому моменту я уже работал программистом и не скажу, что она оказала революционное влияние на мою работу. Скорее устаканила и систематизировала то, с чем я уже столкнулся.

      Ну а книга "Грокаем алгоритмы", на удивление, несмотря на свою детскость, буквально недавно принесла мне небольшую премию чуть меньше 80 тыс. Я умудрился успешно применить алгоритм k-ближайших соседей для оптимизации работы склада. Хотя сейчас понимаю, что симплекс-метод подошёл бы явно лучше. На тот момент я его не знал, а в книге он не описывался.

      P. S. Паттерны проектирования только открыл, но как-то отложил до лучших времён.


    1. panzerfaust
      28.06.2023 17:25

      У меня та же история, что у @sepetov рядом. Прочитал "Чистый код" еще когда писал на FBD-языках для контроллеров Honeywell. С тех пор все эти приемы на кончиках пальцев, и я применяю их даже не задумываясь. И меня поражают разговоры типа "нам надо побыстрее поэтому мы гоним лютый говнокод". Для меня за много лет практики нет никакой проблемы писать и быстро и чисто.

      Алгоритмы, паттерны - тоже мастхэв, т.к. это про ваши непосредственные скиллы. Программист, знающий классические алгоритмы CS и паттерны ООП/ФП/архитектуры всегда имеет козырь в рукаве.

      "Чистая архитектура" выглядит как компиляция статей, выпущенная только чтобы денежку заработать. Поэтмоу не рекомендую.


  1. easimonenko
    28.06.2023 17:25
    +3

    Начинающим разработчикам рекомендую читать:

    • книги из своей области

    • книги из других областей

    • книги по математике и теоретической информатике

    Например, пишите веб-сервисы на Node.js? Поинтересуйтесь, а как с этим обстоит в Erlang, Haskell или Go. Почитайте заодно про теорию вычислений, анализ алгоритмов и теорию языков программирования.

    ЗЫ. В список выше я б добавил "Рефакторинг" Фаулера.


    1. a-burlakov
      28.06.2023 17:25
      +3

      Начинающим разработчикам будет очень непросто выполнить вашу рекомендацию. Когда человек только входит в программирование, ему нужно переварить очень много информации из разных областей (core своего языка, пару фреймворков, базы данных, алгоритмы и т.д.). Читать про другие языки (особенно функциональные) в это тяжелое время нецелесообразно.

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


      1. easimonenko
        28.06.2023 17:25

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


  1. ap1973
    28.06.2023 17:25
    +1

    Основные концепции языков программирования. Р. У. Себеста.


    1. easimonenko
      28.06.2023 17:25

      Хорошая книга (была). На сегодня весьма устарела по содержанию. Есть более новое, но не переведённое, издание, где рассматриваются более актуальные языки программирования.


  1. Soupbreak
    28.06.2023 17:25
    +1

    Объектно-ориентированное мышление. Вайсфельд


  1. tania_012
    28.06.2023 17:25

    Простите, но самые большие читатели сейчас это компьютеры. Я нисколько не иронизирую. Книги от профессионалов — это важнейшая пища для языковых моделей — существуют ли простые способы дать им почитать — вы не в курсе этого вопроса?