HCI введение 1/3
HCI расшифровывают двояко. узко - human-computer interfaces. Шире - human-computer interaction - человеко-машинное взаимодействие. Как и многие другие концепции computer science, HCI - абстракция, но не над ОС или железом, а над моделью ПО (см. архитектуру Model-View-Controller) в целом. С грамотно поставленным HCI становится минимально важно, что там бегает под капотом. Примерно как тому, кто звонит по телефону, не важно, как идет сигнал, какие принципы связи, и кто клал кабель.HCI в своей основе не о красоте и даже не об эргономике. Она о пользовательском поведении и психологии.
Любое ПО и в более широком смысле любая вещь существует не для того, чтоб функционировать как-то сама внутри себя (кантовская вещь в себе). Ее смысл существования - решать те или иные проблемы и задачи пользователей вещи. А задачи пользователя в свой черед состоят не в том, чтобы что-то с вещью сделать. А в том, чтобы получить выгоду, снять проблему и так далее. Скажем, у владельца автомобиля нет цели вращать руль и нажимать педали. У него задача доехать в точку Б из точки А. Глобальная задача HCI #1 - это установить такие задачи.
На следующем этапе HCI решает, какие есть способы дать пользователю решить эту задачу наиболее оптимально. Тут HCI становится принципами абстрагирования от "модели" и преобразованием ее в "виды". MVC старая добрая, но при этом предполагается что пользователь постигает модель сугубо через манипулирование и изучение видов.
Модель для пользователя может быть черным ящиком. В идеале юзеру не надо знать, что в том ящике делается. Наоборот, необходимость понимать, что под капотом жужжит и что в мосте свистит (или что надо и не надо делать, чтоб не жужжало и не свистело) - это конструктивные недостатки модели, видов или обоих их вместе. HCI то что называется task agnostic - для нее есть человек с его целями и есть машина, которая должна их решить
У любого софта, который долго развивается и долго существует, есть куча возможностей. На практике складывается распределение Парето - 80% юзеров регулярно используют 20% фунций. Допустим, в Экселе есть возможность покрасить ячейку и есть функция матричного произведения. Матричное произведение в опытных руках зверь, но подавляющее большинство использует готовые шаблоны закраски, а про матричное произведение и знать не знает что оно там лежит, и тем более что оно умеет. Хорошее решение с точки зрения HCI дает массовому юзеру кратчайший маршрут к задаче "покрасить ячейку", а пауэрюзеру – информацию про существование матричного произведения и документацию к нему. В любой задаче, будь то рисование презентации или управление конвергентной архитектурой в датацентре, есть recurring tasks и есть one time tasks. Вопрос в том, каковы они.
В конечном итоге, HCI стремится к тем же принципам, что еще Витрувий когда-то сформулировал - "надежность, польза, красота". Все эти концепции там очень глубоко проработаны. Для изучения того, как система оценивается по каждому из них и другим параметрам ("обучаемость", скажем), есть много приемов. Добиться, чтоб пользователь обеспечивал систему ровно теми инпутами, которые нужны, и получал назад ровно столько аутпута, сколько ему необходимо – вот это то, чего ради существует HCI.