Skip to content

Instantly share code, notes, and snippets.

@a-x-
Last active November 19, 2017 15:46
Show Gist options
  • Save a-x-/6da36eea4076a1f94ea8daec3a69972f to your computer and use it in GitHub Desktop.
Save a-x-/6da36eea4076a1f94ea8daec3a69972f to your computer and use it in GitHub Desktop.
#mxtnr_ux_research Письмо к другу про моё UX-исследование

Хей,
я хотел просто написать маленькое письмо, но получился большой и важный для меня текст, кстати, как тебе черновик моего поста?

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

очень много чего невозможно предусматривать в ПО и особенно на стыке разных программ

программы редко готовят для взаимодействия
а если готовят, то это работает плохо или дорого

COM'ы всякие от MS не полетели
applescript не популярен и никто не заморачивается по его хорошей поддержке. bash тоже не годится для сложной стыковки (interoperability)

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

пользователь как-то связывает ПО своими действиями

В давние времена я пробовал пользоваться на винде xstart, которая в частности может макросы писать по кликам мыши и клавиатурному вводу, но она не может сама находить параметры, запить мыши делается тупо позиционно, требуется отдельная операция записи макроса, на которую уходит много времени и которая почти никогда не проходит успешно, только 2 гика таким пользуются и делают плагины типа для всех, но подходят они только 4-м гикам и про них надо знать и специально качать

то же самое с любыми другими макросами, например в vim, sublime или notepad++ (в нём я активно пытался ими пользоваться, т.к. там не было тупого Cmd+D, которого увы стало почти достаточно, но нет счастья от его использования и много рутины, есть ещё регулярки и хоткей "выделить всё", но регулярки нормальный человек не пишет, даже программисты далеко не все в них могут, а я прибегаю только когда объём очень большой

с макросами и отменой последней операции есть та же проблема с атомарными операциями и недетерменированностью атомарности. Есть очень много факторов, влияющих на атомарность (т.е. отношение эквивалентности операций по включению в множество операций, представляющую для пользователя в данном контексте) Контекст описывается 1) решаемой задачей (task), 2) предудыщими операциями, 3) намерением (intent) локальным и глобальным). Пример, . в vim, повторяет предыдущее действие, Cmd-Z в любых редакторах отменяет предудущее и это почти всегда не совпадает с ожиданием. Поэтому 1) нужно собирать много параметров, чтобы предсказывать актуальную atomic operation (atomop) 2) нужно давать возможность выбрать context-level (через intentbox и seq-hotkey, e.g. ^,^,1 или limited mouse layer (см. подробнее описание терминов внизу)

Общую идею подсказывающих недетерменированных систем в UI я называю пока кодовой фразой «proactive user interface»

некоторые решения

  • автоматически матчить на существующие скрипты (suggest on revealed pattern) с ранжированием по когорте (термин из маркетинга для группы пользователей) интереса и общей популярности. Тут же идея с подпиской не на ПО (и тем более это отрицает уже умирающую конценпую покупки ПО) а на инфраструктуру (subscribe to platform or pay for platform) и фактором подписки, который расчитывается через широту использования и полезность. Т.е. например панелька с подсчётом количество использования хаков производительности в Idea становится очень полезной, она не ограницивается счётчиками использования, непосредственно влияет на монетизацию

  • выявлять константные паттерны, т.е. такие, что контекст определяет высокую или среднюю вероятность следования следующей операции

Высоко вероятные доступны по удобным хоткеям (что-то вроде ^,^ или caps,caps или Cmd,Cmd как Shift,Shift в Idea). По подобному хоткею доступно отклонение продложение, которое приводит к понижинею веса и новому предложению, если есть такое, чью вероятность превышает лимит

Средне вероятные перечислены в intentbox и доступны через seq-hotkey limited mouse layer

Источники скриптов

  • авто-сгенерированные
  • написанные сообществом, опубликованные в репозиториях и указанные в центральном registry
  • сгенерированные и подправленные
  • написанные централизованно, а так же разработчиками ПО (последнее применяется в IFTTT, но ни куда не годится как единственная схема, т.к. вообще не покрывает почти никаких кейсов)

Скрипты записываются на системах пользователей локально,
для них понятные формируются названия (отдельная тема для исследования, возможно подойдёт обучение с учителем на ассессорах чтобы тренировать сеть на понятность авто-описаний автоаннотирование)
Затем частые скрипты предлагаются сообществу, но не просто через авто-добавлиние в registry, а через suggest on revealed pattern.
Похожие скрипты матчится чем-то вроде catboost без учителя (задача на не заданную изначально категоризацию) и аггрегируют разные варианты названий, кроме названий формируются описания, автоматически и сообществом. В отличии от wiki, существуют (т.е. высоко ранжируются, те что ранжируются = не существуют) несколько/много вариантов, для разных когорт и по разным критериям лучших

Flex Window Manager

в первую очередь автоматическая компоновка окон (layout), ad hoc IDE не как централизованная система, а динамически компонуемые по важности окна разных приложений,

Window decoupled from software Окна не относятся к приложениям так сильно, как обычно: текстовый-редактор может поставляться одним вендором и например переиспользоваться везде, а поверх него могут быть плагины для разных задач. В случае с текстовым редактором это очень похоже на vs code или другой редактор/IDE, но тут задача решена для узкой области задач, если я хочу редактор для писателя, то я должен повторять путь с начала. Eclipse ужасен как минимум по UI/дизайну. Нужно ещё понять почему обычно не летят штуки вроде COM, как сделать написание модулей, а не законченных программ адекватным по времени и не приводящим к чрезмерному увеличению количества багов. Apple избегает как может непредусмотренной компануемости и многофункциональности для снижения количества тест-кейсов для контроля качества. Плагины всегда не работают, т.е. нет плагина который бы не ломал другие плагины и не отваливался бы на новых версиях, это относится к любым плагинам, особенно это плохо там, где хочется использовать их очень много: vim, sublime, vs code; Компонентность и plugin-base подход тем не менее набирает популярность и есть хорошие примеры: postcss просто ввёл плагины и убил все другие процессоры css только этим, там на плагины наложены серьёзные ограничения и доменная область у них очень узкая, что приводит к наблюдаемому отсутствию коллизий, кроме того, набор плагинов кастомизируется под каждую конкретную задачу, а не глобально в отличии от набора плагинов в IDE, которые не зависят от контекста, проекта и задачи (context, project, task). Кроме ограничения есть ещё один способ контроля качества плагинов: моно-репозиторий, интеграционные тесты, мощная статическая система типов и wide refactoring; реализаций встречал очень мало

Некоторые используемые в моей работе понятия

proactive ui — todo: describe later

intent — todo: describe later

intentbox — область например слева-внизу или на чём-то вроде touch-bar или, с саджестами операций, изменений в UI, объектов и др.

context & project & task — todo later: подробнее в других статьях про project'ы, context'ы, группы окон приложений, project flow (перенос данных пользователем между приложениями) и др

context-level & iteration-context-level — задают разделение как минимум на макро и микро атомарные операции (atomops)

atomop — атомарные операции

action — элементарные действия

seq-hotkey — hot-hotkey, как shift,shift в Idea

limited guided separate mouse layer mode — режим с 1) сужением координатной области, 2) выносом в отдельный слой, не действующий на обычный слой курсора мыши и 3) дискретными позициями (сетки 2–8 x 1-3); включается через seq-hotkey для выбора из нескольких вариантов, треюущих много места для своего описания чтобы заменить неудобные хоткеи состоящие из 3+ нажатий с цифрой, которую нужно ещё матчить на список глазами

pay for platform — динамический расчёт цены по полезности экосистемы, нет установки ПО, активное продвижение ПО и скриптов через suggest on revealed patterns. Можно ограничить цену, через сообщение о компании в которой работает или владеет подписчик. Для none-profit или имеющих большую open-source активность экосистема бесплатна

ПО — обычный софт, а так же адаптированный для скриптования и interoperability

Feature-First-Software — ПО, поставляемое для работы в первую очередь с отдельными модулями, а не с как с целым; подобное высказывалось в OS от firefox и Google Glass с карточками

Flex Window Manager — тайловый (не обязательно) оконный менеджер с auto-layout, проектной группировкой (project), авто-сохраняемыми и авто-именуемым сессиями, именуемыми окнами и т.д. См выше про Flex Window Manager связанные с ним рассуждения. См. project (will be described later)

FlexLight — todo: describe later: Умный spotlight, очень похожая реализация сейчас в iA writer на iOS; там стоит уделить некоторое время исследованию её возможностей, похожими микро spotlights являются Shift-Shit-палитра в Idea, Cmd-Shift-P в Sublime, но они микро и не достаточно умные

suggest on revealed patterns

автоаннотирование — формирование названий и описаний к скриптам, операциям

@a-x-
Copy link
Author

a-x- commented Nov 19, 2017

тут я не отвечаю в полной мере на вопрос, как придти к широкому распространинию компонентного подхода

recap / некоторые описанные и не описанные выше решения:

  • вместо покупки софта или подписка на софт, подписка на функциональность и экосистему, размер оплаты зависит от метрик ползности. это должно мотивировать вендоров делать компонентных софт
  • моно-репозитории плагинов/компонентов, исследования в области автогенерации интеграционных тестов
  • декларативный язык взаимодействия. Он должен быть при своей декларативности не очень высокоуровневым и узким. Сейчас для взаимодействия сестем широко используется rest, graphQL, protobuf, json-scheme; ранее ужасные CORBA, WSDL, SOAP
  • ограничения на компоненты
  • автогенерация скриптовых компонентов и автоаннотирование

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment