Найти в Дзене

Какие книги нужно прочитать, чтобы в Архитектуру уметь

В последнее время ко мне часто обращались за советом, что можно почитать, чтобы научиться создавать архитектуры и гибкие решения. Для тех, кто не хочет читать всю статью, отвечу кратко — никакие. В этом плане нужно пропустить через себя большое количество разных проектов, чтобы выработать ощущение подходящих решений и архитектур, а это только насмотренность. И вообще, а что значит «гибкие системы»? 🤔 Для тех же, кто решил читать дальше — продолжу. Для начала, немного отвлечемся, чтобы более понятным образом описать ключевую мысль. Какие книги нужно прочитать, чтобы стать хорошим автомехаником? Хм... очевидно, есть книги про устройства автомобилей и основных агрегатах. Их стоит прочитать. Но сделают они из вас хорошего механика? Очевидно, что нет! Нужно разобрать и собрать большое количество самых разных машин, в разном состоянии, чтобы стать «хорошим». А еще, в книгах вам будут писать про динамо-ключи и моменты затяжек гаек. А на практике придется высверливать прикипевшие болты и выби
Оглавление
10 книг
10 книг

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

Для тех, кто не хочет читать всю статью, отвечу кратко — никакие. В этом плане нужно пропустить через себя большое количество разных проектов, чтобы выработать ощущение подходящих решений и архитектур, а это только насмотренность. И вообще, а что значит «гибкие системы»? 🤔

Для тех же, кто решил читать дальше — продолжу.

Введение

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

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

Нужно разобрать и собрать большое количество самых разных машин, в разном состоянии, чтобы стать «хорошим».

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

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

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

«А, вот как можно было сделать тот мой фрагмент кода. Пойду перепишу.»
«А, вот как можно было сделать тот мой фрагмент кода. Пойду перепишу.»

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

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

Книги должны проявлять ваш опыт, а не создавать.
Книги должны проявлять ваш опыт, а не создавать.

Я уже ответил, что никакие книги не помогут научиться архитектуре, но раз уж в названии статьи есть слова «книги» и «какие», то что-то посоветую.

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

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

А вот и рекомендации

1. Экстремальное программирование — Кент Бек.

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

2. Паттерны проектирования — Эрик Фриман.

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

3. Язык шаблонов — Кристофер Александер.

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

Книга весьма объемная, поэтому подходите основательно в решении ее прочесть.

4. Чистая архитектура — Роберт Мартин.

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

Здесь вы узнаете и краткую профессиональную биографию автора и про SOLID и про главную ось зависимостей.

5. Чистый код — Роберт Мартин.

Сразу еще одна книга дядюшки Боба. Просто кладезь полезных советов по работе с программным кодом. Настоятельно рекомендую с самых малых профессиональных лет.

6. Проектирование веб-API — Арно Лоре.

Название говорит само за себя. Здесь про проектирование различных АПИ. Достаточно легко читается и точно будет полезна.

7. Документация Laravelhttps://laravel.com/

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

8. Устройства операционных систем — Таненбаун

Когда-то давным давно я хотел сделать свою операционную систему, но «зачем»? Так и оставил эту идею. Ведь есть линукс и все такое. Кто же знал, что через десяток, другой лет так сложится, что отечественная операционная система могла бы занять свое место. А за это время можно было бы сделать вполне хорошую заготовку. Но да ладно.

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

9. Дизайн привычных вещей — Норман Дональд

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

10. Domain Driven Design — Eric Martin

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

Что вне книг

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

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

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

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

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

На этом завершу. Делайте хорошо и немного больше. Берегите себя и свои коллег.

Напишите в комментариях, какие книги порекомендовали бы вы и почему?

Хайлайты

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

---

Читай релевантные статьи: Архитектура.

Изучай основы создания приложения в открытом курсе: Анатомия приложения.

Подписывайся на мой канал в Telegram: @cantfailcode.