Когнитивный инжиниринг: почему ваш код — это слепок вашей психики (Каскад 1)

Мы привыкли думать, что архитектура программ рождается из требований бизнеса, бюджетов и технологий. Но в самом начале любого проекта лежит архитектура мышления — разработчика, заказчика, пользователя. Эта статья и ряд других в серии «каскад» — попытка рассмотреть проектирование как отражение когнитивных механизмов человека. Не UX, не поведение пользователей, а именно то, как фазы нашего мышления формируют будущую систему. И главное — как, поняв это, создавать более устойчивые и человечные архитектуры.

Когнитивный инжиниринг: почему ваш код — это слепок вашей психики (Каскад 1) - 1

Откуда взялась эта идея

Меня зовут Валерий, я работаю low‑code разработчиком в компании БФТ-Холдинг. По квалификации — исследователь, по специальности приборы и методы контроля (к.т.н.), и практический психолог. Моя экспертиза лежит на стыке точных измерений и человеческого восприятия. И однажды я заметил любопытную вещь.
В книгах по разработке ПО подробно расписаны этапы анализа, генерации идей, тестирования, итераций. Но если присмотреться, это не просто инженерные процедуры. Это точные отражения того, как работает человеческое мышление:

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

Методологии разработки — это формализованная проекция когнитивных процессов. Но в профессиональной литературе эти этапы описываются разрозненно: как инструменты, лучшие практики, фреймворки. Редко кто задумывается об их ��бщем источнике — архитектуре мышления. Из‑за этого процессы смешиваются, путаются или применяются не в той фазе. По отдельности использовать процессы – низкоэффективно, а что бы повысить эффективность – нужно знать и видеть весь процесс целиком. Больше знаний – больше контроль и понимание!
Я поставил себе задачу: собрать когнитивную «карту» проектирования, показать фундаментальные механизмы мышления и проследить, как они превращаются в архитектурные решения. И тогда становится ясно, чем на самом деле является программное обеспечение: не просто кодом, а внешней конструкцией, продолжающей и усиливающей наши когнитивные способности.

Почему мы вообще создаём ПО? (и при чём тут мозг)

Обычно мы проектируем систему «от результата»: сначала цель, потом — инструмент для её достижения.
После завершения разработки программа становится самостоятельным объектом — нашим инструментом. А у нас остаются воспоминания о том, как мы искали решения, проверяли гипотезы, натыкались на тупики. Эти действия — элементы другой системы, системы нашего мышления.
Теперь давайте шагнём назад, из процесса, выгрузимся из него, так сказать перестанем ассоциировать себя с ним, и посмотрим на процесс шире.
Зачем же мы создаём ПО? Не просто ради автоматизации, а чтобы усилить, дополнить или изменить возможности собственного мозга.
Вот лишь несколько примеров (на самом деле их гораздо больше, расскажу в других статьях):

• Расширение памяти. Облачные хранилища, поисковики, базы данных — внешняя память, которая, в отличие от человеческой, не искажается и не забывает.

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

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

• Делегирование рутины. Мозг передаёт ПО задачи, которые выполняет медленно или с ошибками: сложные расчёты, безошибочное повторение операций, хранение точных дат.

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

• Создание контролируемой среды. Мы строим цифровые пространства, где влияние хаоса минимизировано, а нужные факторы усилены.

Таким образом, ПО — это не просто код, а продолжение нашего познания. И процесс создания ПО неизбежно отражает этапы самого познания.

Как мышление превращается в код: разбор на реальном примере

Чтобы было понятнее, давайте представим, что команда разрабатывает онлайн‑редактор документов с совместным доступом (вроде Google Docs). Я пройду по всем фазам мышления и покажу, какое архитектурное решение за каждой из них стоит.

🧠Фаза 1. До сознательная подготовка (то, что происходит ещё до формального старта)

  1. Понятийный механизм

Разработчики начинают с базовых сущностей: «документ», «пользователь», «операция», «версия». Без чёткого понятийного аппарата нельзя строить архитектуру.

2. Абстрагирование

Текст перестаёт быть просто файлом «.doc» — он превращается в с��руктуру данных, последовательность операций или состояние модели.

3. Обобщение

Разные типы контента (текст, таблицы, презентации) обобщаются до единого принципа: «редактируемая структура с историей изменений».

4. Классификация

Пользователи делятся на роли: владелец, редактор, комментатор, читатель. Это ляжет в основу модели прав доступа.

5. Определение (дефиниция)

Формулируется чёткое определение: «Документ — это синхронизируемая модель состояния, поддерживающая конкурентные изменения».

6. Операции с понятиями

Сравниваются подходы: «Это ближе к файловой системе или к распределённой базе данных?»

7. Вербализация

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

8. Восприятие + внимание

Команда фиксирует «боль» пользователей: «Версии файлов конфликтуют, правки теряются». Это точка запуска проекта.

9. Эмоциональный интеллект

Есть реакция пользователей и амбиция сделать по‑настоящему совместный инструмент. Эмоциональная значимость удерживает фокус.

10. Память

Вспоминаются предыдущие решения: блокировки файлов, системы контроля версий, распределённые базы.

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

🧩 Фаза 2. Осмысление и структурирование проблемы

11. Анализ

Проблема разбивается на части: синхронизация, конфликт изменений, сохранение истории, управление доступом.

12. Абстрагирование

Отбрасывается второстепенное (дизайн кнопок). Выделяется ядро: «конкурентные операции над общей структурой».

13. Сравнение

Проводятся аналогии: Git? Базы данных? Репликация? Текст рассматривается как поток операций.

14. Системное мышление

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

15. Целеполагание

Формулируется цель: «Несколько пользователей могут редактировать документ одновременно без потери данных».

16. Критическое мышление

Проверяется реалистичность: «Что при плохой сети?», «Что, если 50 человек правят один абзац?».

💡 Фаза 3. Генерация решений (инкубация и озарение)

17. Дивергентное мышление

Генерируются варианты: блокировки, merge, OT (операционные трансформации), использование CRDT, мастер‑сервер, peer‑to‑peer.

18. Блуждание ума, инсайт (DMN – Default Mode Network)

После паузы, отвлечения на другие задачи или род занятий (что лучше), приходит инсайт: «Не синхронизировать текст, а синхронизировать операции».

19. Аналогическое мышление

Сравнение с распределёнными системами и транзакционными журналами.

20. Комбинаторика

Объединяется: журнал операций + временные метки + трансформация конфликтов.

21. Интуиция

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

22. Пространственное мышление (если нужно) Визуализация идей, мысленные манипуляции с формами. Визуализация и рисование низкодетализированных скетчей (wireframes) экранов: где кнопка «создать групповой заказ», как выглядит общая корзина, экран участника.

🔎 Фаза 4. Верификация, синтез, планирование

23. Конвергентное мышление

Из множества вариантов выбирается нужная архитектура (например, OT).

24. Критическое мышление

Проводятся стресс‑тесты сценариев: разрывы соединения, конфликт правок, откат изменений.

25. Моделирование

Мысленный прогон: 10 пользователей печатают одновременно. Система сохраняет консистентность (согласованность)?

26. Синтез + планирование

Создаются API, схема взаимодействия клиент‑сервер, протокол обмена операциями.

27. Конкретизация

Перевод абстрактного решения в конкретные шаги, этапы, техзадание.

28. Итеративная петля

После запуска появляются новые слои: комментарии, история версий, предложения правок, ИИ‑помощники.

🚀 Фаза 5. Реализация и коррекция

29. Память (процедурная)

Автоматизация рутинных шагов реализации, если это навык. Использование привычных инструментов: Jira для задач, Confluence для документации, проведение ревью прототипов по отработанному сценарию.

30. Внимание (устойчивое и распределенное)

Удержание фокуса на процессе, переключение между подзадачами. Удержание фокуса на всей цепочке задач, переключение между обсуждением API с бэкендером, UI с дизайнером и правками в ТЗ.

31. Мета познание (мониторинг)

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

32. Обратная связь (через восприятие)

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

33. Анализ + сравнение

Сопоставление полученного результата с ожидаемым. Выявление расхождений. Если расхождение велико → возврат на Фазу 1, 2 или 3 с уточнёнными данными. Начинается новый виток.

Ловушки мышления, которые подстерегают на каждом этапе (будет выделено в отдельную статью)

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

  1. На этапе анализа легко попасть в ловушку фрейминга: то, как мы поставили вопрос, определяет ответ. Если спросить: «Как нам избежать потери данных?», мы будем искать защиту. Если спросить: «Как сделать совместное редактирование удобным?», мы придём к OT/CRDT. Одна и та же задача, разные рамки — разные архитектуры.

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

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

  4. На этапе критики опасна склонность к подтверждению своей точки зрения: мы ищем подтверждения правильности выбранного решения, а не опровержения. Команда, влюбившаяся в OT, может недооценить сложность реализации, хотя CRDT был бы проще.

  5. На этапе моделирования мы часто переоцениваем свою способность удержать в голове все сценарии (иллюзия прозрачности). Кажется, что система понятна, но в реальности всплывают нюансы, которые не были учтены.

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

Что даёт нам это понимание?

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

• Мы понимаем, в какой фазе сейчас находимся, и не пытаемся генерировать идеи, когда нужно критиковать (и наоборот).
• Мы можем выносить во внешние инструменты те операции, с которыми мозг справляется плохо: долговременное хранение точных данных, сложные расчёты, бескомпромиссная логика.
• Мы проектируем системы, которые усиливают человека, а не перегружают его, потому что видим их как продолжение нашего познания.

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

Автор: fiksnorthstar56

Источник

  • Запись добавлена: 02.03.2026 в 02:01
  • Оставлено в
    Rambler's Top100