Азбука хорошего разработчика. Книжки для чтения

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

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

    Википедия — там, в принципе, на хорошем уровне все описано и приведены примеры на разных языках.
    Базовая книга – классика:
    «Приемы объектно-ориентированного проектирования. Паттерны проектирования» — читал книгу давно, и раза 3. Вам того же советую. Даст возможность понимать большое количество терминов, произносимых другими разработчиками.

    Рефакторинг

    «Рефакторинг. Улучшение существующего кода» — вероятно, эта книга сделала революцию в написании кода. Читается быстро и интересно. Методы рефакторинга должны отложиться в голове до конца жизни. Ваш код отныне будет лучше. В книге есть упоминание про юнит тестинг.

    Наверное, классикой в этой области ТДД считается книга — «Экстремальное программирование: разработка через тестирование» — просто и доступно. Даст базу, но не научит писать юнит тесты.

    Для углубления познаний в юнит тестинге советую прочитать толстый каталог хЮнит паттернов:
    xUnit Test Patterns: Refactoring Test Code
    — ссылку на курсы английского языка я не буду приводить, так как предполагаю, что программист должен уметь читать англоязычные книги. Книга ответила на все мои вопросы, возникающие в процессе многочисленных попыток писать хорошие тесты.

    Следующая книга, рассказывает о том, как правильно использовать паттерны и тоже обязательна «Рефакторинг с использованием шаблонов» Возможно, после прочтения этой книги, вы таки сможете использовать паттерны во благо.

    Углубляемся

    «Архитектура корпоративных программных приложений» — еще одна буква в азбуке разработчика. Описывает подходы, составляющие, паттерны. Необходима для понимания еще кучи непонятных терминов.

    Если в предыдущей книге фундаментальные понятия. То в книге « Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET » можно понять, как их применить. Перевод — отвратительный, так что, возможно, многие её предпочтут читать на английском языке. А, еще эта книга дала мне понимание наконец-то, что такое «Внесение зависимостей» (Dependency injection).

    Полученные знания, из книг указанных выше, дадут результат, если научиться использовать их постоянно. В книге — Continuous Integration: Improving Software Quality and Reducing Risk рассказывается, что нужно для этого сделать.

    Что дальше

    Я прочитал книги упомянутые выше. Дальше я планирую прочесть
    Implementation Patterns — вроде как основы, разложенные по полочкам в результате труда Кента Бека.

    Книга, которую я сейчас читаю
    Beyond Software Architecture: Creating and Sustaining Winning Solutions


    Также жду выхода
    Aspect Oriented Refactoring — даже само название уже звучит интересно.

    Refactoring HTML: Improving the Design of Existing Web Application — по аннотации очень интересно (мне как веб-разработчику, по крайней мере).

    Знатоки скажут, что я хитер – перечислил книги из серии Мартина Фаулера и сделал пост. В принципе, вы правы, всю статью можно было написать одним предложением:
    Прочитайте все книги из The Addison-Wesley Signature Series и будет вам счастье.

    Ну опять же, статья с моего сайта kigorw.com
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 66

      +2
      Классика, в общем то. Забыли/не стали приводить книги по теории - Кнута с Корменом :)
        0
        Это да, совсем базу я не стал приводить. Тут по большей части книги для ООП программиста. Причем я не стал приводить книги такие как "Рефакторинг баз данных" и "Шаблоны интеграции корпоративных приложений" так как не считаю их чем то обязательным.
          0
          Книги это хорошо, но ничто не заменит практики применения книжных теоритических знаний на опыте. Статью в избранное, rss в читалку, + карму.
        0
        Спасибо!
        Добавим в избранное для того чтобы всегда помнить
          –7
          отличная подборка! жалко кармы нет, а так бы +1
            –1
            Ох!Тоже хочется поставить вам +!!Читал не всё из вышеперечиленного, но то из подборки, что читал-рельно помогло в "жизни" :)
              +4
              Чето както это не по-русски - давать ссылки на книги с озона :)

              Зы почему нет легендарной "Code complete"?
                0
                Честно говоря, пиарить я не кого не собирался. А Макконел прошел мимо меня, я его не читал поэтому сказать ничего не могу.
                  +1
                  Можете смело добавлять в "Что дальше". Думаю не сильно преувеличу, если скажу что она одна стоит половины списка.
                    0
                    Я в том плане, что я был бы рад видеть ссылки на сам текст.
                    0
                    Да, неплохая книга. Наверное, ее можно почитать где-дь в начале этого списка. Потому, как хорошая, но довольно общая.
                    +2
                    Для начинающих программистов на Руби рекомендую "Design Patterns in Ruby": http://www.amazon.com/Design-Patterns-Ruby-Addison-Wesley-Professional/dp/0321490452/

                    Знакомит не только с самими шаблонами проектирования, но и объясняет как их применять или где они используются в Ruby. Становится понятно, откуда ноги растут.
                      0
                      Ага, сейчас читаю, очень нравится.
                        0
                        из любопытства: минусующие комментарий - что вам не понравилось?
                        –2
                        Ожидаемо, но хорошо. + в карму
                        • НЛО прилетело и опубликовало эту надпись здесь
                            +2
                            да, небольшое "отсебя" - книги надо читать на языке оригинала.

                            слава богу это в 99.999% английский, ужасный перевод (если это не MS series, хотя и там попадается) убивает весь смысл.
                              0
                              Абсолютно верно, еще один плюс в том, что не нужно ждать пару лет пока здесь издадут.
                                +1
                                Не всегда даже дело именно в ужасном переводе. Часто просто не существует устоявшейся терминологии, что вызывает неразбериху.
                                  0
                                  тру - порой термины, "переведенные" горе переводчиками (которые, в большенстве своём, далеко от темы перевода, дай бог, что они вообще с ИТ знакомы) настолько вгоняют в ступор, что обретение смысла приходит где то к середине книги/раздела
                                    0
                                    В это смысле, когда я читал на русском, я больше всех любил издательство bhv. Такого феерического бреда, пожалуй, больше нигде не встретишь.
                                +1
                                по-моему, достаточно показательно, что в этом списке не оказалось ни одной книги про собственно работу.
                                  0
                                  в плане? про управление проектами?
                                    0
                                    про управление собой, работу в команде и про сам техпроцесс производства.
                                      0
                                      Я бы мог привести список книг, которые я прочитал в этой сфере, но их я не могу назвать обязательными или фундаметальными. Если вы можете, что-то порекоммендовать я буду рад. И вообще, тема книг "маст рид" для меня очень актуальна.
                                        0
                                        навскидку могу посоветовать Pragmatic Programmer. Очень хорошая книга про то, как делать правильно и не делать неправильно.

                                        Командная работа - например, Dynamics of Software Development

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

                                        Еще полезно почитать хотя бы одну книжку про системы контроля версий.
                                          0
                                          Practices of an Agile Developer Working in the Real World - эту книгу я сегодня закончил читать - там кстати много хороших книг в библиографии. Возможно она и близка к книге Pragmatic Programmer.
                                          Насчет "в первую очередь" - сомнительно, так как ребята, работающие на меня, в первую очередь испытывают недостаток в ООП образовании (или к какой категории отнести книги из моей сборки?). А о работе в команде можно рассказать и на собраниях команды. В моей жизни так происходит.
                                            0
                                            Pragmatic Programmer отличная. Для меня ее ценность, помимо практических советов организации работы, оказалась в том, что открылось много важных областей, которые захотелось изучить подробнее.
                                    +1
                                    Да. "Банда Четырех" и Фаулер - обязательны к прочтению. Ну и не лишним будет ознакомиться с реализацией шаблонов проектирования на отдельном используемом языке. Для популярного сейчас PHP посоветую Guide to PHP Design Patterns от php|architect
                                      +1
                                      Для PHPников рекомендую:
                                      Джордж Шлосснейгл
                                      Профессиональное программирование на PHP.
                                      Advanced PHP Programming.
                                      http://www.ozon.ru/context/detail/id/252…
                                        +1
                                        хорошие партнёрские ссылки =)
                                          +1
                                          Не забываем про великолепный сайт http://sourcemaking.com/, который уже упоминался на хабре.
                                            0
                                            спасибо за ссылку, приятный сайт
                                              +1
                                              Если будет вермя, то на этой недели постараюсь сделать подборку своих любимых книг/сайтов, посвященных IT
                                            0
                                            Насчет издательства полностью согласен, "Addison-Wesley" — лучшее, всегда взгляд ищет на полках три заветных треугольничка. От себя хочу добавить, что приличному разработчику никогда не помешает иметь в библиотеке несколько хороших художественных книг, и читать их параллельно. В конце концов, новые идеи черпаются именно оттуда. Да еще из жизни.
                                              –1
                                              Спасибо =)
                                                0
                                                Стив МакКоннелл, Совершенный код
                                                  +1
                                                  Книги O'Reilly это эталон простоты и ясного мышления. Ими были изданы Книги почти на любую Тему.

                                                  - есть книги "in a Nutshell", это короткие документации.
                                                  - есть книги "Cookbook", это конкретные решения проблем
                                                  - есть еще Hackbooks и Pocket Guide References но я пользуюсь в общем первыми двумя видами.

                                                  Есть довольно полное собрание, но мою Карму забили ниже 5ти.
                                                  Напишу новость, как только будет Карма.
                                                    +1
                                                    Для тех, кто хочет держать руку на пульсе и узнавать свежие новости от авторитетных людей, можно порекомендовать тематические подкасты. От себя могу посоветовать вот этот: http://polymorphicpodcast.com
                                                      0
                                                      Собственно, погуглил и нашёл по поводу первой книги следуещее http://rozalina.ru/
                                                        0
                                                        http://nitki.nnm.ru/sovershennyj_kod_1
                                                        тут скан МакКоннелл-а, если кому интересно и хотите ознакомиться прежде, чем покупать(хотя книга-правда ценная)
                                                          0
                                                          я бы посоветовал Макконнела читать в бумаге, тем более что он сам рекомендует - если вам кажется что какую-то главу вы уже знаете - пропустите ее. В бумаге это гораздо удобнее. Вообще я для себя понял что ничего серьезного и большого с экрана читать не удается - отвлекаешься сильно. Документация - реально, потому что нужен всегда маленький кусочек, техно статьи -да, потому что короткие. Макконела, Фаулера или тот же Writing Security Code - не могу.
                                                          Нет необходимого уровня концентрации, а без него - лучше не читать, ничего не отложится
                                                          0
                                                          по языкам: Java: Bruce Eckel, Thinking in Java 4th edition
                                                          C++: Bjarne Stroustrup, The C++ Programming Language.
                                                          Читать такие книги, разумеется, надо в оригинале.
                                                            0
                                                            Чтобы не тратить зря время, из перечисленного достаточно прочитать 2-3 первые, которые будут хорошим фундаментом, все остальное - производные, можно читать по диагонали.
                                                              0
                                                              Книжки хорошие, но прочитал ещё не все.

                                                              Автор, коли вы их прочитали, позвольте задать вопрос по xUnit: как нужно действовать в случае, если нет возможности проверить итоговые данные? Например пользователь шлет на сервер сообщение, а сервер что-то пишет в БД и что-то там изменяет. В этом случае грозит очистка БД при каждом новом проходе теста с произвольной выборкой каких-то значений?
                                                                0
                                                                Это самый распространенный вопрос. Вкратце - смотрите термин Test Doubles. А вообще, это вопрос модульности системы. Юнит тест тестирует только логику, если он что-то там изменяет - это уже компонентный тести (интеграционный). В книге все эти вопросы подробно расписаны.
                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                  0
                                                                  у меня где-то есть e-book: "PHP Design Patterns" oт phparchitect...
                                                                  очень полезной оказалася.... ну ето правда только для PHP...
                                                                  еще могу посоветовать для ознакомления из безопасностю в РНР:
                                                                  № 1. М. Фленов: "РНР глазами хакера"
                                                                  № 2. М. Кузнецов: "Головоломки на РНР для хакера"

                                                                  ... п.с: есть и pdf версии етих файлов...
                                                                    0
                                                                    Не могли бы выложить PHP Design Patterns" oт phparchitect куда-нибудь? Спасибо :)
                                                                    0
                                                                    Мой набор:
                                                                    С. Макконнелл «Совершенный код»

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

                                                                    Эд Леки-Томпсон, Айде-Гудман, Алек Коув «PHP5 для профессионалов»

                                                                    А начинающим php программерам могу посоветовать небольшую книгу «Объектно-ориентированное программирование на PHP5» за авторством Питера Ловейна.
                                                                      0
                                                                      хм, а может уважаемый забр подскажет что почитать относительно баз данных?
                                                                        0
                                                                        *хабр конечно же =)
                                                                          0
                                                                          Для начала Дейта и Грабера, конечно же.
                                                                          0
                                                                          Спасибо за подборку, поставил плюс, но ссылки довольно издевательские (по первым позициям — везде «товар отсутствует»).
                                                                            0
                                                                            в мои планы не входит кого-либо пиарить
                                                                            0
                                                                            А книги по UML?! А Гради Буч?
                                                                              0
                                                                              Рядовому разработчику стоит прочитать разве что Основы UML Фаулера.

                                                                              Всё остальное — скорее для архитекторов и аналитиков.
                                                                                0
                                                                                А.. вам кажется, что разработчик совсем не архитектор?:)
                                                                                Гради Буч "ОО анализ и проектирование". Начинающим разработчикам в самый раз, ИМХО:)
                                                                                  –1
                                                                                  мне не кажется, я знаю, что рядовой разработчик — не архитектор

                                                                                  а кто вы, извините, такой, чтобы ваше ИМХО хоть что-то значило?
                                                                                    0
                                                                                    Ой, как заносчиво и глупо.
                                                                                      –1
                                                                                      Не, я серьёзно.
                                                                                      Пока вы практически аноним, который даже не сумел правильно прописать урл на свой сайт про титьки с заносчивым названием.

                                                                                      На сайте раздела «Об авторе» нет, ссылка на сайт http://www.iacnano.ru/ тоже кривая.

                                                                                      Совершенно неясно, насколько стоит считаться с вашим мнением.
                                                                                        0
                                                                                        Как хочешь;)
                                                                              0
                                                                              Стоит отметить гибкие методы разработки ПО (много по templates, refactoring)
                                                                                +1
                                                                                ИМХО каждый программер обязан быть знаком с трудом П.Брукс "Мифический человекомесяц"
                                                                                  0
                                                                                  Для проектировщика на языке Java неплохие книжки:
                                                                                  • Марк Гранд "Шаблоны проектирования в JAVA. Каталог популярных шаблонов проектирования, проиллюстрированных при помощи UML", изд. BHV-СПб, 2004г., ISBN 5-94735-047-5
                                                                                  • Стивен Стелтинг, Олав Маасен "Применение шаблонов Java. Библиотека профессионала", изд. Вильямс, 2002г., ISBN 5-8459-0339-4, 0-1309-3538-7

                                                                                  Теория и практика программирования многонитиевых приложений:
                                                                                  • Грегори Р. Эндрюс "Основы многопоточного, параллельного и распределенного программирования", изд. Вильямс, 2003г., ISBN 5-8459-0388-2, 0-2013-5752-6
                                                                                    0
                                                                                    Getting Real by 37signals! ;)

                                                                                    Но главное не воспринимать ее как религию, а как информацию к размышлению.

                                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                    Самое читаемое