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

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




Направление: Программирование как профессия


Книга: Э. Хант, Д. Томас. «Программист-прагматик. Путь от подмастерья к мастеру»



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

Языки и технологии изменчивы. Но главное – это не инструмент, а умение с его помощью решать поставленные задачи. Именно это определяет, насколько вы хороший разработчик.

Направление: Архитектура


Книга: Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес. «Приемы объектно-ориентированного проектирования. Паттерны проектирования»



Удивительно полезная книга знаменитой «банды четырех» (Gang of Four). Отличный пример структурированного и продуманного изложения. По сути, книга заложила терминологию, которой пользуются практически все программисты, обсуждая то или иное архитектурное решение.

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

Направление: Языки программирования


Книга: Б. Керниган, Д. Ритчи. «Язык программирования C»



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

Направление: Технологии


Книга: Дж. Рихтер. «CLR via C#»



Практически идеальный учебник по .NET.

Джеффри Рихтер подробно рассказывает о языке C#, а также об устройстве и фундаментальных принципах функционирования .NET-платформы. Традиционный вопрос на наших собеседованиях: «Вы читали Рихтера? Сколько раз?». Вопрос звучит неизменно многие годы, лишь книги меняются. Раньше была «Windows via C/C++», теперь – эта. У Джеффри настоящий талант открывать двери для новичков, создавать правильный и достаточно глубокий фундамент для дальнейшего развития. Эта книга не единственная, но, если вы начинаете знакомство с технологией .NET, начните с нее. Вы не пожалеете!

Направление: Области разработки и другие направления


Книга: Э. Таненбаум, М. ван Стеен. «Распределенные системы. Принципы и парадигмы»



Возможно, это не самая яркая работа Таненбаума (вспомнить хотя бы его «Операционные системы. Разработка и реализация» или спор с Линусом Торвальдсом), но достойная книга для прочтения.

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

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

Приятного чтения!
Поделиться с друзьями
-->

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


  1. worldxaker
    15.05.2017 20:45
    +2

    а где Совершенный код?


  1. sshikov
    15.05.2017 20:45
    +12

    Хм. Вот нахрена советовать всем читать банду четырех? Во-первых, эта книга для определенного уровня, начинающим ее читать просто вредно — пользы не принесет, и потом, это скорее (в какой-то мере) справочник, а не учебник.


    Во-вторых, объектно-ориентированное проектирование, в таком виде как оно там подается, уже достаточно много лет активно видоизменяется, ярким примером чему стало появление лямбд в Java, в итоге значительная часть описанных паттернов из этой книги стала просто тривиальной конструкцией языка (а в языках типа лиспа или хаскеля — и всегда была такой).


    Ну или Керниган и Ритчи? Серьезно? Не, я не против, классическая книга, и язык, многое определивший в развитии индустрии. Но если вы сегодня, в 2017 не можете назвать более полезную сегодня книгу (а не исторический артефакт, по-хорошему любопытный только ради истории) — это грустно.


    1. AbstractGaze
      16.05.2017 09:11

      Что бы вы в таком случае посоветовали новичкам из актуального сейчас? Мне как новичку было бы интересно узнать и думаю почитать.


      1. sshikov
        16.05.2017 12:10
        +1

        Я бы не взялся советовать книги на любой случай. Это зависит от направления, в каком вы хотите развиваться. Есть люди, которые вполне себе живут, программируя под платформы типа MS SQL Server или Oracle, базы данных и все что вокруг них. И зачем им язык C, кроме как ради знания истории?


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


        А уж книгу про язык C начинать читать если вы реально собрались в этом направлении развиваться — скажем, писать что-то в области embedded.


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


        И вот с этим советом можно только согласиться, хотя следовать ему сложно — пока не прочел, откуда знать, что там внутри:


        Но мой вам совет: выбирайте книги, которые дадут в первую очередь понимание, а не просто поверхностную информацию.


      1. sshikov
        16.05.2017 12:14
        +1

        И еще — я бы посоветовал почитать что-то из другой области. Ну хотя бы Том ДеМарко, Тимоти Листер — есть несколько их книг по управлению проектами, их стоит почитать разработчикам тоже, потому что они дают понимание, как развивается проект в целом, как управлять рисками, как работать в команде. Ну и потом, они просто прикольные )))


    1. JustPeople
      16.05.2017 11:21

      полностью согласен по поводу GoF, к тому же как я помню там еще и терминология несколько странная применяется. Куда более полезна для новичков в этом плане на мой взгляд книга O'Reily.


      1. sshikov
        16.05.2017 12:12

        Я не знаю, про какую вы конкретно, но да — суть в том, что про паттерны с тех пор написали много чего, под разные языки реализации, скажем под .Net или Java. И это было бы практически полезнее, GoF еще и очень абстрактная книженция.


        1. niklisto
          16.05.2017 14:03
          +1

          Я так понял, что речь идет о книге издательства O`Reily из серии HeadFirst под названием Design Patterns. На мой взгляд это одна из самых понятных книг на эту тему.


          1. kaftanati
            16.05.2017 21:54

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


            1. sshikov
              16.05.2017 22:14

              Вот, чтоб было понятнее, почему я против чтения GoF в чистом виде, начинающими: цикл статей Марио Фуско на общую тему, как трансформировались некоторые паттерны с появлением в Java 8 лябмд: https://www.voxxed.com/blog/2016/04/gang-four-patterns-functional-light-part-1/.


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


              И в общем-то, если посмотреть в сторону лиспа, или даже javascript, можно увидеть, что тот или иной паттерн — всего лишь функция, возвращающая другую функцию, к примеру. А если вы под .Net пишете, то в современном c# тоже многие вещи проще делаются, нежели описано в классической книге про паттерны.


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


  1. Mispon
    16.05.2017 11:21
    +2

    Ожидал увидеть «Совершенный Код» еще, достойная книга, для пополнения списка.


  1. lails
    16.05.2017 11:21

    Книги это конечно очень хорошо, из этой коллекци я читал Рихтера «CLR via C#». Но мне очень сложно дается их читать, после прочтения пары страниц я начинаю зевать. Как с этим бороться?


  1. jaman
    16.05.2017 11:21
    +1

    Для тех, кто занимается разработкой корпоративных информационных систем, можно еще посоветовать книги Мартина Фаулера и др.: «Шаблоны корпоративных приложений», «Архитектура корпоративных программных приложений».


    1. claygod
      17.05.2017 10:04

      Я бы добавил в Ваш список

      Шаблоны интеграции корпоративных приложений


  1. SerP1983
    16.05.2017 11:21
    +2

    Где Фаулер? Где Макконелл? Где Кнут, наконец? Почему надо читать c, но не надо читать, скажем, erlang? Очень спорный список.


  1. therhino
    16.05.2017 11:21
    +1

    Книга Таненбаума «Операционные системы. Разработка и реализация» — одна из лучших технических книг, которые я прочитал. Рекомендую всем


  1. kogoia
    16.05.2017 11:21

    Можно расширить список :)

    Чтобы менеджмент на голову не садился

    • The Clean Coder by Robert Cecil Martin


    Чтобы научиться писать декларативный и подерживаемый код
    • Elegant Objects by Yegor Bugayenko


    Для коллаборации команды и разруливания говнокода в монолитных проектах
    • Domain-driven design by Eric J. Evans


    Чтобы иметь представление как организовывать высоконагруженные проекты и предоставлять клиентам
    • Building Microservices by Sam Newman


    Тут можно ещё добавить про SCRUM и TDD, остальное практика
    Также очень подтягивает изучение другой парадигмы, углубление в алгоритмы и куда же без Математики :)


    1. sshikov
      16.05.2017 21:58
      +1

      Scrum и tdd вовсе не обязательно нужно всем. К сожалению, все подобные попытки написать список из пяти (десяти, ста) лучших книг, которые нужно прочесть всем, всегда сводятся в конечном счете к этому.


      Что включать, а что нет. Например, нужно ли разработчику непременно уметь работать с VCS? И если да, то с какой-то конкретной (например Git), или вообще? И вроде бы хорошо уметь вообще, а много можно назвать книг, которые бы хорошо рассказывали про версионирование кода в общем, без привязки к Git, SVN или чему-то еще?


    1. qadmium
      17.05.2017 15:58

      Elegant Objects by Yegor Bugayenko

      это ведь тот Егор, о котором я думаю?


      1. centur
        18.05.2017 03:25

        1. qadmium
          18.05.2017 11:26

          Null, великий и ужасный

          и комментарии почитать


          1. centur
            18.05.2017 15:08
            -1

            Я вас не понимаю, ну статья, стандартный холивар-shit-throwing в коментах, как обычно. К чему тут Элегантные объекты или Егор (комменты читать особо не вижу смысла — много, бестолково да и пользы ноль. Могу угадать результат — никто никого не переубедил, ведь так? )


            1. qadmium
              19.05.2017 05:16

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


              1. qadmium
                19.05.2017 05:19

                идеи изложенные в этой книге маргинальны, если вас устраивает быть белой вороной (и писать говнокод, но это уже моя субъективная точка зрения), то как бы пожалуйста, никто не запрещает


  1. knagaev
    16.05.2017 13:51
    +3

    Очень спорный пост.
    Почти генератор флейма.


  1. Dimfield
    17.05.2017 13:04
    -1

    Вот почему мне джависту и немного веб «стоит прочесть» рихтера?
    не я понимаю книга вроде популярна о нем много пишут. Вот только почему???