Какие книги должен прочитать каждый Java-программист?

_-programmirovanie-13
И почему начинать учиться нужно сразу со сложных книг

Это рубрика, в которой эксперты отвечают на актуальные и волнующие вопросы об IT-профессиях, будущем сферы и ее перспективах.

У разных людей разные вкусы. Если вы поспрашиваете знакомых программистов-сеньоров о том, какие книги они прочитали, у каждого будет свой список. Но одни и те же названия будут повторяться снова и снова. Здесь перечислены десять первых книг, которые можно порекомендовать всем, кто решил связать профессиональный путь с Java.

1. Java. Библиотека профессионала (том 1, том 2)

Кей Хорстман

Оригинал: Core Java (Cay S. Horstmann)

Среди учебников «для самых маленьких» эта книга, пожалуй, самая популярная. Она пережила одиннадцать изданий только на русском языке, двенадцатое пока существует только на английском и выпущено в 2021 году.

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

2. Философия Java

Брюс Эккель

Оригинал: Thinking in Java (Bruce Eckel)

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

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

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

3. Java Concurrency на практике

Брайан Гетц

Оригинал: Java Concurrency in Practice (Brian Goetz)

Книга, которая заслужила собственную аббревиатуру — JCIP. Ее знают все специалисты по многопоточности, а кто-то — почти наизусть.

Она была написана в 2006 году, но актуальна и сейчас. Кажется, что многопоточность — это что-то модное, динамичное и быстро развивающееся. С фреймворками отчасти действительно так. В JCIP заложена философия того, как работать с многопоточностью с точки зрения базовой платформы Java. Платформа редко меняется и сохраняет совместимость версий. Поэтому знания могут быть полезны всю жизнь.

4. Экстремальное программирование: разработка через тестирование

Кент Бек

Оригинал: Test Driven Development: By Example (Kent Beck)

Несмотря на слово «тестирование», книга не для тестировщиков. Test Driven Development (TDD) — способ избавиться от страха в процессе разработки. Автор предложил писать тесты так, чтобы переложить свой страх и необходимость в непрерывном контроле на компьютер и системы автоматической проверки.

Подход наделал много шума, и все системы быстрого тестирования и рефакторингов в IDE — в каком-то смысле продукт размышлений над наследием Кента Бека и его TDD.

5. Применение шаблонов Java

Стив Стелтинг, Олав Маассен

Оригинал: Applied Java Patterns (Stephen Stelting, Olav Maassen)

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

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

Мартин Фаулер

Оригинал: Patterns of Enterprise Application Architecture (Martin Fowler)

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

«Шаблоны корпоративных приложений» — обзор вопросов, с которыми сталкивается каждый профессионал в этой области. В книге рассказано:

  • о разделении сложных систем на уровни;
  • моделировании структуры и поведении на уровне объектов и реляционных баз данных;
  • типовых решениях обработки данных;
  • бытовом параллелизме;
  • отображении данных в вебе.

7. Предметно-ориентированное проектирование (DDD)

Эрик Эванс

Оригинал: Domain Driven Design (Eric Evans)

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

8. Рефакторинг

Мартин Фаулер

Оригинал: Refactoring (Martin Fowler)

Автор списком приводит примеры более 70(!) конкретных способов улучшить код, а в начале объясняет суть рефакторинга.

Научиться писать код может каждый. Но далеко не все умеют делать это хорошо. Кроме красивой теории и больших идей, написание кода — это множество мелкой, ежедневной, рутинной работы. Если делать ее плохо и неэффективно, она может испортить все удовольствие от профессии.

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

9. Чистый код

Роберт Мартин (Дядя Боб)

Оригинал: Clean Code (Robert C. Martin)

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

Как называть классы и методы? Нужно ли в комментариях объяснять каждую строчку? Как получается, что простые проблемы процедурного программирования сложно выглядят в объектно-ориентированном виде?

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

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

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

Оригинал: The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt, David Thomas)

На моей самой первой работе книгу советовали читать всем джунам-джавистам. У нас был огромный список книг по Java, и она стояла в нем самой первой, несмотря на минимальное количество примеров кода.

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

Ее можно читать и перечитывать из года в год и каждый раз находить что-то новое в свете опыта, свежих технологий и ситуации в мире. Рекомендую прочитать ее два раза: до и после чтения всех книг в этом списке. И посмотреть, что изменится.

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

Освойте новую профессию

(рейтинг: 5, голосов: 2)
Добавить комментарий