NF
Уровень абстракции наоборот - уровень детализации. И мы хотим всегда оставаться достаточно конкретными чтобы понимать что происходит зная о том как это происходит как можно меньше.
Если у вас в интерфейсе рядом 2 кнопки - "отправить сообщение на email" и "сохранить заказ в бд", то пользователь спросит вас - что такое бд?
Или если пользователю на сайте показать просто цифру 404, то ему нужно будет подумать о деталях которые его волновать не должны, а именно о том что такое http и какие статус коды есть. Заменив 404 на "страница не найдена" мы снижаем детализацию, при этом ответ все ещё достаточно конкретный, т.к. пользователь знает или может догадаться что на сайте есть страницы, по аналогии с книгами.
И мы всегда хотим чтобы всё что мы показываем пользователю было понятным и не требовало дополнительных источников знаний, будь то документация или гугление.
Точно так же когда мы пишем код, мы хотим чтобы открывая проект, файл, класс или функцию мы могли не смотреть в другие файлы/классы/etc, а так же чтобы когда мы хотим что-то добавить мы ожидали что в контексте на который мы сейчас смотрим есть (инкапсулировано) всё что нам нужно. Так же если мы не ожидаем чего-то увидеть в этом файле, то мы бы банально не стали это в нем искать.
Так же с разделением по слоям, мы ожидаем, что в центре домена есть "сделать бизнесу хорошо", а чем дальше мы от центра тем больше деталей "что значит сделать бизнесу хорошо? - соблюдать такие-то такие-то бизнес правила" будет обозначено. Переходя к слою приложения мы уже можем не думать о том что конкретно делают те или иные бизнес правила, нам достаточно знать их названия, и эти названия должны образовывать язык который будет на столько простым, чтобы всё что мы хотим сказать можно было выразить одним словом, словом понятным для нас и бизнеса без уточнения деталей(без поиска определения в словаре, где используется слова из "другого" языка).