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

Всем доброго.
Приветственный пост опубликую как-нибудь потом. Когда допишу.
А начну, как полагается, с выводов
Основная идея текста
Различные задачи требуют различного уровня детализации для решения. Разные роли, в работе, решают разные задачи и обладают разным взглядом на проблемы. Это связано с различным уровнем погружения в предметную область.
Вывод
Понимание того, какой тип задач решают коллеги других ролей, упростит внутреннее взаимодействие.
Понимание влияния конкретной задачи на конечную цель, повысит качество реализуемых решений.
Если ты всё понял — держи буську. Дальнейшее чтение — на твое усмотрение. Если не понял — то же и на него же. А я попробую немного приподраскрыть тему.
Что вообще происходит?
Как фундаменталист, я считаю, что, для эффективного существования в какой-либо среде, требуется осознание базовых понятий этой среды.
Как предприниматель, я не могу отрицать необходимость сугубо прикладных знаний и умений.
Как системный аналитик — «Я не понял. Объясните пожалуйста.»
В своей повседневной деятельности, мне приходится взаимодействовать с различными людьми - от топов моноцветных российских компаний, до голодранцев-студентов из таких мест, о которых ты, возможно, и не слышал. Это люди в диапазоне от тех, кто принимает долгосрочные стратегические решения, до тех, кто реализует конкретные локальные задачи.
Первые любят называть вторых "исполнители". Для простоты, предлагаю называть первых "менеджеры". Да, между ними есть еще пятьдесят один с половиной оттенок ЧСВ распределения обязанностей, но я не хочу в это лезть. Лезть я хочу в другое.
Общаясь со всеми этими людьми, сформировалось в моей голове наблюдение: несмотря на то, что многие из них, без иронии, профессионалы своего дела и умеют эффективно решать рабочие задачи, по какой-то причине, ограничиваются существованием на своем уровне абстракции.
Древнеегипетский конфликт:
- Зачем мне тащить этот камень через пустыню, начальник? Это глупо!
- Ты — исполнитель. Вот и исполняй.
- Давайте хотя бы надвое его расколем — тяжело ведь!
- Ты не видишь всей картины!

Если ты в секунду однозначно выбрал одного дурака из двух — у меня для тебя плохие новости. Но чья позиция более неправильная - не вопрос этой статьи.
В этой статье я хочу только накинуть базы — напомнить, что различный взгляд на вещи, как бы это сказать, существует. Более того, он всегда обоснован.
К делу
Итак, всего пара сотен слов, а мы уже подобрались к самой статье — Абстракция и Уровни абстракции.
Далее я расскажу о том, что такое Абстракция, почему существуют различные ее уровни и зачем их различать.
Почему «уровень абстракции» и «контекст» — это разные вещи, пока писать не планирую. Надеюсь на понимание. Не меня. Разницы.
Для начала, определю, что я называю «Абстракция»:
-
Абстракция (абстрагирование) — это процесс. Процесс уменьшения детализации в восприятии объекта.
-
Абстракция — это объект. Объект без избыточных для решаемой задачи атрибутов.
Уровнем абстракции определяется степень детализации предмета рассмотрения.
Часто, уровни описывают светофором: высокий, средний, низкий. Вижу некую иронию в использовании абстрактного именования для уровней абстракции.
Я считаю уровень абстракции штукой относительной. Поэтому чаще использую комбинации букв типа «более» или «менее» в сочетании с упомянутым светофором: «более высокий», «менее средний» и тд.
От более абстрактного к более детализированному:
Животное — собака — пекинес.От более обобщенного к более конкретному:
Растение — овощ —фронтендеркабачок.
Абстракция полезна для экономии ресурсов. В первую очередь, когнитивных — выбираешь подходящий для себя уровень абстракции и не греешь голову о деталях, которые не играют роли в решаемой задаче.
При выборе уровня, важно не промахнуться и не взять слишком абстрактный объект в работу — это может привести к формированию слишком обобщенного решения и упущению значимых деталей. Детальная же проработка, в свою очередь, может быть или не быть избыточной, но точно потребует больших вложений.
Если задача «сменить резину», то вопросы типа «снег уже выпал?» или «а у меня есть машина?» уже не играют роли — задача «сменить резину» уже сформирована и задавать упомянутые вопросы уже поздно.
Если цель статьи — напомнить людям про один из базовых аспектов
В целом, и этих примеров достаточно, чтобы понять, что я хочу сказать. Если ты все понял — ты очень молодец. Если не понял — тоже молодец, но не очень.
Откуда ноги?
Давай немного по причинам. Буквально в три шага.
Первоочередной причиной существования идеи уровней абстракции является иерархичность устройства вообще всего в мире. Ну, кроме элементарных частиц. Но и тут, как мы знаем, элементарной частицей называют то, из чего состоит элементарная частица предыдущего поколения, поэтому предлагаю считать не иерархичной только рекурсию.
Ок. Ладно. Проехали.
Так вот, любой объект или явление, так или иначе, из чего‑то состоит: организм состоит из органов, органы из клеток, клетки из органелл и тд; процесс состоит из действий, действия определяются начальным и конечным состояниями, состояния связанны с системой отсчета и тд.
Тут всё понятно интуитивно.
Следующей причиной является ограниченность восприятия. Человеческий
Третьей причиной можно назвать контекст, а точнее — адаптивность. Как в зависимости от контекста, в котором мы решаем задачу, могут меняться значимые детали ее условий, так и обстоятельства рассмотрения информации, могут менять саму задачу применения этой информации. Изменение уровня абстракции рассматриваемого явления позволяет адаптировать процесс рассмотрения под текущие условия, а гарантировать его эффективность позволит корректный выбор этого уровня.
Ну вы поняли:
1. Все вокруг из чего‑то состоит
2. Составляющих может быть много
3. Работать с целым или с его составляющими — зависит от задачи.
Описанное выше дает нам фундаментальное обоснование существованию «общего» и «детального» решений. Да‑да, даже у таких простых вещей может быть причина.
Теперь пара слов о применении
Малое количество деталей общего решения, позволяет рассматривать задачу более широким взглядом. Другими словами, если при решении не упарываться в детали, то в мозгах останется ресурс для того, чтобы учесть, например, возможные связи решения с окружающим миром.
Детальное же решение позволяет определить реализацию. В конечном счете, детальное решение — это последовательность конкретных шагов, приводящих к требуемому результату.
Чаще всего, при создании детального решения учитывается сильно больше различных элементов. Но, в отличии от общего решения, эти элементы обычно однородны — похожи между собой и обладают понятными связями.
В общих решениях количество деталей обычно поменьше. Но при этом чаще приходится решать задачу одновременно в нескольких не очень похожих областях.
Напомню один нюанс — чтобы куда‑то прийти, полезно знать где находишься сейчас. И для детального решения более значимым является исходное состояние системы. Оно определяется конкретными атрибутами элементов решения.
Здесь влияние может оказывать что угодно:
Доменная модель, функциональные зоны и зоны ответственности
Технологический стек
Сложность задачи и опыт команды
всякое разное другое
Заметили, а? Ну заметили же? У нас тут влияние требований развернулось. Если раньше могло возникнуть ощущение, что только общее решение накладывает требования на детальное, то теперь видно, что обратное влияние тоже имеет место быть. Да, иногда, реализовать красивое общее решение задачи может быть намного больнее ожидаемого, из‑за требований, которые выявились при детальной проработке.
Еще раз — реализовать решение возможно только при условии, что система в которой это решение реализуется, обладает свойствами, допускающими эту реализацию.
А как мы выяснили ранее, общее решение может упускать эти детали, т.к. сконцентрировано на задачах другого уровня.
Заключение
Требования бизнеса — задача высокого уровня абстракции. Менеджеры, в поисках способов решить эту задачу, хотят изменить систему так, чтобы она удовлетворяла этим требованиям. Они ищут ответ на вопрос «Что должна уметь система?»
Исполнители, в свою очередь, решают задачи более низкого уровня абстракции. Они отвечают на вопрос «Как именно это будет работать?»
Для эффективного решения, нельзя выделить «более значимый» или «менее значимый» уровень абстракции. Задачи высокого уровня позволяют определить вектор движения. Задачи низкого уровня определяют конкретные шаги, его осуществляющие.
Чтобы исполнитель мог найти наиболее качественное детальное решение, ему нужно ясно понимать цели бизнеса.
Чтобы не генерировать нерешаемые задачи, менеджеру нужно учитывать ключевые аспекты реализации.
Неосведомленность исполнителя неизбежно будет приводить к быстро устаревающим локальным решениям.
Самоуверенность менеджера неизбежно будет приводить к повышению стоимости реализации.
Закрепляем
Хочешь получить решение — уточни у «исполнителей» его достижимость.
Но к этому, если не забуду, вернусь в заключении. Ну или в телеге. Отдельной статьей.
Если твой исполнитель «не видит всей картины», значит он не понимает что делает. А тебе, менеджер, оно надо?
И казалось бы, причем тут системные аналитики =)
Автор: systemless_analyst