Филосовский вопрос об одном элементе UX
От: Barlog M. Россия  
Дата: 15.08.14 21:34
Оценка: 2 (1) +1
За свою многолетнюю быдлокодерскую карьеру, связанную с написанием приложений, которые по сути своей в большинстве случаев, являлись интерфейсом между человеком и хранилищем данных, я пришёл к одному решению — когда выполняется длительная операция, пользователя необходимо:
1. развлечь анимацией, в качестве индикации того, что компьютер не завис.
2. оградить от взаимодействия с интерфейсом.
И, т.к. любое взаимодействие с хранилищем данных теоретически может стать длительным, то потенциально длительной операцией стоит считать любую, происходящую после нажатия кнопки "ОК".
Простейшее решение — это модальный диалог с бесконечной анимацией ввиде progress bar. Именно модальный — так не нужно временно отключать все контролы по отдельности, а потом включать обратно. Так вот используя VCL, Windows Forms, WPF, Silverlight, jQuery и AngularJS я нигде не встречал готового решения. Реализовать в GUI это было легко, но приходилось реализовывать, с WEB сложнее, но решаемо. И вот наконец у меня возник вопрос: может быть этот решение не верное? Где я ошибся в своих рассуждениях? А если не ошибся — почему в библиотеках нет готового решения? Желаю ваших мнений.
Re: Филосовский вопрос об одном элементе UX
От: btn1  
Дата: 15.08.14 21:54
Оценка: 5 (1) +2 :)
Здравствуйте, Barlog M., Вы писали:

BM>... когда выполняется длительная операция, пользователя необходимо:

BM>1. развлечь анимацией, в качестве индикации того, что компьютер не завис.
BM>2. оградить от взаимодействия с интерфейсом.

Пикус в том, что ограждать нужно только от того интерфейса, который сейчас не может быть использован. А вот например меню Help должно быть доступно всегда.

Вместо модального диалога можно сделать веселее: запускать пасьянс в фулскрине
Re: Филосовский вопрос об одном элементе UX
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.09.14 09:24
Оценка: 4 (1) +1
Здравствуйте, Barlog M., Вы писали:

BM>Простейшее решение — это модальный диалог. И вот наконец у меня возник вопрос: может быть этот решение не верное?

Да, неверное. Оно, конечно, простейшее, но подходит только в случаях "случайных задержек" либо очень изолированного воркфлоу — типа банкомата, где тебе кроме денег ничего не надо.
BM>Где я ошибся в своих рассуждениях?
В подмене "верного" решения "простейшим". Если внимательно посмотреть на историю индустрии, то мы увидим, как долгие операции постепенно вытесняются из модального UI в полноценное управление длинными задачами. Например, синхронизация почты — емнип, в ранних outlook express кнопка send/receive показывала модальный диалог с прогресс баром. В Outlook запускался скрываемый модальный диалог, который показывал список задач синхронизации, которые выполнялись по одной. Сейчас (и уже три мажорных версии подряд) в outlook есть немодальный диалог send/receive progress. Другой пример — IE в своё время скачивание файлов реализовывал модальной операцией; спасала возможность открыть много окон IE. Теперь в нём, как и в остальных браузерах большой тройки, немодальный менеджер закачек.

BM>А если не ошибся — почему в библиотеках нет готового решения? Желаю ваших мнений.

Как это нет? В WinForms и VCL, как близких к нативной оконной системе windows ShowModal присутствует в полный рост. Предусмотрены даже готовые progress dialog.
А то, что в современных платформах UI нет понятия модальности — так это оттого, что модальность — зло.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Филосовский вопрос об одном элементе UX
От: Baudolino  
Дата: 08.09.14 10:11
Оценка: +1
BM>...потенциально длительной операцией стоит считать любую, происходящую после нажатия кнопки "ОК"
Неверное допущение. Длительной является та операция, продолжительность которой будет заметна пользователю — время такой операции есть психологическая и физиологическая характеристика человека, и оно в общем-то давно известно.
Что при этом нужно делать? Создавать у пользователя ощущение контроля, предоставляя ему актуальную информацию о состоянии системы, и блокируя лишь ту часть интерфейса, которая затрагивается длительной операцией. Т.е. нет — модальным диалогам, да — блокировке отдельных элементов интерфейса и компоненту, отслеживающему выполнение фоновой задачи. При этом интерфейс должен адаптироваться ко времени выполнения операции — в пределах одной секунды можно ограничиться простой блокировкой элементов интерфейса, по истечении секунды показывать статус. Оценку времени выполнения задачи сверху можно дать практически всегда — это может быть, например, время "протухания" соединения или сессии, предельное время ожидания ответа от сервера и т.п. ("вам осталось ждать не более Х минут ХХ секунд")
Re[2]: Филосовский вопрос об одном элементе UX
От: Джеффри  
Дата: 08.09.14 10:32
Оценка:
Еще добавлю, как говорил один из моих клиентов, если программа работает медленней меня, то я выбираю другую программу. Так что помимо инвестиций в красивые иконки ожиданий и строки прогресса, имеет смысл еще и хорошенько позаботиться о том, чтобы такие операции занимали как можно меньше времени.
Re: Филосовский вопрос об одном элементе UX
От: VladFein США  
Дата: 08.09.14 12:37
Оценка: +1
Здравствуйте, Barlog M., Вы писали:

BM>1. развлечь анимацией, в качестве индикации того, что компьютер не завис.


В моей практики встречалось несколько случаев, когда "висящая" программа продолжала весело проигрывать бесконечную анимацию. Сомнительное развлечение!
Re[3]: Филосовский вопрос об одном элементе UX
От: Baudolino  
Дата: 08.09.14 13:16
Оценка:
Здравствуйте, Джеффри, Вы писали:

Д>Еще добавлю, как говорил один из моих клиентов, если программа работает медленней меня, то я выбираю другую программу. Так что помимо инвестиций в красивые иконки ожиданий и строки прогресса, имеет смысл еще и хорошенько позаботиться о том, чтобы такие операции занимали как можно меньше времени.
Re: Филосовский вопрос об одном элементе UX
От: Osaka  
Дата: 11.09.14 21:13
Оценка: +3
>развлечь анимацией
Откуда это заблуждение, будто анимации в программах развлекают? Они же бесят.

Либо, когда вместо того чтобы мгновенно получить следующий экран, приходится раз за разом ждать окончания этого унылого мееееееедленного выползания (в течение которого всё равно ничего полезного не делается, только батарейка жрётся).
Либо, когда всё уже давно зависло и развалилось, а бесконечный прогресс-бар продолжает работать и работать.

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