{ "index": 85, "slug": "editorial-2025-08-field-tool-ux-research", "title": "Как исследовать UX внутреннего инструмента и не принять мнение за факт", "excerpt": "Нейтральная задача, короткая заметка и прослеживаемое решение помогают понять, где внутренний инструмент мешает работе. Разбираем границы согласия, отрицательные ветки и критерий готовности до изменения интерфейса.", "contentHtml": "
Команда получает просьбу «сделать форму заявки удобнее» и сразу обсуждает новую кнопку. Симптом заметен: в карточке задачи есть цитаты коллег, но нет исходного сценария, точного наблюдения и границы согласия. Непонятно, что человек действительно сделал, а что автор уже объяснил за него.
\nЦена ошибки — не только лишняя кнопка. Команда тратит разработку на решение, которое нельзя связать с проблемой. После релиза коллега снова спрашивает, кто отвечает за заявку и что означает её статус. В ответ появляются новые подсказки, ручные обходы и ещё один цикл обсуждений.
\nТезис: UX-исследование внутреннего инструмента должно передавать в разработку не «инсайт», а короткую проверяемую цепочку: разрешённый материал → нейтральная задача → наблюдение → код → неопределённость → решение → следующий сценарий. Если звено нельзя открыть и проверить, изменение остаётся гипотезой.
\nНачните с одной рабочей задачи. Например, участник должен найти состояние заявки на доступ и назвать владельца следующего вопроса. Не называйте будущий блок, цвет, кнопку или термин, который хотите проверить. Так человек может показать неожиданный маршрут: сразу найти владельца, задержаться на статусе или использовать внешний список.
\nЗаранее запишите исходное состояние и условие успеха. В примере карточка содержит номер заявки, статус и поле владельца. Успех означает, что участник назвал следующий вопрос и адресата. Успех не означает, что интерфейс ему понравился, что он работал быстро или что такой путь типичен для всех.
\nСледующий слой — согласие. Зафиксируйте цель, допустимый тип evidence, запись, доступ и отзыв. Если разрешены только обезличенные заметки, запись экрана не становится допустимой из-за удобства анализа. Отзыв останавливает работу с материалом по правилам организации. В учебном примере ниже нет реальных людей и данных; он показывает только порядок проверки.
\nНаблюдение описывает действие или вопрос. Фраза «курсор остановился у поля owner, затем прозвучал вопрос “кто отвечает после отправки?”» годится как observation. Фраза «человеку непонятен интерфейс» уже содержит интерпретацию. Её можно получить позже как тему, но нельзя выдавать за факт.
\nКод даёт наблюдаемой детали короткое имя. owner-unclear означает, что в этом сценарии не найден следующий владелец. Он не объясняет причину, не измеряет частоту и не доказывает, что проблема относится к каждому пользователю. Поле uncertainty сохраняет это ограничение рядом с наблюдением.
Decision log связывает решение с observation id. Запись может предложить проверить компактное пояснение статуса и владельца. Она не должна говорить «пояснение улучшит UX». Корректная формулировка — «проверить кандидатное изменение на том же сценарии». Это сохраняет отрицательный путь: при сломанной ссылке на наблюдение, withdrawn consent или изменённой задаче нужно остановиться.
\nНиже — учебный пример. Все значения условны и служат только для иллюстрации связи между полями. Они не описывают production, не заменяют согласие и не дают результата о реальных пользователях.
\nconst research = {\n consent: {\n evidence: 'de-identified-note',\n recording: 'not-permitted',\n withdrawal: 'stop-and-discard'\n },\n scenario: {\n task: 'Найти статус заявки и владельца следующего вопроса',\n success: 'Назвать следующий вопрос и owner',\n prompt: 'Покажите, как вы разбираетесь со статусом заявки'\n },\n observations: [\n {\n id: 'obs-owner-1',\n statement: 'Курсор остановился у owner; задан вопрос о следующем ответственном',\n code: 'owner-unclear',\n uncertainty: 'Одна заметка не показывает частоту и причину'\n },\n {\n id: 'obs-status-1',\n statement: 'Термин processing прочитан, но не связан со следующим действием',\n code: 'status-hidden',\n uncertainty: 'Нельзя заключить, что термин непонятен всем'\n }\n ],\n decision: {\n observationIds: ['obs-owner-1', 'obs-status-1'],\n candidateChange: 'Проверить компактный блок status и owner',\n claim: 'not-established',\n followUp: 'Повторить тот же нейтральный сценарий'\n }\n};\nСмысл примера не в формате JavaScript. Важна последовательность. candidateChange не становится задачей на безусловную разработку. Сначала проверяющий открывает оба observation id, читает факты и ограничения, затем проверяет, что follow-up сохраняет цель и исходное состояние.
Если решение ссылается на obs-owner-2, которого нет, нельзя восстановить происхождение идеи. Не следует угадывать ссылку по похожему тексту. Два безопасных действия — найти исходную заметку или остановить решение и завести новый нейтральный сценарий.
| Симптом | Причина | Проверка | Действие |
|---|---|---|---|
| В заметке есть только оценка экрана | Вопрос подсказал готовое решение | Прочитать prompt без макета и найти действие участника | Повторить сценарий нейтральной задачей |
| Цитата не связана с задачей | Запись собрали после обсуждения, без scenario id | Проверить исходное состояние и условие успеха | Пометить материал как контекст, не как evidence решения |
| Решение ссылается на неизвестный observation | Заметки и ticket живут раздельно | Открыть каждый observation id из decision log | Остановить hand-off и восстановить источник |
| Анализ требует запись экрана | Граница согласия была задана слишком поздно | Сверить permitted evidence и фактический материал | Не использовать запись; уточнить policy до нового раунда |
| После правки задан другой вопрос | Изменились цель или исходное состояние | Сравнить objective, starting state и prompt | Не объявлять эффект; спланировать сопоставимый follow-up |
| Две заметки превращены в «проблему всех» | Неопределённость потеряна при обобщении | Прочитать uncertainty рядом с каждой observation | Оставить claim ограниченным и собрать следующий материал |
Такая схема полезна как контрольная точка проверки. Consent boundary отвечает на вопрос «какой материал можно использовать». Scenario отвечает на вопрос «какую работу наблюдаем». Observation отвечает на вопрос «что произошло». Code помогает сортировать детали. Uncertainty ограничивает вывод. Decision формулирует следующий шаг, а не скрытый результат.
\nНейтральный сценарий не устраняет влияние ведущего. Интонация, порядок действий и знакомство с автором всё равно меняют поведение. Поэтому полезно приглашать отдельного наблюдателя и фиксировать условия, но не называть это устранением bias.
\nКороткий журнал не делает выборку представительной. Две заметки могут дать хорошую гипотезу для следующего раунда и не дать оснований для вывода о всей организации. Внутренние пользователи тоже различаются по роли, доступам и опыту. Если эти условия важны для решения, их нужно проверять отдельно.
\nОбезличивание не равно отсутствию риска. Имя, команда, заявка и редкое событие могут вместе указать на человека. Реальная организация отдельно определяет владельца данных, хранение, доступ, срок и порядок удаления. В этом материале учебные значения не содержат персональных данных.
\nЛокальный проверяющий скрипт или таблица может подтвердить структуру записи: наличие полей, допустимый тип evidence и целостность ссылок. Он не проверяет качество разговора, честность заметки, поведение браузера или эффект интерфейса. PASS такой модели означает только прохождение её собственных проверок.
\nМатериал готов к обсуждению кандидатного изменения, если проверяющий за один проход может открыть consent boundary, нейтральный scenario и каждое observation из decision log. Каждое observation описывает действие или вопрос, имеет допустимый code и явную uncertainty. Claim не обещает улучшение. Follow-up сохраняет цель и исходное состояние. При withdrawn consent, недопустимой записи, leading prompt или сломанной ссылке система возвращает STOP.
\nЕсли хотя бы одно условие не выполнено, готово не изменение интерфейса, а список недостающих доказательств. Это полезный результат: команда видит, что нужно проверить дальше, и не маскирует пробел в исследовании новой формулировкой кнопки.
\n