Единообразие против предугадывания

Вопрос риторический

Приведу два вполне логичных утверждения, относящихся к проектированию интерфейсов:

  1. Подобные вещи должны вести себя одинаково чтобы не путать людей.
  2. Машина должна предугадывать истинные намерения человека и всегда вести себя нужным образом.

Теперь рассмотрим простой пример: графический редактор в рамках простого рисования, как в Word'е. В документе присутствуют вставленные туда картинки, прямоугольники, эллипсы.

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

Обычно пропорциональное растягивание включается/выключается удерживанием клавиши Ctrl или Shift. Но встает вопрос: как оно должно быть по умолчанию, когда клавища не нажата?

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

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

Electriq Thursday 29 March 2012 at 6:37 pm | | Russian | Four comments

Homo sapiens vs Homo logicus

На примере из жизни

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

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


Иконка, изображающая цепочку, не слишком удачная

Сделал и отправил друзьям на тест. Вот тут-то начитается самое для меня неожиданное: два человека независимо сказали мне, что кнопка судя по всему не работает! Но я-то знал, что это не так, и начал разбираться.

Что же оказалось? Оказалось, что они нажав кнопку «сохранять пропорции» не вводили числа в поля рядом с кнопкой, а тянули объект за угол мышкой. В мое программистское понимание это не укладывается до сих пор. Ведь работать так оно по логике никак не может: поведение объекта на графике не должно зависеть от кнопки, расположенной в окне, которое может быть как открыто, так и закрыто в данный момент. К тому же, окно настраивает текущие выделенные объекты, и если бы действие кнопки распространялось на изменение размера мышкой, то у каждого объекта было бы своя реакция на мышь, причем внешне это было бы не определить. Ну в общем, бред :)

Пользователи видят совсем не то, что подразумевает программист.

Однако реакция «нормальных людей», то есть, по большей части, тех, для кого все это делается, должна учитываться в первую очередь.

Выход из сложившейся неоднозначной ситуации я пока не придумал. Один из вариантов — заменить окно закрываемой панелью инструментов, встроенной в главное окно. Есть вероятность, что в этом случае кнопка «сохранять пропорции» будет сильнее ассоциироваться именно с полями ввода, а не самим объектом. Другой вариант, конечно, — распространить действие кнопки на изменение размера мышкой.

P.S. Вопрос «что логично на самом деле» бессмыслен. Речь идет о том, что у разных людей в голове разные модели, и иногда это непросто учитывать при разработке интерфейса.

P.P.S. Настройка сохранения пропорций воспринимается как свойство объекта наравне с шириной и высотой, — скажете вы. А я отвечу, что для меня, для разработчика, сохранение пропорций при растяжении относится к настройке поведения интерфейса, а не к объектам.

Electriq Thursday 29 March 2012 at 5:18 pm | | Russian | No comments

Новый логотип

Weird Wires

Gris нарисовала красивый логотип для Weird Wires, он перед вами! :)

А еще — талисманчик:

Теплый ламповый жук

Теплый ламповый жук

Electriq Thursday 22 March 2012 at 10:57 pm | | English | No comments

О честности перед собой в проектировании интерфейсов

Когда программист самостоятельно занимается разработкой интерфейса (напомню, для пользователя нет ничего кроме интерфейса и опыта взаимодействия), в нем часто борются две мысли: «надо бы сделать тут поудобнее» и «для этого потребуется слишком много кода». Приведу пример.

Недавно я добавлял новую бесполезную функцию в MagicPlot — задание формул для столбцов без открывания диалогового окна, как в Excel (кстати, еще одна мысль, которая часто возникает — «как же я сразу не догадался?»). Теперь когда среди открытых в проекте окон активно окно с таблицей, панель инспектора вместо задания размера шрифта, цвета линий и прочего оформления содержит большое поле для ввода формулы с подсветкой синтаксиса:


Сейчас, когда я пишу, новая версия еще не вышла

И вроде бы все хорошо, но я смотрел и думал, что чего-то не хватает. Не хватает умного автоматического дополнения, которое предложило бы список функций и переменных с их описанием, а также показало бы пару десятков ранее введенных формул. Но в стандартной библиотеке Swing нет готового компонента, реализующего всплывающее автодополнение, да еще и с описанием-справкой. А сторонние библиотеки, которые придется долго и мучительно тонко настраивать под свои нужны, я использовать не люблю. Поэтому я отложил автодополнение в дальний ящик, и, чтобы не раззадоривать пользователей-тестеров, решил вообще не упоминать об этой идее.

Я опубликовал скриншот, и написал, что «примерно так оно будет выглядеть». Каков же был первый вопрос пользователей? — Вы угадали: «а будет ли автодополнение?»

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

По сути я как разработчик интерфейса задаю себе вопрос: «какой должна быть идеальная программа?». Ответ на этот вопрос часто нервирует меня как программиста, но я понимаю, что не написать дополнительный код было бы «нечестно». Чтобы стало легче, полезно переключиться на что-то другое, а затем вернуться и доделать старое.

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

P.S. Автодополнение пока не реализовано, но я обещаю, что немного погодя оно появится. Уже прикидывал и читал, как присобачить туда всплывающий список, и что он должен показывать.

Electriq Saturday 17 March 2012 at 08:13 am | | English | One comment

Почему программы теперь такие большие

Тема для размышления

Вопрос:

Ответ (и ведь не поспоришь!):

Собственно, код, который нужен из библиотеки:

Отсюда: http://stackoverflow.com/questions/1264709/convert-inputstream-to-byte-in-java

Конечно, использование сторонних библиотек часто оказывается дешевле и проще: не нужно писать, тестировать и поддерживать новый код. Но мне кажется, не стоит уходить в крайности :)

Electriq Monday 12 March 2012 at 11:48 am | | English | No comments
Used tags:

О газовых колонках

Что случилось с дизайном?

У меня в ванной висит газовая колонка времен строительства дома − середины 1960-х. Выглядит она вот так:


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

Фотография, может, не самая удачная, но можно заметить, что корпус колонки имеет довольно причудливую округло-ломанную форму.

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

Вот смотрите, что дают Яндекс.Маркет, Google Shopping и картинки Google:

Read more →

Electriq Sunday 04 March 2012 at 3:11 pm | | Russian | No comments
Used tags: