Решил я давеча поиграть в одни гоночки. Скачал (лицензию, между прочим), установил. Запускаю, стремлюсь с нетерпением к первому заезду, ОК, далее, далее, как вдруг... Что это?
На весь экран открывается какой-то ролик, а радостный голос за кадром начинает рассказывать мне, как он рад видеть меня в игре и сейчас покажет все, что мне нужно знать. Ладно, думаю я, нажимаю Esc, чтобы пропустить эту несомненно важную, но не очень интересную часть игрового процесса, и ничего не происходит. Допустим, жму Enter - мне продолжают рассказывать, пробел - реакции никакой, F10 - аналогично. Паника и хаотические щелчки мышью ни к чему не приводят. Тут ролик кончается, я спокойно выдыхаю и все-таки направляюсь к заезду. Видимо, обрадовался я слишком рано, потому что меня начали знакомить с тем, что в игровом мире есть множество трасс, соревнований, классов, автомобилей... Ребят, можно я уже пойду? Я же просто покататься хотел. Хотя нет, вот уже гонка. А, перед гонкой тоже нужно посмотреть, как выглядит автомобиль, послушать, что на нем нужно ехать, причем желательно к финишу, а цель, вы не поверите, добраться туда быстрее соперников. И всю эту важную информацию вы обязаны выслушать до конца, потому что разработчики решили, что нельзя даровать игроку свободу выбора в этом вопросе.
Непосредственно до заезда я все-таки дошел, но осадочек, как говорится, остался. И тут мне вспомнилась основная аксиома пользовательского дизайна из "Руководства по UI дизайну для программистов" Джоэла Спольски (http://russian.joelonsoftware.com/uibook/chapters/1.html - кстати, очень рекомендую ознакомиться не только программистам и дизайнерам, как мне кажется, лучшая вещь на тему):
"Хороший дизайн пользовательского интерфейса подразумевает, что программа соответствует ожиданиям пользователей о том, как она должна себя вести."
Очевидно, что в случае с нашей злополучной игрой данное правило нарушается самым наглым образом - пользователь (то есть я) ожидал, что хотя бы одна из известных горячих клавиш сработает как полагается и закроет никому не нужную справочную информацию (Нет, серьезно, вы часто пользуетесь справкой в гонках?), а этого не произошло. Казалось бы, проблема невелика, но мы наконец-то плавно подходим к тому, что, как мне кажется, является большей проблемой.
Может показаться странным на первый взгляд (да и на второй в общем-то тоже), но пользователю не нужна ваша игра или программа. Исключения: пользователь ваш фанат и с нетерпением ждет новой версии с персональной скидкой, пользователь ваш работодатель, а ваша программа принесет ему несколько миллионов долларов, или же вы монополист на рынке. В остальных случаях, повторяю, пользователю ваша программа не нужна.
Это выглядит несусветной глупостью, потому что люди пишут тексты в офисных пакетах, читают электронные книги в читалках, играют в игры и вообще занимаются миллионами дел с помощью разнообразнейшего ПО, это все так. Проблема заключается в том, что пользователь использует программу только чтобы решить свою задачу, а программист зачастую почему-то считает, что первичным является желание использовать его ПО. Уже упомянутый Джоэл Спольски отлично выразился на эту тему:
"Уважаемые программисты, поверьте, пожалуйста: пользователей заботит гораздо меньшее количество вещей, чем вы думаете. Ваши программы они используют для решения своих задач. И все, что их волнует, - это решение их задач".
Мир был бы чуточку лучше, если бы разработчики об этом помнили, но, увы...
Проводил я как-то по работе сравнение специфического софта и нашел уникальный кросс-платформенный экземпляр - в теории он должен работать на разных операционных системах. Он и работает, только авторы не удосужились сделать установщик, скрипт запуска или хотя бы написать инструкции для пользователей не майкрософтной ОС. Информация на официальном (!) сайте гласит, что вы можете найти советы и комментарии где-нибудь на просторах всемирной паутины. Найти-то я нашел, вот только так и не понял, чем руководствовались разработчики, не соблаговолив снизойти до пользователя, немного отличающегося от дефолтного. Они что, всерьез думали, что пользователи Линукса по-прежнему предпочитают разбираться, как заставить что-то работать, вместо непосредственной работы?
Другой пример. Одна тетенька находит очередное нужное и важное приложение, скачивает, пробует установить или даже запустить. "Приложению не удалось запуститься потому что отсутствует .NET Framework v 3.1415/JVM 1.7828". Она наивно полагает, что развитие программного обеспечения во втором десятилетии 21 века позволяет компьютеру взять на себя всю ненужную и неважную для нее работу вроде автоматической установки драйверов и библиотек, и ждет, когда все само поставится или ее хотя бы перенаправит на сайт с одной единственной кнопкой "Скачать". Но, нет, программа закрывается. Разработчик тоже решил, что двадцать первый век на дворе, и у каждого уважающего себя человека уже установлено по 5 разных версий дотнета, джавы, а у кого нет, тот ламер и недостоин пользоваться моим софтом. Ладно, думает она и начинает искать другую программу.
Если вы написали крутое приложение, которое решает важную проблему, но для его работы надо, ну, там, питон поставить вот этой версии, а еще библиотеку одну, да все просто, вот тут скачаешь, сюда скопируешь, все должно работать, а потом, потом пользователь задумается, так ли ему нужна эта программа. Если вы сделали одну из лучших в своем классе программ, но интерфейс в ней не изменялся со второй половины восьмидесятых (в данном случае приверженность традициям - плохое оправдание), а все команды можно задать только с клавиатуры с помощью однобуквенных (!) сокращений, то ваша программа никому не будет нужна. Если вы вдруг решили, что стандартное меню и горячие клавиши - это не комильфо, и только вы знаете, каким должен быть по-настоящему удобный пользовательский интерфейс, подумайте о том, что пользователь - это не зритель, который пришел поглазеть на вашу работу, а человек, которому вашей программой еще пользоваться. И займитесь лучше современным искусством, пользы для мира будет больше.
В общем, уважаемые программисты, пожалуйста, помните, что пользователь заходит в программу, чтобы решать свои задачи, а не чтобы ознакомиться с вашим творением.
Гонки, кстати, я удалил после первого заезда.