[Перевод] Топ-10 книг для разработчика

Совершенствоваться в сфере разработки — это не только писать хороший код, но и читать о том, как его писать.


arnr_wa-tnbf2jdpzutvjew3wfa.jpeg

Привет, хабр! Продолжаю делиться полезными подборками. Совсем недавно я опубликовал 2 поста с перечнем Github репозиториев: Часть1 и Часть2. На этот раз предлагаю вашему вниманию подборку полезных книг для разработчиков. Кому интересно — добро пожаловать под кат.


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

Найти отличные книги для разработки программного обеспечения — непростая задача, так как экосистема меняется настолько быстро, что многие вещи устаревают в короткие сроки. Особенно это касается тех книг, в которых описана определенная версия языка программирования.
Тем не менее, существуют “вечные” книги: они посвящены мета-темам, шаблонам проектирования или общим представлениям.

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

1. Cracking the Coding Interview или Карьера программиста


usiqtn0nq2-7_njm82ide3aesiy.png


Настоятельно рекомендую эту книгу всем тем, кто хочет основательно подготовиться к интервью. Автор, Г. Лакман Макдауэлл, опытная инженер-программист, была и интервьюером, и кандидатом. Она научит вас находить скрытые детали в вопросах, разбивать проблемы на небольшие куски, а также поможет улучшить навык обучения.

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

2. Code Complete или Совершенный код


r9okhfubglcapxotrsftaoxltyc.png


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

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

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

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

3. Clean Code или Чистый код


5x6hzypxj9wkixw2zkvabczphzk.png


Книга Роберта Мартина (или дяди Боба) “Чистый код” — одна из самых популярных книг по программированию. Она была написана для обучения инженеров-программистов принципам написания чистого программного кода. Книга содержит множество примеров, показывающих, как выполнять рефакторинг кода с целью сделать его более читабельным и поддерживаемым. Но учитывайте то, что издание ориентировано именно на Java. Хотя некоторые из шаблонов и техник распространяются на общее программирование и на другие языки, основной аудиторией книги являются Java-разработчики.

Следует также отметить, что книга вышла в 2008 году. Некоторая информация, например, форматирование кода, сегодня менее актуальна из-за доступных инструментов и IDE сред. Но все же, это отличная книга.

4. Refactoring или Улучшение проекта существующего кода


gxv8sy0wxg6bywg9410b4rr8pte.png


Второе издание книги Мартина Фаулера объясняет, что такое рефакторинг на самом деле, впрочем, как и первое издание, выпущенное 20 лет назад. После прочтения книги вы найдете ответы на следующие вопросы:

  • Зачем мне рефакторинг моего кода?
  • Как я могу распознать код, который нуждается в рефакторинге?
  • Как я могу успешно провести рефакторинг своего кода?


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

5. Head First Design Patterns или Паттерны проектирования


dl508vc0c-fjmubufho0adyez4s.png


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

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

6. Patterns of Enterprise Application Architecture или Шаблоны корпоративных приложений


sohytwexnxfgwflh5p2ld1ycf84.png


Еще одна отличная книга Мартина Фаулера, посвященная разработке корпоративных приложений. После краткого руководства Мартин предлагает вам более 40 шаблонов в качестве решения распространенных проблем при разработке корпоративных приложений. В книге вы найдете большое количество UML визуализаций и примеров кода, написанных на Java или C#.

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

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

7. Working Effectively with Legacy Code или Эффективная работа с унаследованным кодом


_qljzndtfof514vbzhf8vkvthwu.png


В книге автор предлагает стратегии для работы с большими, непокрытыми тестами базами legacy-кода. Вы можете подумать: “На дворе 2020 год. Legacy-код больше не проблема, ведь у нас есть чистый, поддерживаемый код и микросервисы.” Позвольте мне заверить вас, что это ошибочное представление. Legacy-код по-прежнему является одной из самых сложных проблем для многих компаний.

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

В книге приведены примеры, написанные на Java, C ++, C и C #, а также в ней есть советы по работе с legacy-кодом, который не относится к объектно-ориентированному.

8. The Clean Coder или Идеальный программист


ik9rrievb6b2mi5dzezs0dfj0pa.png


Еще одна книга дядюшки Боба, которая учит методам, практикам и инструментам настоящего мастерства в области программного обеспечения. Она содержит практические советы по оценке проектов, написанию кода, рефакторингу и тестированию.

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

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

Поэтому я советую прочесть эту книгу внимательно и с долей критики.

9. Introduction to Algorithms или Алгоритмы: построение и анализ


04g03zio4cbphnkrevieontzjrk.png


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

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

10. The Pragmatic Programmer или Программист-прагматик


r_ttq2gjjn80qtyooef1nvtvrpu.png


Это одна из самых серьезных книг, которые я когда-либо читал. Издание полно как технических, так и профессиональных практических советов, которые помогли мне во многих проектах, а также помогли мне стать лучше как разработчику.

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

Прочитав книгу, вы поймете, что такое непрерывное обучение и насколько оно важно; изучите, как писать гибкий, адаптируемый и динамический код, как решать проблемы конкурентности, как стоять на страже безопасности, как тестировать “безжалостно и эффективно”, и многое другое.

Если бы я должен был выбрать только одну книгу, которую вам посоветовать, я бы выбрал именно эту!

Заключение


Это был список одних из самых популярных книг для разработчиков. Лучшая из списка, на мой взгляд, — “Программист-прагматик” Э.Ханта и Д.Томаса. Книги Роберта С. Мартина востребованы и нравятся многим разработчикам, но я бы посоветовал быть критичным при их чтении, так как я не согласен с дядей Бобом во многих вопросах.

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

© Habrahabr.ru