Сделать B2B инструмент простым как игра

Вы обращали внимание, почему детям так нравится играть в компьютерные игры? Бывает, взрослые дяденьки тоже увлекутся расстреливанием монстров или вождением армий по пересеченной местности (в шахматы уже никто не играет, по-моему). В чем причина? Почему мы время от времени слышим об игровой зависимости? Почему кликание в Microsoft Office мы Игрой не считаем, а считаем Работой? В обоих случаях мы одинаково сидим перед нашим "железным другом" и даже устаем от Работы и Игры примерно одинаково. Давайте я немного порассуждаю на эту тему и сделаю кое-какие, в общем-то, очевидные выводы. Продолжение этого поста ни на что не претендует, если неинтересно, спасите 10 минут своего времени от дальнейшего чтения.

Парадоксально, но факт: чем сложнее прикладная область приложения, тем меньше внимания уделяется его «юзабилити». Простой пример: те, кто воспринимают Microsoft Excel как «Word в клеточку», обычно не испытывают проблем при обработке данных. По крайней мере до тех пор, пока  не сталкиваются со сводными таблицами или сложными графиками. Если коснуться области профилирования и оптимизации производительности софта, то структура анализируемых данных и их количество быстро превышает разумные пределы восприятия человека со среднестатистическим IQ. После чего интерфейс того же VTune превращается в «звездолет, на котором мне не суждено взлететь» (© одного моего знакомого). Можно ли решить проблему юзабилити продуктов, предназначенных для действительно сложных прикладных областей? Мне довелось попробовать, а уж насколько хорошо/плохо это получилось, судить вам.

Битва за результат
В играх "результат" легко достижим. Собственно компьютерные игры и были придуманы, чтобы дать игрокам иллюзию великих свершений. Компьютер специально запрограммирован поддаваться игроку с четко выверенным уровнем сопротивления. Вы проходите уровень, вам хорошо, настроение поднялось. В серьезном приложении, например, таком как, анализатор производительности, "результат" не столь очевиден. Вы тратите свое время, разглядывая все эти таблицы и делая предположения, где-бы еще можно было бы что-то улучшить. Часто серьезное приложение грешит большим количеством деталей - "Да-да, мы с таким трудом добыли все эти данные, что теперь будьте добры посмотреть на них". Смотреть не хочется, вы переключаетесь между вашим кодом и инструментом взад и вперед, снова и снова. И запутываетесь все сильнее и сильнее. Есть хороший рецепт: сделайте результат вашего бизнес-приложения легко доступным и избавьтесь от несущественных деталей. Так, например в Parallel Amplifier первый результат чаще всего достижим за один клик мышкой. Было очень много соблазнов спросить о чем-то важном пользователя между этим единственным кликом и результатом, но мы удержались и не сделали этого.



Помимо быстроты достижения результата существует еще один аспект: его очевидность. Иногда вы, кажется, нашли хороший хотспот или причину долгого ожидания. Иногда вы сделали микро-улучшение в своей программе при помощи Amplifier, но это не всегда радует. Потому что вы думаете, что это лишь небольшой шаг на пути к по-настоящему крупному успеху. Многие из нас даже не разрешают себе радоваться "этапу" и откладывают праздник на "потом" (понятие "отложенного счастья"). В бизнес-приложении даже микро-успех должен быть очевиден. Поэтому мы ввели в анализатор производительности режим автоматического сравнения. Вот ваши измерения "до", а вот они же, но уже "после" улучшений. Достижение должно быть очевидным, даже если его нетрудно сделать в уме. Подсчитать «одно время минус другое» -  это должно быть сделано быстро, автоматически и показано как-то... приятно.

Нет скуке.
Если вы когда-либо играли в игры, вам было скучно? Думаю, что нет, иначе бы вы не играли. Почему вам бывает скучно работать? Для себя я вижу причину в повторяемости операций. Если в играх каждый раз все по-новому (по крайней мере, нам так кажется), то в бизнес-приложениях одни и те же окна и долгие-долгие цепочки диалогов, горячих клавиш, кликов и еще кликов, чтобы в сотый раз пометить один и тот же чекбокс. Многие приложения превращают работу в рутину, но ведь компьютеры как раз и были изобретены, чтобы избавить нас от рутины. Там, где присутствует с завидной точностью повторяемая ситуация, нужно постараться превратить последовательность из дестяка диалогов в два-три щелчка мышью. Думаю, в Amplifier вы не найдете таких мест, где нужно 100 раз за час пройти по одному и тому же длинному пути.

Действие - эффект.
Вы нажимаете на курок бластера, и монстр падает к вашим ногам. Действие - эффект. Вы выбираете ферму для строительства на этой поляне, и вот работа уже кипит, жужжат пилы и стучат топоры. Это просто, даже кошки играют только с тем, что движется, что откликается на игру. Чем больше вы реагируете на ситуацию, тем больше вы внутри этой ситуации, тем дольше "игра" никак не закончится. Почему тогда бизнес-приложения иногда поступают "нечестно"? Вы нажимаете на кнопку "ok", но вместо результата видите замерший экран, совсем переставший воспринимать вас всерьез. Бывает, что уходят минуты, пока компьютер откликнется! Я могу предположить ответ. Программист, когда писал свой код, не думал, что именно этот переход между нажатием кнопки "ок" и показом результата займет хоть сколько-нибудь существенное время. На его машине, скорее всего, все показывалось мгновенно. При разработке Amplifier мы руководствовались принципом, что ЛЮБАЯ операция может занять существенное время. Благодаря труду очень многих людей большинство операций в Amplifier происходит в параллельном режиме (Parallel Amplifier). Вы дабл-кликнули по файлу, пока он ищется на диске, вы можете вернуться и дабл-кликнуть еще один. Где это возможно, Amplifier покажет индикатор прогресса. Ведь в играх вы привыкли видеть ползущую полосочку снизу когда подгружается следующий уровень, верно?



Еще одна сторона принципа "действие - эффект", это отсутствие кнопок "Refresh" (обновить данные). Этого просто не надо иметь в бизнес-приложениях. Даже когда на это есть существенные причины из разряда "мы уверены, это долгая операция", то начните выполнять ее раньше, сразу же. Смысла держать на экране "устаревшие данные" нет никакого. В Amplifier есть очень частая ситуация когда панель Call Stack отображает стеки от многих выделенных функций. Это происходит обычно долго, но между тем нет никаких кнопок "обновить". Просто если пользователь выделит другие функции, то старый запрос к данным будет отменен и начнет выполняться новый.

Казаться простым.
Многие игры совсем не так уж просты, как кажутся. Онлайновые игры, в которые играют миллионы людей, обладают экономической моделью, по сложности сопоставимой с экономической моделью какого-нибудь государства. Иногда сложность тактических расчетов поведения компьютерного соперника превосходит маркетинговые расчеты крупных предприятий. Между тем игры нам не кажутся сложными. Как это достигается? Я бы назвал это "раскладывание по слоям сложности". Самое простое ставится вперед (самое простое является одновременно и самым востребованным). Те вещи, что чуть сложнее, прячутся на следующий слой. Чтобы достигнуть их, нужно дополнительно нажать несколько кнопок. Думаю, здесь есть чему поучиться бизнес-приложениям. Общепринятая практика, когда бизнес-приложение вываливает на своего пользователя "все что знает", имеет как положительный эффект (ух ты, какой умный инструмент, сколько всего!), так и сильный отрицательный (ничего не понятно, я не глупый, но мне не понятно). Попытаться встать на место своего пользователя попробовали и мы, разрабатывая  Parallel Amplifier. Это более или менее удалось, судя по отзывам нескольких профессионалов: "слишком просто". Что ж, это очень хорошо, это значит, что входной порог для начала пользования инструментом достаточно низкий.



В игровой индустрии есть замечательное правило: "удивляй игрока каждые 40 минут", цифра варьируется, но не это суть. Данное правило очень хорошо соотносится с предыдущим "расслоенная сложность". Действительно, давайте сделаем инсталляцию и запуск максимально простым - это будет наш первый момент, когда мы приятно удивили пользователя. Давайте покажем очевидные данные в самой простой форме сразу же после сбора, и это будет второй приятный момент. Через 30-40 минут пользователь, возможно, попробует следующий тип анализа, это будет еще один позитив. Дальше идет сравнение двух результатов и т.д. О чем я? При разработке интерфейса, попробуйте представить картину в целом, не только один сценарий "запуск-сбор-анализ-выход", но серию, последовательность.

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

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.
Tags: