{ "index": 86, "slug": "editorial-2025-08-mechanism-tool-ux-research", "title": "UX внутреннего инструмента: от наблюдения к проверяемому решению", "excerpt": "Внутренний интерфейс ломается не только из-за плохой кнопки. Разбираем цепочку consent → observation → code → theme → decision, отрицательные ветки и критерий готовности.", "contentHtml": "

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

\n

Внутренний инструмент нужно исследовать через границу доказательства. Сначала фиксируют, что разрешено наблюдать и хранить. Затем записывают видимое действие. Потом группируют записи, формулируют вопрос и только после этого выбирают следующий эксперимент. Цепочка выглядит так: consent → observation → code → theme → decision. Каждый следующий уровень допускает более сильное решение, но не стирает ограничения предыдущего.

\n

Почему одна цитата не объясняет проблему

\n

Фраза «не нашёл владельца» — это не причина и не предложение для интерфейса. Это наблюдение, если оно привязано к задаче: человек прочитал статус, дошёл до поля owner и задал вопрос о следующем ответственном. Запись не доказывает, что термин плох, что все пользователи теряются или что нужна кнопка «Написать владельцу».

\n

У наблюдения должны быть идентификатор сценария, видимое действие, короткий code и uncertainty. Code собирает похожие факты. Он не ставит диагноз. Например, owner-unclear означает только, что в данном маршруте не удалось найти владельца следующего шага. Uncertainty говорит, чего запись не установила: частоту, причину и переносимость на другие роли.

\n

Механизм и граница силы вывода

\n

Consent boundary. До разговора определяют цель, тип evidence, наблюдение, запись и путь отзыва. Для внутреннего сотрудника действует та же необходимость добровольного согласия, что и для внешнего участника. Если разрешены обезличенные заметки, запись экрана не появляется «для удобства анализа». Отозванное согласие останавливает hand-off и требует следовать правилам хранения организации.

\n

Observation. Запись описывает видимое действие или вопрос в заданном сценарии. «Курсор остановился у owner» сильнее, чем «человек растерялся»: первое можно проверить по маршруту, второе уже содержит интерпретацию.

\n

Code и theme. Code даёт стабильное имя детали. Theme объединяет несколько codes в проверяемый вопрос. Два наблюдения про owner и статус могут образовать theme next-step-visibility: видит ли исполнитель, что делать после текущего состояния. Theme не отвечает, какая кнопка нужна.

\n

Decision. Решение выбирает candidate change и следующий follow-up. Оно ссылается на observation ids, содержит claim и отмечает статус not-established, если эффект ещё не проверен. Decision без ссылок — список предпочтений. Decision с отсутствующей ссылкой получает STOP.

\n
Матрица связи observation, code, theme и decision: неполная граница consent или отсутствующая ссылка останавливает переход к candidate change
Матрица показывает переход от двух synthetic observations к теме и следующему эксперименту. Она не показывает процент удобства и не доказывает эффект изменения.
\n

Учебный пример с отрицательной веткой

\n

Ниже — только фиксированный synthetic пример. В нём нет реальных людей, заявок, записей, API, telemetry и production-данных. Есть карточка access request, статус processing и поле owner. Нейтральная задача просит показать, как найти состояние заявки и назвать следующий вопрос. Ведущий не подсказывает будущую кнопку.

\n
const observation = { id: 'synthetic-observation-owner-v1', scenarioId: 'synthetic-scenario-access-request-v1', evidenceKind: 'de-identified-note', statement: 'Статус прочитан; курсор остановился у owner; следующий вопрос: кто отвечает после отправки?', codeIds: ['code-owner-unclear-v1'], uncertainty: 'Не установлены частота и причина остановки.' }; const decision = { observationIds: ['synthetic-observation-owner-v1', 'synthetic-observation-status-v1'], theme: 'next-step-visibility', candidateChange: 'Добавить компактный блок следующего шага.', claim: 'not-established', followUp: 'Повторить тот же neutral scenario.', status: 'synthetic-follow-up-only' };
\n

В нормальной ветке инспектор проверяет, что оба observation id существуют, code есть в codebook, scenario нейтрален, а consent разрешает именно этот тип заметки. Результат — не «интерфейс улучшен», а разрешение на изолированный follow-up. В учебном примере нужно повторить ту же задачу с заранее описанным изменением и заново записать наблюдаемое действие.

\n

В отрицательной ветке decision ссылается на missing-observation-v1. Инспектор возвращает decision-not-traceable-to-evidence и не чинит ссылку автоматически. Владелец восстанавливает исходную запись или создаёт новый сценарий. Если consent имеет статус withdrawn, проверка останавливается раньше темы. Если prompt звучит как «вам ведь не хватает большой кнопки?», результат — neutral-task-scenario-required. Удачный ответ на наведённый вопрос не становится evidence.

\n

Симптом → причина → проверка → действие

\n
Диагностика цепочки от наблюдения до решения
СимптомПричинаПроверкаДействие
В задаче сразу нарисована кнопкаTheme подменили candidate changeЕсть ли два observation с видимым действием?Вернуться к нейтральному сценарию и записать uncertainty
В заметке написано «пользователь запутался»Интерпретация смешалась с фактомМожно ли описать действие без оценки?Переписать statement и сохранить контекст
Решение выглядит убедительно, но ссылок нетDecision вырос из памяти встречиКаждый cited id находится в том же наборе?Остановить hand-off до восстановления evidence
Для анализа включили запись экранаТип evidence расширили после согласияРазрешены ли запись и наблюдатели в boundary?Не использовать запись; сверить policy и consent
После изменения объявили «UX улучшился»Follow-up выдали за результатЕсть ли сравнимый сценарий и измеримый критерий?Поставить claim not-established и назначить отдельную проверку
\n

Порядок работы для одной UX-задачи

\n
  1. Открыть boundary. Записать цель, допустимый тип evidence, хранение, наблюдателей и порядок отзыва.
  2. Описать neutral scenario. Назвать исходное состояние, действие и условие успеха. Убрать из prompt будущую кнопку и оценку участника.
  3. Сделать observation. Записать действие или вопрос, scenario id и uncertainty. Не называть причину, которую человек не показал.
  4. Применить code. Выбрать существующую метку из codebook. Если метки нет, не расширять вывод одной записью.
  5. Сформулировать theme. Объединить несколько наблюдений в вопрос и назвать альтернативу. Theme должна допускать отрицательный ответ.
  6. Собрать decision log. Добавить candidate change, observation ids, claim и follow-up. Проверить каждую ссылку, consent и статус.
  7. Запустить следующий тест. Повторить сопоставимый сценарий. Не объявлять эффект до заранее заданного критерия.
\n

Ограничения и отрицательный путь

\n

Две заметки не дают частоту, репрезентативность или объяснение задержки. Codebook не заменяет исследователя. Neutral prompt не устраняет социальное давление во внутренней команде. Обезличивание не отменяет требований к доступу, сроку хранения и отзыву. Для чувствительных данных нужны policy организации, владелец данных и юридическая проверка.

\n

Механизм не выбирает лучший интерфейс. Он не даёт слабому evidence незаметно превратиться в backlog ticket. Candidate change может оказаться неверным. При сломанной ссылке, неподтверждённом consent, наведённом prompt или несопоставимом follow-up результатом должен быть STOP, а не новая гипотеза.

\n

Проверяемый критерий готовности

\n

UX-разбор готов, если независимый reviewer может пройти от decision до каждой observation и обратно к одному neutral scenario. У каждой observation есть видимое действие, scenario id, code и uncertainty. У decision существуют все cited ids, есть claim not-established до проверки эффекта и указан следующий сопоставимый сценарий. Boundary разрешает использованный evidence. Для withdrawn consent или любой сломанной ссылки проверка возвращает STOP. Это проверяемый контракт, а не обещание, что интерфейс уже стал удобнее.

\n

Проверяемые источники

" }