Наследование контекста

В соавторстве с Yuliya Martsynkevich.

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

В этот раз мы проводили серию тестов покрывающих взаимодействие с довольно сложным механизмом фильтрации данных.

Один из сценариев подразумевал, что в процессе нужно будет изменить пользовательские настройки. Стоит отметить, что сценарий был “заточен” на тестирование другого потенциально проблемного места и нам просто повезло, что пользовательские настройки были затронуты.

Ок, результат теста — около половины пользователей испытали трудности, а около трети не смогли пройти дальше настроек.

Что произошло? Как обычно, самые интересные инсайты — самые неожиданные. Все вы сталкивались со стандартным iOS свитчером. Как интерфейсный элемент, он оказался настолько визуально интересным, что распространился довольно широко и используется не только в мобильной среде. Наша команда не исключение, мы также используем эти симпатичные свитчеры в нашем десктоп-ориентированном браузерном приложении. Казалось бы, какие проблемы он может вызвать?

«Ничего себе, он “дергает” свитчер!»

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

Почему так происходит? Исторически данный контрол принадлежит другой платформе и у части пользователей уже есть сформированная ментальная модель того, как он работает в контексте другой платформы. Мы заимствуем контрол, но, не взирая на потерю контекста, пользователь, спасибо визуальному аффордансу, использует ту же ментальную модель, адаптируя ее под новый контекст («почему бы мне не “свайпнуть” этой чудесной мышкой?»).

Как это исправить? Решение простое — пользователь привык “свайпать”, нужно дать ему такую возможность.

var slider   = document.getElementsByClassName('onoff')[0],
checkbox = document.getElementsByClassName('onoff-checkbox')[0],
hammer = new Hammer(slider, {});

hammer.on('swipeleft', function(e){ checkbox.checked = false });
hammer.on('swiperight', function(e){ checkbox.checked = true });
Наступило счастье

Как оказалось, проблема довольно широко распространена. Вот, например, аналогичный контрол и аналогичное отсутствие поддержки свайпа в интерфейсах у таких серьезных ребят как InVision (должен заметить, что не исследуя элемент с их аудиторией невозможно уверенно судить, является ли это проблемой для них в принципе).

Аналогичная проблема у InVision

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