В этих текстах я попытаюсь объяснить, почему реальному пользователю для решения его реальных пользовательских задач полезно обладать некоторым минимальным набором базовых знаний о компьютерах и программах.
Для затравки -
Когда нам на работу привезли новую микроволновку, мы обнаружили на ней только две ручки. Одна управляла мощностью, другая - временем работы печки. Разумеется, все сразу поняли, как пользоваться этой микроволновкой, и в документацию никто и не заглядывал. Программисты, затеяв обсуждение интерфейса этой печки, не нашли в нем никаких изьянов... ну почти никаких. Но данная конкретная микроволновка позволяла только один режим приготовления - микроволны, и не обладала никаким противоестественным интеллектом. И этого было достаточно.
Моя домашняя микроволновка умеет и конвекцию, и гриль, и приготовление на пару, и еще много всего. Кнопок на ней гораздо больше, и неочевидно, для чего какая служит. Но мне нужна такая продвинутая функциональность, и я готова ради нее потратить время на чтение документации. Я бы не стала ставить такую микроволновку на общественной кухне - она слишком сложная.
Теперь можно и о компьютерах.
Компьютер - не более чем инструмент для решения задач пользователя. Пользователю незачем становиться компьютерным гуру - он должен просто делать свое дело. Неважно в чем это дело заключается - ведет пользователь бухгалтерию предприятия, рисует гениальные картины или программирует. В идеале пользователь должен знать свою предметную область и общаться с компьютером в терминах своей прикладной задачи.
Сразу замечу - если пользователь решает сложную задачу, он должен изучить программу, требующююся для решения этой задачи - кад, программу верстки, графический или нотный редактор, среду программирования и так далее. Свои инструменты нужно знать. Но эта мысль обычно протеста не вызывает.
Выше описан идеальный случай. Поглядим теперь на грабельные поля реального мира.
Интерфейс к пользовательским задачам может быть простым, а пользователь может не углубляться в технические сложности, а просто запомнить, на какую кнопку жать, если выполняются три условия.
- Система работает безошибочно... ну или почти безошибочно
- Все пользовательские задачи хорошо алгоритмизуются, то есть могут быть описаны в виде простой последовательности действий (кстати, примерно так работают визарды... когда работают)
- Система не позволяет пользователю совершать ошибки, которые могут привести к нестабильности работы системы. Раскин говорит еще о том, что пользовательские ошибки не должны приводить к потере пользовательских данных.
Мы все видели системы, которые удовлетворяют этим условиям. Ближайшие примеры - банкомат или кассовый аппарат в супермаркете. Когда эти штуки работают, они работают. Интерфейсы у них достаточно просты, чтобы не вызывать затруднений у умеющего читать пользователя (в банкомате) или один раз обученной кассирши (в супермаркете) и это хорошо.
Для компьютеров общего назначения эти три условия не работают. Либо все, либо некоторые.
Дальше я по мере сил буду рассказывать, как именно они не работают.