{ "index": 85, "slug": "editorial-2025-08-field-tool-ux-research", "title": "Как исследовать UX внутреннего инструмента и не принять мнение за факт", "excerpt": "Разбираем запрос «сделать форму удобнее» через рабочий сценарий, наблюдаемое действие и проверяемый hand-off. Внутри — контракт заметки, отрицательные ветки, команда проверки и границы вывода.", "contentHtml": "

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

\n

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

\n

Главный принцип: отделяйте то, что человек сделал или сказал, от объяснения, которое предложил исследователь. Тогда другая команда сможет открыть исходную заметку, проверить связь с решением и понять, что пока не доказано.

\n

Сначала зафиксируйте рабочий вопрос

\n

Начинайте не с макета и не с названия компонента, а с операции, которую человек должен выполнить. Для внутреннего инструмента «Заявки на доступ» рабочий вопрос может звучать так: может ли сотрудник по карточке заявки понять текущий статус и назвать владельца следующего вопроса? Такой вопрос задаёт объект наблюдения, но не подсказывает ответ.

\n

До сессии запишите три вещи. Исходное состояние — открыта карточка с номером заявки, статусом processing и полем owner. Задача — «Покажите, как вы разберётесь с этой заявкой и кому зададите следующий вопрос». Условие успеха — участник называет статус своими словами и адресата следующего вопроса. Скорость, симпатия к интерфейсу и универсальность решения в это условие не входят.

\n

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

\n

Механизм: факт, вывод и решение — разные записи

\n

Заметка о наблюдении отвечает на вопрос «что произошло». Вывод отвечает на вопрос «какую тему стоит проверить дальше». Решение отвечает на вопрос «какое небольшое изменение мы готовы испытать». Если соединить эти уровни в одной фразе, гипотеза начинает выглядеть установленным фактом.

\n

Запись «участник 20 секунд смотрел на поле owner и спросил: “Кто отвечает после отправки?”» содержит наблюдаемые детали. Запись «владелец непонятен» — уже краткий вывод. Он может быть полезен, но его нужно пометить как интерпретацию и связать с конкретным наблюдением. По одному случаю нельзя заключить, что поле непонятно всем сотрудникам или что причина — именно в дизайне.

\n

В официальном руководстве GOV.UK заметки рекомендуют строить вокруг наблюдений, а каждую запись — вокруг одной детали, которую можно анализировать отдельно. Это не делает исследование объективным автоматически: ведущий, порядок вопросов, роль участника и знакомство с процессом всё равно влияют на результат. Задача формата — сделать влияние и неопределённость видимыми.

\n

Кейс: заявка на доступ и два разных барьера

\n

Рассмотрим учебную сессию без реальных людей и данных. Участник знает, что ему нужно получить доступ к отчёту, но не знает внутреннюю маршрутизацию. Карточка содержит статус processing, дату отправки и имя команды-владельца. Мы просим его показать следующий шаг, не объясняя термины заранее.

\n

Первое наблюдение: участник открывает историю изменений, видит, что заявка передана в другую команду, и завершает задачу. Здесь интерфейс мог быть непривычным, но условие успеха выполнено. Второе наблюдение: участник читает processing, затем спрашивает, нужно ли ждать или написать владельцу. Здесь виден вопрос о следующем действии, но его причина пока не установлена. Это может быть термин, отсутствие срока, организационное правило или отсутствие ссылки на владельца.

\n

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

\n
\"Схема
Исследование превращает наблюдение в ограниченную гипотезу. При недопустимом материале, отозванном согласии или сломанной ссылке цепочка должна остановиться.
\n

Сделайте заметку проверяемой

\n

Для каждой записи достаточно небольшого контракта. sessionId и participantId связывают заметку с сессией, но не должны содержать имя или редкий идентификатор в открытом виде. statement хранит действие или дословный короткий вопрос. code помогает группировать записи, но не объявляет причину. uncertainty фиксирует, чего наблюдение не доказывает.

\n

Согласие — часть контракта, а не формальность перед выгрузкой. До заметок или записи участник должен знать цель, собираемые данные, формат сессии, наблюдателей, использование и срок хранения. Сотрудник организации не исключение: руководство GOV.UK прямо требует информированного согласия от всех участников, включая работников своей организации. Для конкретной компании дополнительно действуют её политика данных и применимое право.

\n
{\n  \"consent\": {\n    \"informed\": true,\n    \"evidence\": \"consent-2025-08-014\",\n    \"allowed\": [\"de-identified-notes\"],\n    \"recording\": false,\n    \"withdrawal\": \"stop-and-delete\"\n  },\n  \"scenario\": {\n    \"id\": \"access-request-status-v1\",\n    \"startingState\": \"Карточка заявки: status=processing, owner=Platform\",\n    \"task\": \"Показать следующий шаг и назвать владельца вопроса\",\n    \"success\": \"Участник назвал действие и адресата без подсказки\"\n  },\n  \"observations\": [\n    {\n      \"id\": \"obs-014-01\",\n      \"statement\": \"Участник открыл историю заявки и нашёл команду-владельца\",\n      \"code\": \"owner-found\",\n      \"uncertainty\": \"Одна сессия не показывает частоту и влияние маршрута\"\n    },\n    {\n      \"id\": \"obs-014-02\",\n      \"statement\": \"После чтения processing участник спросил, ждать ли или писать владельцу\",\n      \"code\": \"next-action-unclear\",\n      \"uncertainty\": \"Причина может быть в термине, сроке или процессе\"\n    }\n  ],\n  \"decision\": {\n    \"observationIds\": [\"obs-014-02\"],\n    \"candidateChange\": \"Проверить блок status, next action и owner\",\n    \"claim\": \"hypothesis-only\",\n    \"followUpScenario\": \"access-request-status-v2\"\n  }\n}
\n

Значения в примере проектные. В вашей системе другими будут формат идентификаторов, срок хранения, перечень наблюдателей и правила удаления. Существенна не форма JSON, а трассировка: каждое решение ссылается на существующую заметку, заметка — на конкретный сценарий, а согласие ограничивает, какой материал можно использовать.

\n

Проверка контракта: воспроизводимая команда

\n

Структурный чекер не оценивает правдивость разговора. Он ловит более простые ошибки hand-off: ссылку на отсутствующее наблюдение или решение после отозванного согласия. Сохраните JSON выше в файл research-log.json, затем выполните команду из той же папки:

\n
node -e \"const fs=require('node:fs'); const r=JSON.parse(fs.readFileSync('research-log.json','utf8')); const ids=new Set(r.observations.map(o=>o.id)); const ok=r.consent.informed && r.consent.recording===false && r.decision.observationIds.every(id=>ids.has(id)); if(!ok) { console.error('STOP: проверьте согласие и observationIds'); process.exit(1); } console.log('PASS: структурные ссылки и граница записи проверены');\"
\n

Ожидаемый результат — строка PASS. Если заменить obs-014-02 на несуществующий идентификатор, команда завершится с кодом 1. Это полезная автоматическая защита, но не доказательство качества исследования: команда не видит, действительно ли участник произнёс вопрос, не проверяет анонимность и не устанавливает причинность.

\n

Перед передачей задачи разработчику проверьте контракт вручную: откройте каждый observationId, сравните startingState и task, а затем сформулируйте ожидаемое наблюдение для следующего раунда. Если ссылка потеряна, не угадывайте её по похожему тексту. Восстановите источник или вернитесь к нейтральной задаче.

\n

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

\n
Как отличить пробел в доказательствах от готовой задачи на изменение
СимптомВозможная причинаПроверкаДействие
В заметке есть только «неудобно»Оценку записали вместо действияНайти шаг, паузу, вопрос и исходное состояниеПометить как гипотезу; повторить нейтральный сценарий
Участник нашёл нужный путь, но команда хочет менять экранПредположение о проблеме приняли за наблюдениеСверить условие успеха и фактический маршрутНе менять интерфейс без отдельного основания
Два человека задали один вопросВозможен повторяющийся барьер, но выборка малаСравнить роли, условия, формулировки и контекстПроверить гипотезу на сопоставимой группе
Решение ссылается на неизвестный observationIdИсточник потерян при передачеЗапустить структурный чекер и открыть журналSTOP: восстановить источник или завести новую заметку
После сессии отозвано согласиеМатериал больше нельзя использовать в прежнем объёмеНайти все связанные заметки, записи и копииОстановить анализ и удалить данные по установленной процедуре
Изменился текст, но не задачаСравнение стало несопоставимымСверить task, startingState и критерий успехаНе приписывать эффект; назначить повторную проверку
\n

Порядок действий

  1. Опишите одну рабочую задачу. Запишите исходное состояние, нейтральный prompt и критерий успеха до встречи с участником.
  2. Зафиксируйте границу данных. Укажите, что можно заметить, записать, показать наблюдателю и хранить. Без согласия не начинайте сбор материала.
  3. Проведите сессию. Не подсказывайте кнопку или термин; записывайте действия, паузы и вопросы по одному наблюдению в строке.
  4. Разделите факт и вывод. Добавьте code для группировки и uncertainty для того, чего запись не доказывает.
  5. Свяжите решение с источником. В decision log укажите observationIds, небольшое изменение и сопоставимый follow-up.
  6. Проверьте отрицательные ветки. При отозванном согласии, недопустимой записи или неизвестном идентификаторе остановите hand-off и восстановите данные по установленной процедуре.

Сопоставимый follow-up и доступность

\n

Следующий раунд не обязан копировать старый экран. Он обязан сохранить вопрос, исходное состояние и критерий успеха. В нашем кейсе можно заменить только представление статуса на короткий блок: «Обрабатывается → дождитесь ответа Platform до указанного срока → вопрос задайте владельцу Platform». Сценарий остаётся тем же, а в журнале появляется версия access-request-status-v2.

\n

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

\n

Для веб-инструмента исследование дополняет, а не заменяет проверку доступности. WCAG 2.2 содержит тестируемые критерии и рекомендует сочетать автоматизированную проверку с оценкой человеком, но сам стандарт не покрывает все потребности людей с инвалидностью. Поэтому после гипотезы проверьте клавиатурный маршрут, видимый фокус, названия полей и сообщения об ошибках по применимым критериям, а затем включите подходящих пользователей в исследование.

\n

Границы применимости

\n

Две или три сессии могут выявить непредвиденный маршрут и дать хорошую гипотезу. Они не дают статистической оценки частоты и не доказывают, что изменение ускорит работу всей организации. Если решение дорогое или рискованное, добавьте исследование других ролей, количественную метрику и проверку в реальном процессе.

\n

Нейтральный вопрос снижает подсказку, но не устраняет bias. Участник может стараться угодить ведущему, а наблюдатель — замечать только ожидаемый барьер. Помогают второй наблюдатель, единый сценарий, запись условий и отдельная маркировка факта и вывода. Это способы снизить риск, а не обещание полной объективности.

\n

Обезличенная заметка всё равно может раскрыть человека, если в ней соединены редкая роль, дата, заявка и необычное событие. Не собирайте лишние атрибуты, ограничивайте доступ и удаляйте копии по правилам организации. Если согласие отозвано, нельзя продолжать анализ «только потому, что запись уже сделана»: GOV.UK рекомендует остановиться и удалить собранные исследовательские данные, а конкретный порядок должен соответствовать вашей политике и закону.

\n

Гайд GOV.UK полезен как практическая методика, но не является юридической политикой для другой страны или компании. Требования к согласию, хранению, удалению и передаче данных нужно согласовать с ответственным за защиту данных и применимыми нормативными требованиями.

\n

Критерий готовности к изменению

\n

Перед hand-off задайте пять вопросов. Есть ли у решения одна рабочая задача и измеримый критерий успеха? Можно ли открыть каждую ссылку из решения на конкретное наблюдение? Отделены ли действие, интерпретация и гипотеза? Разрешён ли фактически используемый тип данных? Сохранит ли следующий раунд исходное состояние и цель?

\n

Если на любой вопрос ответ «нет», готово не изменение интерфейса, а следующий исследовательский шаг. Это не задержка ради процесса: команда перестаёт тратить разработку на неизвестную причину и получает короткий список того, что нужно проверить.

\n

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

" }