Красная таблетка. Андрей Курпатов

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

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

Об иллюзии реальности

Автор начинает книгу с рассказа об иллюзорности того, что мы считаем реальностью:

Всё, что мы думаем, чувствуем, переживаем, — иллюзия… произведённая нашим мозгом… Поэтому каждый из нас чувствует, что живёт не своей жизнью

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

Мы сами — тоже его [мозга] работа: и мы сами, и наше сознание, и вообще всё, что мы можем вообразить, — это то, что создаёт мозг, плетя паутину своих нервных связей

То есть всё, с чем мы как‑то взаимодействуем, — опосредованно. Мы не можем воспринимать настоящую реальность, мы лишь воспринимаем проекцию, которую создали наши органы чувств и мозг.

Мы находимся как бы в ловушке собственного восприятия. Это, кстати, сильно пересекается с книгой Гонсалеса «Остаться в живых». В ней описывается, почему потерявшийся человек гнёт свою линию, хотя очевидно, что он не понимает, где находится. Курпатов об этом дальше тоже пишет:

Сколь бы разумными мы себе ни казались, наш мозг ищет и отмечает только те факты, которые доказывают его правоту, и… — всё, что его установкам противоречит, он жёстко игнорирует

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

В основе нашей иррациональной веры в Спасителя — банальный детский комплекс: когда мы были маленькими, мы ждали помощи от родителей. Что бы ни случилось, они должны были прийти и спасти нас. Теперь мы выросли, а рефлекс остался — мы продолжаем ждать

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

Об отношениях между людьми

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

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

Никому до нас нет никакого дела. А если кто‑то что‑то для нас и делает, то только потому, что это ему самому по каким‑то причинам сейчас нужно. То есть он делает это не для нас, а для себя

Жить за счёт других людей, благодаря их помощи и поддержке — крайне рискованная игра

Когда вы признаётесь кому‑то в любви — факт в том, что вы признаётесь кому‑то в любви. Но не факт, что любите. Если вы думаете, что вы кого‑то любите, факт в том, что вы думаете, что вы его любите, но не факт, что это любовь

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

Если же мы вдруг по каким‑то причинам… перестаём входить в сферу их интересов, они перестают с нами дружить… и любить нас… И мы ведь точно такие же! Если нам человек нравится, если нам с ним хорошо, если он нам почему‑то важен и нужен, то мы его любим… Но потом, когда что‑то происходит в нашем мозгу… мы перестаём в этом человеке нуждаться. Чувство тут же исчезает как дым

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

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

Мы не хотим видеть себя неправыми… чтобы нас тыкали носом в противоречия, которые мы сами же… создаём

Чем несчастливее становится человек, тем с бóльшим пылом и жаром он защищает свои убеждения, своё мнение и свои установки

Все в собственных глазах стоят в два раза дороже, чем мы готовы за это заплатить и чем мы, понятное дело, за это платим. Конечно, они недовольны — ещё бы! Мы их не ценим!

О социальной природе человека

Ещё автор часто напоминает, что люди — социальные животные, и взаимодействие между людьми по большому счёту строится на социальных шаблонах из древности:

Мы очень чувствительны к тому, как люди к нам относятся… И время от времени каждого из нас подобные переживания загоняют в состояние полномасштабного душевного кризиса

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

Нежелание человека умирать и потребность в сексуальных удовольствиях — вещь… абсолютно понятная. Но фундамент своей жизни мы выстраиваем именно на социальной конкуренции

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

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

Две недели назад они сказали и написали одно, потом поговорили с кем‑то и не только стали думать иначе, но решили, что они и раньше думали иначе, а не так, как они на самом деле до этого думали!

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

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

Затем автор объясняет, почему так происходит:

Сначала мозг принимает какое‑то решение, а потом сам же и адаптируется к его последствиям… Наше отношение к жизни — это не то, что мы думаем, а то, какие связи создал наш мозг

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

Например, почему очень трудно бросить какую‑то привычку:

Пока ваш мозг сам чего‑то не захочет… вы сами ничего сделать с его привычками не можете

И вот хорошо о потребностях и желаниях:

Подлинное желание — это не приобретение чего‑то, а восполнение недостатка, устранение дефицита. Если вы испытываете реальный дефицит, тогда у вас и нет проблем с желанием — оно очевидно

О смысле жизни

Самым запоминающимся для меня стало описание смысла жизни в этой книге. Оно отлично легло на мои последние «открытия» и книги, которые недавно читал:

Надо уже перестать проблематизировать страдание… и полагать, что есть какие‑то другие варианты. Их нет. Наше предназначение — жить. Всё. Ничего больше. Единственное, возможно, что имеет смысл сделать, так это научиться жить, не создавая самому себе дополнительных сложностей

Единственное, что на самом деле имеет значение в жизни, — отношения с другими людьми

Идея, что можно раз и навсегда всё решить, приняв некое чудодейственное «правильное» решение, сама по себе попахивает безумием

Короче, советую. Кому‑то может не понравиться стиль, но мне зашло — как будто с приятелем поболтал.

Списочек литературы

Книги Курпатова:

Книги других авторов на тему:

И я тут ещё написал немного:

Уфа, сентябрь 2018

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

Ну, поехали!

Первый двор

Здесь я провёл детство до 6‑го класса. Парковки раньше не было, да и детская площадка выглядела по‑другому. Рядом с песочницей были старые железные качели, лесенка‑радуга и заросшее травой поле, на котором мы играли в футбол.

Мой первый двор
Сейчас тут парковка

В проходе между домами мы играли «в машинки». Правила простые: смотрим на дорогу и ждём, когда поедут машины. Задача в том, чтобы до того, как машина появится из‑за дома, определить, насколько она крутая и сказать «моя или не моя». Грузовики считались зашкваром, а вот бетономешалки были в почёте.

Трубы, на которых мы сидели и играли «в машинки»

Мой дом и адрес

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

ул. Свободы, 38 — мой первый адрес
Магазин «Элита»

Вначале не заходил туда, потому что было стыдно, а потом мы с родителями переехали в другую часть города. Зашёл туда только в прошлом году, когда оказался недалеко. (Нет, она там уже не работала :–)

Первая школа

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

Школа 85

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

Парк Нефтехимиков

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

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

Неработающий фонтан в парке Нефтехимиков
Аттракционы в парке — 1
Аттракционы в парке — 2

В этот же парк однажды классе в 5 или 6 не пришла девочка, которую я пригласил погулять ¯\_(ツ)_/¯

ДК «Новатор»

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

Ставили мы не всю пьесу, а только 5‑е действие, потому что за 3 месяца бы не успели выучить текст — пофлексили, так сказать :–)

Благодаря театралке у меня, вроде, нет боязни выступать перед большой аудиторией.

ДК «Новатор»

А на площади около ДК я научился кататься на двухколёсном велосипеде. Там же в первый раз не справился с велосипедом и врезался в чью‑то машину. Нет, машину не поцарапал и даже не упал!

Кольцевая

Это улица, на которой я впервые в жизни пробежал 5 километров. Тогда я понял, что мне нравятся длинные дистанции. Бегаю до сих пор, рекорд — полумарафон.

Старые дома на Кольцевой
И рядом с Кольцевой

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

Тогда я стал договариваться отдельно с каждым на разные дни, чтобы бегать не всем двором, а по 2–3 человека. Потом, правда, и это работать перестало, пришлось продолжать одному :–)

ТРК «Семья»

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

Подземный переход рядом с ТРК «Семья»

Когда‑то мы там собирались, чтобы поиграть. Было даже время, когда писали свою музыку, но очень недолго, потому что половину состава нашей, кхм, группы по очереди позабирали в армию ¯\_(ツ)_/¯

Вторая школа

После переезда в частный сектор я перешёл в эту школу. Здесь я впервые столкнулся с настоящим буллингом. Несмотря на кучу проблем, которые он мне принёс, это был ценный опыт.

Школа 77

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

Лес около частного сектора

Частный дом, в который мы переехали, находился недалеко от леса. Здесь привычка бегать превратилась в привычку бегать по пересечённой местности.

Лес около частного сектора — 1
Лес около частного сектора — 2

Там же я готовился к экзаменам и ЕГЭ по физике и математике в 10 и 11 классах. И это никак не связано с тем, что «духовность и бла‑бла‑бла». Дома было шумно из‑за младших брата и сестры и готовиться к сдаче было некомфортно совершенно.

А ходить каждый день куда‑то, чтобы и деньги не тратить, и не напрягать особо никого, — ну я смог придумать только вот. С погодой везло, дождей не было!

Гимназия

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

Было тяжеловато, потому что и до школы добираться дальше, и одноклассники с учителями новые, и программа трудная. Но благодаря этому я научился суперважному качеству — заткнуться и делать. Оно потом не раз выручало в университете и на работе.

Гимназия 105

Там же познакомился с Костей, сдружились. В 10‑м классе заинтересовался разработкой и начал заниматься ей. Занимаюсь до сих пор :–)

Чистая архитектура. Часть 3

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

Глава 20. Бизнес‑правила

Коротко:

  • Бизнес‑правила — это правила или процедуры, которые приносят или сохраняют бизнесу деньги.
  • Специфические для приложения правила — это дополнение к бизнес‑правилам.

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

Сущность — это контейнер, который содержит набор критичных правил и данных для их работы.

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

Юзкейсы зависят от входных данных и производят выходные данные, но при этом не зависят от формы, в которой эти данные передаются.

Глава 21. Говорящая архитектура

Коротко:

  • Архитектура — это не про фреймворки.
  • Хорошая архитектура рассказывает, какую систему она описывает, а не на чём построена.

Фреймворки — это инструмент, а не материал. Архитектура должна основываться на юзкейсах, а не на фреймворках. Хорошая архитектура позволяет откладывать решения о выборе фреймворка и менять их, если придётся.

Веб — это механизм ввода‑вывода.

Хорошая архитектура рассказывает, какую систему она описывает, а не на чём построена.

Глава 22. Чистая архитектура

Коротко, чистая архитектура:

  • не зависит от фреймворков;
  • легко тестируется;
  • не зависит от пользовательского интерфейса;
  • не зависит от базы данных;
  • не зависит от каких‑либо внешних агентов.

Внешние слои могут зависеть от внутренних, но не наоборот: 

Сущности инкапсулируют критичные бизнес‑правила. Юзкейсы содержат правила, специфические для приложения. Адаптеры интерфейсов конвертируют данные из формата, удобного для юзкейсов, в формат удобный для внешних слоёв.

Главы 23–25

Коротко:

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

Глава 26. Корневой компонент

Коротко:

  • Корневой компонент — тот, который создаёт, управляет и контролирует все остальные.
  • Корневой компонент должен быть снаружи архитектуры системы.

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

Глава 27. Сервисы

Коротко:

  • Сервисы слабо‑связаны, но так бывает не всегда.
  • Сервисы помогают достичь независимого деплоя, но так тоже бывает не всегда ¯\_(ツ)_/¯
  • Архитектура определяется не сервисами как таковыми, а границами между значимыми компонентами системы.

Глава 28. Тесты

Коротко:

  • Тесты — часть системы.
  • Если тесты сильно связаны с компонентами, то небольшое изменение может уронить сотни тестов.

Что дальше

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

Вместе с этой книгой советую прочитать пару других:

Предыдущие части:

И ссылки из конспекта:

Самое важное в самокопании

Тьфу, уже 3 поста о самокопании накатал, но о самой важной вещи не написал. А самое важное как ни странно:

Меньше думать!

«Шта? Сам же говорил, задавать вопросы, отвечать на них»

Да, верно. Но отвечать нужно исходя из эмоций и чувств, а не «разумных» рассуждений.

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

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

И это капец как отвлекает от цели — понять, что меня парит, и откуда это взялось.

Почему важно акцентировать внимание на эмоциях

Потому что нельзя разрулить логикой то, с чем она не умеет работать. Курпатов в «Красной таблетке» пишет:

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

Задача‑то не в том, чтобы придумать себе красивых отговорок, а чтобы докопаться до правды. Но без опоры на чувства всё, к чему я приду — это «объяснения», почему мир такой несправедливый, и как плохо плохая жизнь со мной обошлась.

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

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

Пусть разум задаёт вопросы

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

Сколь бы разумными мы себе ни казались, наш мозг ищет и отмечает только те факты, которые доказывают его правоту, и напротив — всё, что его установкам противоречит, он жёстко игнорирует

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

Но вот отвечать на вопросы «разуму» уже должны помогать эмоции и чувства, потому что они — такая же важная часть мышления, если не более важная. Курпатов в другой его книге «Чертоги разума» пишет:

Нам кажется, что у нас есть мышление — как способ решения жизненных задач, и другие (не мыслительные) психические процессы: воспоминания, мечтания, переживания… Это разделение ошибочно

Разделение действительно ошибочно. Я могу отвечать на один и тот же вопрос по‑разному, в зависимости от эмоционального состояния — это ли не показатель важности эмоций?

«А как научиться их замечать‑то?»

¯\_(ツ)_/¯

Мне помогает заглядывать туда, куда страшно заглядывать. Если я чувствую, что тема неприятна, скорее всего, я где‑то рядом. Пока работает, как дальше будет, не знаю.

Почитать на тему

Книги:

И статьи:

Чистая архитектура. Часть 2

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

Глава 12. Компоненты

Коротко:

  • Компонент — наименьшая сущность, которую можно задеплоить, как часть системы.
  • Компоненты, DLL — плагины к бизнес‑правилам.

Глава 13. Связность компонентов

Коротко — чтобы определить, к какому компоненту относится тот или иной класс, следует пользоваться 3 принципами:

  • принцип эквивалентности переиспользования и перевыпуска;
  • принцип общей причины для изменения;
  • принцип совместного переиспользования.

Принцип эквивалентности переиспользования

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

Принцип общей причины для изменения

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

Принцип совместного переиспользования

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

Глава 14. Сочетаемость компонентов

Коротко — чтобы определить отношения между компонентами, следует пользоваться 3 принципами:

  • принцип ацикличности зависимостей;
  • принцип стабильных зависимостей;
  • принцип стабильности абстракций.

Принцип ацикличности зависимостей

Не допускайте зацикленности в графе зависимостей компонента. Если в зависимостях есть цикл, его можно разорвать одним из 2 способов:

  • применить принцип инверсии зависимостей;
  • создать новый компонент, от которого будут зависеть компоненты, вызывающие цикличность.

Принцип стабильных зависимостей

Зависимости должны быть направлены в сторону устойчивости. Некоторые компоненты должны быть более изменяемыми, чтобы удовлетворять изменения в бизнес‑требованиях. И такие менее стабильные компоненты должны зависеть от более стабильных.

Чтобы узнать, насколько компонент нестабилен, можно посчитать количество входных и выходных зависимостей.

Нестабильность = Кол‑во выходных / (Кол‑во входных + Кол‑во выходных)

Принцип стабильности абстракций

Компонент должен быть настолько же абстрактным, насколько он стабилен.

Абстрактность = Кол‑во абстрактных классов и интерфейсов в компоненте / Общее количество классов в компоненте

По оси Х — нестабильность, по оси Y — абстрактность. Следует придерживаться линии main sequence и избегать зон по углам:

Глава 15. Что такое архитектура

Коротко:

  • Цель хорошей архитектуры — облегчить разработку, деплой и поддержку системы.
  • Хорошая архитектура выделяет бизнес‑логику и считает её важнейшим элементом системы.
  • Хорошая архитектура пытается построить систему так, будто количество непринятых решений относительно деталей — максимально.

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

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

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

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

Глава 16. Независимость

Коротко — архитектура должна поддерживать:

  • юзкейсы;
  • поддерживаемость;
  • разработку;
  • лёгкий деплой системы.

Мы не знаем заранее всех юзкейсов, организацию команды разработки, требования к деплою и т. д. А даже если бы и знали, то они всё равно бы менялись во время жизни системы. Хорошая архитектура позволяет вносить изменения дешевле.

Следует делить систему на слои. Например:

  • независимые бизнес‑правила;
  • бизнес‑правила под конкретно это приложение;
  • пользовательский интерфейс;
  • база данных и др.

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

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

Разделять систему можно по‑разному:

  • на уровне исходников;
  • уровне развёртывания;
  • и сервисном уровне.

Какой способ подходит, зависит от самого проекта, стадии, на которой он находится и других параметров.

Глава 17. Границы

Коротко:

  • знание одного компонента системы о других должно быть ограничено;
  • границы должны отделять сущности, которые имеют значение (для бизнес‑логики) от тех, которые не имеют значения;
  • основа — бизнес‑логика.

Следует избегать преждевременных решений. Решение преждевременное — если оно не относится к бизнес‑требованиям. Выбор базы данных, фреймворка, даже языка программирования — решения преждевременные.

Границы должны отделять сущности, которые имеют значение (для бизнес‑логики) от тех, которые не имеют значения. Например, бизнес‑логика не должна зависеть ни от схемы БД, ни от языка запросов.

В хорошей архитектуре бизнес‑логика — это основа, а всё остальное: устройства ввода‑вывода, БД и т. д. — плагины к ней:

Что дальше?

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

Раньше ↓