Как управлять сложностью? Декларативный и Императивный стиль
Что это вообще такое?
Декларативный - это способ выражения мыслей или описания задачи основанный на объявлении цели или результата («что нужно сделать»)
Императивный - это способ выражения мыслей или описания задачи основанный на пошаговом описании процесса («как это сделать»)
Декларативный стиль — опиши цель.
Императивный стиль — опиши процесс.
Декларатив: “Что должно быть?
Императив: “Как сделать?”
Декларатив: “Приготовь жареный лук”
Императив: “Возьми нож, нарежь лук, обжарь 3 минуты…”
На примере рабочей ситуации:
Менеджер ответственный за проект в основном склонен мыслить декларативно. Начальник (Декларативный уровень): «Нам нужно, чтобы сайт открывался за 1 секунду, а не за 5». Это описание результата.
Исполнитель же, например инженер (Императивный уровень): «Хорошо. Для этого я сожму картинки, настрою кэширование на сервере и перепишу SQL-запрос». Это конкретные действия по достижению результата.
Любопытно что происходит когда менеджер спускается не на свой уровень и пытается в императив(наверняка у вас такое бывало): "Сожми картинки через Photoshop с качеством 80%»
Он лезет не в свое дело (инженер может знать инструмент лучше и как лучше сделать) Это вызывает раздражение, а в худшем исходе получится говно продукт.
Справка:
Императивный стиль — это исторически первый способ программирования: машине говорили буквально, что делать (команда за командой).
Декларативный стиль появился позже, когда: программы стали сложнее, и стало важно описывать намерения, а не детали. SQL (1970-е) — один из первых массовых декларативных языков.
Взаимодействие с AI — это вершина декларативного подхода. Естественный язык (LLM) → Чистая декларация. Ты говоришь словами, чего хочешь.
Зачем мне эти термины?
Термины хороши тем, что помогают управлять сложностью.
Знание того что существуют уровни управления сложностью, дает как бы переключатель режимов мышления перед решением проблемы. Закапываемся в детали или идем широкими мазками.
1. Экономия ресурсов мозга.
Пример: нужно отсортировать список в эксель.
Вместо того чтобы выдумывать свои макросы и придумывать сортировку(императивно), можем подумать: Может есть инструмент(декларативный) для этого? Ведь это стандартная задача которая вероятно уже решена, надо только найти кнопку.
2. Отладка процессов.
Ты дал задачу человеку: сделай красивый дизайн (декларативно), но человек не знает как. Значит ему нужен императивный уровень(инструкция)
Если ты дал инструкцию, а получил неправильный результат, значит твоя инструкция кривая и нужно было идти на декларативный уровень. (работник сам знает лучше как надо)
3. Переключение "языка" для разговора на одном уровне.
Заказчик хочет красивый сайт с красными кнопками. А разработчик говорит про "в базе данных связь "многие-ко-многим" и нам придется джойнить три таблицы..." Никто из не техраней ничего не понял. И вероятно все зляться)
Что тут можно сделать? Переводим на декларативный уровень: Мне нужно чтобы пользователь видел яркие кнопки для заказа. (Тут явно никому не нужны технические детали)
Этот кейс особенно интересен так как показывает конфликт между спецами и менеджерами. Одни закопались в технике и деталях реализации, другие летают в облаках и абстрактных хотелках и не видят друг друга.
Сложность - когда в голове слишком много деталей. А управление переключаться между уровнями - является управлением сложностью. И теперь такой переключатель есть и у вас.
И ещё раз закрепим:
Режим Декларативность - спрятать все детали и управлять большими блоками информации.
Режим Императивность - дробим блоки и достаем мелкие детали информации.
Что с этим делать решать вам) Мне показалось это очень интересным. ✔️

