usability-for-programmers

91
U S A B I L I T Y для программистов Бибичев Андрей @bibigine январь 2012

Upload: andrey-bibichev

Post on 28-Nov-2014

2.144 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Usability-for-programmers

U S A B I L I T Y

для программистов

Бибичев Андрей

@bibigine

январь 2012

Page 2: Usability-for-programmers
Page 5: Usability-for-programmers
Page 6: Usability-for-programmers

Widely recognized as the “Father of Visual Basic"

Page 9: Usability-for-programmers

best known for starting the Macintosh project

for Apple in the late 1970s

Page 11: Usability-for-programmers

В usability есть место

системному мышлению

и математическому подходу

Page 12: Usability-for-programmers

UI

Визуальная подача

(SEXY)

Логика взаимодействия

(FRIENDLY)

Алгоритмы

(SMART)

Статика Динамика Возможность

выполнить

действие

Минимизация

ошибок при

выполнении

действия

Трудоемкость

выполнения

действия

Как это

сделать?

Толерантность

к действиям

пользователя

Минимизация

вероятности

ошибки

Минимизация

последствий

ошибки

Page 13: Usability-for-programmers

Логика взаимодействия

(FRIENDLY)

Трудоемкость

выполнения

действия

Page 14: Usability-for-programmers

KEYSTROKE LEVEL MODE (KLM)

• K = key stroking (0.08 – 1.20 sec)

• P = pointing (1.10 sec)

• H = homing (0.40 sec)

• D = drawing

• M = mental operator (1.20 sec)

• R = system response time

TEXECUTE = TK + TP + TH + TD + TM + TR

Page 15: Usability-for-programmers
Page 16: Usability-for-programmers
Page 17: Usability-for-programmers

Два мозга

Page 18: Usability-for-programmers
Page 19: Usability-for-programmers

KEYSTROKE LEVEL MODE (KLM)

• K = key stroking (0.08 – 1.20 sec)

• P = pointing (1.10 sec)

• H = homing (0.40 sec)

• D = drawing

• M = mental operator (1.20 sec)

• R = system response time

TEXECUTE = TK + TP + TH + TD + TM + TR

Page 20: Usability-for-programmers

Должность: «Tap counter»

Page 21: Usability-for-programmers

MySQL Workbench

Page 22: Usability-for-programmers

ЗАКОН ХИКА (HICK’S LAW)

• Стимул <-> Реакция (1-к-1)

• n стимулов, n реакций

• дается стимул

• на реакцию затрачивается T

• Где b – эмпирический коэффициент

T = blog2(n + 1)

T = bH • H – энтропия информации

• pi – вероятность i-ого случая

Page 23: Usability-for-programmers

FIT’S LAW

• T - время для попадания в «мишень»

• a,b - эмпирические коэффициенты

• A - расстояние до «мишени»

• W - размер (ширина) «мишени»

)1(log2 W

AbaT

A W

Page 24: Usability-for-programmers
Page 25: Usability-for-programmers

Как быть в двумерном

случае однозначного

ответа нет …

Page 26: Usability-for-programmers

– TC - время следования траектории C

– a,b - эмпирические коэффициенты

– W(s) - допустимая ширина «отклонения»

- от траектории в точке s

– s - точка на траектории

• Прямая линия

• Окружность

C

CsW

dsbaT

)(

W

AbaTC

W

RbaTC

2

W

A

R

W

ДЛЯ ТРАЕКТОРИИ:

Page 27: Usability-for-programmers
Page 28: Usability-for-programmers
Page 29: Usability-for-programmers
Page 30: Usability-for-programmers

UI

Визуальная подача

(SEXY)

Логика взаимодействия

(FRIENDLY)

Алгоритмы

(SMART)

Статика Динамика Возможность

выполнить

действие

Минимизация

ошибок при

выполнении

действия

Трудоемкость

выполнения

действия

Как это

сделать?

Толерантность

к действиям

пользователя

Минимизация

вероятности

ошибки

Минимизация

последствий

ошибки

Page 31: Usability-for-programmers

Минимизация

ошибок при

выполнении

действия

Минимизация

вероятности

ошибки

Page 32: Usability-for-programmers

C

CsW

dsbaT

)(

ДЛЯ ТРАЕКТОРИИ:

Pошибки TС

Page 33: Usability-for-programmers
Page 34: Usability-for-programmers

To be or, not to be –

that is the question…

Page 35: Usability-for-programmers

Вы собираетесь выйти из программы,

но есть несохраненные документы.

Что делать?

Да – сохранить и выйти

Нет – не сохранять, но выйти

Отмена – не сохранять и не выходить

Page 36: Usability-for-programmers
Page 37: Usability-for-programmers

Есть несохраненные документы

Page 38: Usability-for-programmers

Одного взгяда на

кнопку должно быть

достаточно, чтобы

понять, что она делает

Page 39: Usability-for-programmers
Page 40: Usability-for-programmers
Page 41: Usability-for-programmers

Требуется перезагрузка системы!

Напомнить:

через 10 минут

Page 42: Usability-for-programmers
Page 43: Usability-for-programmers
Page 44: Usability-for-programmers

К сожалению,

логично удобно

Page 45: Usability-for-programmers
Page 46: Usability-for-programmers
Page 47: Usability-for-programmers
Page 48: Usability-for-programmers

Любая настройка, влияющая

на интерпретацию действий

пользователя – это режим.

Page 49: Usability-for-programmers
Page 50: Usability-for-programmers

Сейчас модно иметь

минимум настроек.

Page 51: Usability-for-programmers

UI

Визуальная подача

(SEXY)

Логика взаимодействия

(FRIENDLY)

Алгоритмы

(SMART)

Статика Динамика Возможность

выполнить

действие

Минимизация

ошибок при

выполнении

действия

Трудоемкость

выполнения

действия

Как это

сделать?

Толерантность

к действиям

пользователя

Минимизация

вероятности

ошибки

Минимизация

последствий

ошибки

Page 52: Usability-for-programmers

Минимизация

ошибок при

выполнении

действия

Минимизация

последствий

ошибки

Page 53: Usability-for-programmers

Вы сдвинули мышку с места.

Вы уверены в своих действиях?

Page 55: Usability-for-programmers

Любое обыденное

действие должно быть

безопасно,

т.е. легко обратимо

Page 56: Usability-for-programmers

В ИДЕАЛЕ ВЕЗДЕ ТОТАЛЬНО ДОЛЖНА

БЫТЬ ДОСТУПНА TIME-MACHINE

Page 57: Usability-for-programmers

Если всё равно нужен дозапрос,

то формулировки должны быть

короткими, но емкими

Page 58: Usability-for-programmers

Впереди, согласно данным с

бортового GPS и карте местности от

13.10.2010, ожидается обрыв,

ориентировочное расстояние до

которого равно 250 метров

плюс/минус 20 метров. Как вы

думаете, стоит тормозит?

Page 59: Usability-for-programmers

Редактор

Ольминский

Явившаяся на место происшествия

местная полиция арестовала восемь

человек демонстрантов.

„Местная“ — разве в Твери могла

явиться полиция не местная, а

казанская?

Затем — „явившаяся на место

происшествия“; разве могла она

арестовать, не явившись?

А „полиция“ — кто же арестует, кроме

полиции?

Наконец, „человек демонстрантов“ —

конечно, не коров и не прохожих.

Арестовано восемь.

Page 60: Usability-for-programmers
Page 61: Usability-for-programmers
Page 62: Usability-for-programmers

ВВОД СТРОК

• Наибольшие проблемы доставляют ПРОБЕЛЬНЫЕ

СИМВОЛЫ

– обычный пробел

– жесткий пробел &nbsp;

– табуляция TAB

user@login

WorldUsability Day

Page 63: Usability-for-programmers

НОРМАЛИЗАЦИЯ СТРОК

Step 1:

Лидирующие пробельные символы X

Step 2:

Концевые пробельные символы X

Step 3:

Пробельные символы пробел

Step 4:

Несколько пробелов подряд 1 пробел

Page 64: Usability-for-programmers

UI

Визуальная подача

(SEXY)

Логика взаимодействия

(FRIENDLY)

Алгоритмы

(SMART)

Статика Динамика Возможность

выполнить

действие

Минимизация

ошибок при

выполнении

действия

Трудоемкость

выполнения

действия

Как это

сделать?

Толерантность

к действиям

пользователя

Минимизация

вероятности

ошибки

Минимизация

последствий

ошибки

Page 65: Usability-for-programmers

Возможность

выполнить

действие

Как это

сделать?

Page 66: Usability-for-programmers
Page 67: Usability-for-programmers
Page 68: Usability-for-programmers
Page 69: Usability-for-programmers
Page 70: Usability-for-programmers

УСТОЯВШИЙСЯ ПОЛОЖИТЕЛЬНЫЙ

ПРИМЕР

• Поиск контакта в адресной книге

– одно поле

– ищет по мере набора (инкрементальный поиск)

– строит разные догадки:

• ФИО

• отдельные части ФИО

• E-mail

• телефон

• «прозвище»

• …

Page 71: Usability-for-programmers
Page 72: Usability-for-programmers
Page 73: Usability-for-programmers

Пользователь хочет решить

задачу или получить ответ

непосредственно в том

месте и в то время, когда эта

задача/вопрос возникает

Page 74: Usability-for-programmers

Введите номер телефона:

Page 75: Usability-for-programmers
Page 76: Usability-for-programmers
Page 78: Usability-for-programmers

6 – 8

Page 79: Usability-for-programmers

Расстояние

до экрана

Диаметр

четкой зоны

30 см 3,7 см

50 см 6 см

1 м 12 см

1,5 м 18 см

2 м 24 см

5 м 60 см

10 м 120 см

Page 80: Usability-for-programmers

15’’, 1024 X 768, 50 СМ

• диагональ:

– 15’’ = 15 * 2.54 см = 38 см

– sqrt(1024 * 1024 + 768 * 768) = 1280 пикселей

• пятно:

– 50 см * sin( 7 градусов) = 6 см

– 6 / 38 * 100 = 15.8 % от диагонали

– 15.8 * 1280 / 100 = 200 пикселей

Page 81: Usability-for-programmers
Page 82: Usability-for-programmers

Поэтому пользователь

и не видит кнопку «Продолжить».

Page 83: Usability-for-programmers

UI

Визуальная подача

(SEXY)

Логика взаимодействия

(FRIENDLY)

Алгоритмы

(SMART)

Статика Динамика Возможность

выполнить

действие

Минимизация

ошибок при

выполнении

действия

Трудоемкость

выполнения

действия

Как это

сделать?

Толерантность

к действиям

пользователя

Минимизация

вероятности

ошибки

Минимизация

последствий

ошибки

Page 84: Usability-for-programmers

Возможность

выполнить

действие

Толерантность

к действиям

пользователя

Page 85: Usability-for-programmers
Page 86: Usability-for-programmers
Page 87: Usability-for-programmers

« У меня есть для вас

посылка, только я вам её не отдам,

так как у вас документов нет »

(с) Печкин

Page 88: Usability-for-programmers

« У меня есть для вас

Сообщения их покажу посылка, только я вам её не отдам,

так как у вас документов нет » вы ввели телефон в формате 8(xxx)xxx-xx-xx а ожидался телефон в формате +7-xxx-xxx-xxxx

(с) Печкин

Page 89: Usability-for-programmers

UI

Визуальная подача

(SEXY)

Логика взаимодействия

(FRIENDLY)

Алгоритмы

(SMART)

Статика Динамика Возможность

выполнить

действие

Минимизация

ошибок при

выполнении

действия

Трудоемкость

выполнения

действия

Как это

сделать?

Толерантность

к действиям

пользователя

Минимизация

вероятности

ошибки

Минимизация

последствий

ошибки

Page 90: Usability-for-programmers

ПОЛЕЗНЫЕ СОВЕТЫ

• Избегайте группировок в иерархии

– плоские списки + MRU + favorites + инк. поиск = Love!

• Говорящие надписи на кнопках (чаще всего глаголы)

• Трим строк при вводе

• Защита от случайного повторного нажатия

• Действия над объектом – как можно ближе к объекту

• Повсеместная возможность Undo (где не супер-сложно)

• Не терять пользовательские данные

– то, что ввел пользователь – священно и не должно внезапно исчезать

• Конструируйте толерантный софт

– не ругается на пользователя и не наказывает его, а пытается «угадать», что тот имел ввиду

• Бойтесь режимов и настроек

– это костыли и признание собственной слабости

• Почаще смотрите на софт глазами пользователя

– его ментальная модель

– помогает «коридорное тестирование»

Page 91: Usability-for-programmers

СПАСИБО ЗА ВНИМАНИЕ !

ВОПРОСЫ ?