14 принципів створення ввічливих програм

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Професори Стенфордського Університету Кліффорд Насс (Clifford Nass) і Байрон Рівз (Byron Reeves) займалися вивченням реакції людини на комп'ютер. Застосовуючи класичні методи соціальної психології, вони виявили в поведінці людей щось цікаве. Результати їх роботи, опубліковані в книзі "The Media Equation", показують, що людина реагує на комп'ютер так само як на інших людей.

Для нашого мозку комп'ютери ведуть себе більше як люди, а не як каміння та дерева. Таким чином ми несвідомо ставимося до них, як до людей, навіть тоді, коли вважаємо це безглуздим. Іншими словами, людина має певні інстинктами, які говорять йому, як вести себе в товаристві інших чутливих створінь, тому як тільки якийсь об'єкт проявляє певні пізнавальні здібності, ці інстинкти починають діяти і ми починаємо реагувати на цей об'єкт так само, як на інших людей. Це несвідома і неминуча реакція спрацьовує у кожного.

Насс і Рівз використовували для тестів безліч студентів-комп'ютерників, достатньо досвідчених для того щоб самим написати тестову програму. Ці студенти були високоосвіченими, зрілими індивідуумами, але не дивлячись на це все без винятку заперечували, що завдяки своїм пізнавальним здібностям програми впливають на них емоційно, хоча результати спостережень були незаперечним доказ зворотного. З цього дослідження випливає важливий висновок: Якщо ми хочемо, щоб наша програма сподобалася користувачам, ми повинні зробити її поведінка схожим на поведінку людини. Досить просто, чи не так? Насс і Рівз стверджують що програми повинні бути "ввічливими", тому що ввічливість - це універсальний людський ознака, - хоча дії, які можна вважати ввічливими різняться від однієї культури до іншої, ця ознака присутня в будь-якій культурі. Продукти виробництва з високими пізнавальними здібностями, такі як програми, теж повинні дотримуватися цього правила і бути ввічливими.

Деякі продукти високих технологій ведуть себе так, як ніби сказавши "будь ласка" або "спасибі", можна бути грубим, але це не ввічливість. Якщо програма скупа на інформацію, приховує результати своєї роботу, змушує користувача шукати де знаходяться найпростіші функції, і звинувачує його у своїх власних невдачах, то користувачеві вона точно не сподобається. Це станеться незалежно від "будь ласка" і "спасибі". Це також не залежить і від того, наскільки меткої, представницької, метафорично, наповненою змістом або персоналізованої вона буде. Якщо ж програма поважає користувача і допомагає йому, то вона обов'язково йому сподобається. І знову, це відбудеться незалежно від її інтерфейсу; інтерфейс командного рядка теж буде подобатися, якщо він буде володіти вищевказаними якостями. Що означає для програми бути дружньою і ввічливою? Що означає для програми вести себе подібно до людини? Торговці "Гербалайф" одягнені в красиві костюми, широко посміхаються і повні вражаючою інформації, але хіба вони нам подобаються?

Людина схильна до помилок, повільний і імпульсивний, але це не означає, що програма з такими якостями буде вважатися хорошою. Людина має безліч інших якостей роблять його добре підходить для ролі службовця - ролі, яку виконують більшість програм. Більшість хороших програмістів абсолютно необізнані в ввічливості. Програмісти виразні і точні до крайності, але тільки коли вони так відчувають. Їх спосіб спілкування так точний, що вони можуть здатися практично нездатними до спілкування. Концепції ввічливості або навіть людяності, можуть бути каменем спотикання для програмістів. Вони не в стані зрозуміти такі розпливчасті концепції. Вони борються з ідеєю зробити комп'ютери більш схожими на людей, тому що вони вважають людей слабкими та недосконалими комп'ютерними пристроями.

Я запитав мого друга Кейта Плиса (Keith Pleas), відомого програміста-експерта, що займається до того ж питаннями користувальницького інтерфейсу, що він думає про створення більш людяних програм. Кейт сприйняв додавання в програму людяності як додавання нечіткості у взаємодію. Він відповів: Чи може комп'ютер "брехати" вам? Чи може комп'ютер сказати вам, що у вас на рахунку "близько 500 $"? Чи може комп'ютер дати вам іншу відповідь, чому тільки що кому-то ще? Якщо ми збільшуємо людяність, ми повинні зменшити деяку "компьютерность", принаймні в порівнянні. З точки зору програміста відповідь Кейта виглядає природним. Дійсно, комп'ютер ніколи не видасть вам приблизний баланс, але тоді комп'ютер не побачить різниці між видачею повідомлення про те, що у вас на рахунку "близько 500 $" за частку секунди, і точної суми 503.47 $ за 17 хвилин. Більш ввічлива, більш людяна програма відразу б повідомила, що у вас на рахунку "близько 500 $" а потім поінформувала би вас, що дасть більш точну відповідь через кілька хвилин. Тоді вибір буде за вами - чи варто витрачати час на додаткову точність.

Людина має безліч якостей, які роблять його "ввічливим", але їх визначення туманні й розпливчасті. Ось мій список того, що покращує якість взаємодії як з іншими людьми, так і з програмами. Чемна програма цікавиться мною. Мій друг завжди цікавиться мною, і моїми уподобаннями. Він запам'ятає що я люблю, а що ні, щоб в майбутньому принести мені задоволення. Будь-яка людина, що пропонує будь-які послуги, спробує запам'ятати імена та обличчя своїх клієнтів. Деяким подобається, коли їх вітають на ім'я, деяким ні, але кожному подобається, коли до нього ставляться відповідно до його особистими уподобаннями. Більшість програм не знає нічого про те, хто нею користується. Справді, жодна з програм на моєму персональному комп'ютері не пам'ятає ні мене, ні моїх звичок, незважаючи на те, що тільки я і ніхто інший постійно, знову і знову користуюся нею. Кожна програма повинна намагатися запам'ятати мої звички, і зокрема, все, що я їй кажу.

Програміст вважає реальний світ світом інформації, так що як тільки програмі потрібно будь-яка інформація, вона просто вимагає її від користувача. Але бездумна програма забуває цю інформацію, вважаючи що завжди може зажадати її знову, якщо буде потрібно. Комп'ютери та так найкраще підходять для зберігання інформації, так що забувати її принаймні неввічливо. Наприклад, в моїй програмі електронної пошти є 11 чоловік, на ім'я Дейв. З більшістю з них я спілкуюся рідко, але цей список включає в себе Дейва Карлика (Dave Carlick), якому я пишу листи постійно. Коли я створюю новий лист і друкую "Дейв" у графі "Кому", я очікую, що на основі моєї поведінки в минулому програма здогадається, що я маю на увазі Дейва Карлика. Якщо б я хотів послати лист іншому Дейву (наприклад Дейву Форе), я б написав Дейв Ф, Девід Форе або щось ще, щоб вказати на мій неординарний вибір. Замість цього, програма веде себе досить безглуздо, завжди пропонуючи мені вікно для вибору потрібного Дейва з 11 варіантів.

Програмі просто наплювати на мене, вона ставиться до мене, як до чужинця, хоча я - єдина людина, якого вона знає. Чемна програма відноситься до мене інакше, ніж до інших. Будь-який хороший представник сфери послуг шанобливо ставиться до свого клієнта. Він розуміє, що той, кому він надає послуги - це його бос, і що б бос не хотів, він має отримати це. Коли власник ресторану вказує мені на столик, я вважаю це пропозицією, а не наказом. Якщо я чемно заперечу, і оберу інший столик у порожньому ресторані, я очікую що мене негайно там розмістять. Якщо господар відмовляється зробити це, я швидше за все покину цей ресторан і пошукаю інший, де мої бажання мають пріоритет перед бажаннями власника. Неввічливо програма контролює дії користувача, які здаються їй некомпетентними. Немає нічого страшного в тому, щоб програма висловила свою думку про те, що я зробив помилку, але вона в жодному разі не повинна судити мої дії. Наприклад, програма може стверджувати, що я не можу відправити замовлення, поки не введу свій номер соціального страхування, але якщо я все таки захочу відправити замовлення без нього, програма повинна зробити так як я сказав.

Чемна програма завбачлива. Якщо я питаю у службовця аеропорту, через який вихід пройти на рейс 729, я очікую, що він не тільки відповість на моє питання, але і дасть мені важливу інформацію про те, що виліт рейсу 729 затримується на 20 хвилин. Якщо роблю замовлення в ресторані, має бути ясно, що мені також потрібний ніж, вилка, ложка, сіль, перець, і серветки. Більшість програм не робить цього. Вони лише коротко відповідають на мої питання, не намагаючись проявити завбачливість щодо іншої інформації, навіть якщо вона прямо пов'язана з моїми цілями. Якщо я попрошу свій текстовий процесор роздрукувати документ, він ніколи не повідомить мені, що папери залишилося мало, або що в черзі вже перебувають 40 інших документів. Чемна програма має здоровий глузд. Хоча будь-який хороший ресторан дозволить вам побувати на своїй кухні, але коли ви вперше входите в нього, офіціант, керуючись здоровим глуздом, проводить вас в обідній зал.

Більшість програм не роблять різниці між кухнею і обіднім залом, поміщаючи поряд часто-використовувані і ніколи не використовувані елементи управління. У програмі можна зустріти пункти меню пропонують прості, нешкідливі функції поряд з надзвичайними, скасувати які неможливо. Це як якщо б вас посадили за стіл поряд з духовкою. Згаданий раніше приклад "близько 500 $" - хороша ілюстрація наявності здорового глузду в інтерфейсі. Ми раз у раз чуємо жахливі історії про комп'ютерних системах, які шлють клієнтам чеки на 0.00 $ або рахунки на 8,943,702,624.23 $. Ізолювавши клієнтів від комп'ютерних систем, можна полегшити працю відділу обслуговування клієнтів, проте службовцям все одно доводиться ними користуватися. Службовцям платять за це, тому вони намагаються не надто сильно скаржитися, тим більше що скаржитися то нікому - відділ обслуговування клієнтів явно не для них. Чемна програма передбачає мої потреби.

Мій асистент знає, що мені потрібна кімната в готелі, коли я їду в інше місто на конференцію, незважаючи на те, що я не говорив йому цього спеціально. Він знає, що мені потрібна тиха кімната і замовляє її без жодного нагадування з мого боку. Він передбачає мої потреби. Мій web-браузер проводить більшу частину свого часу в порожньому очікуванні, поки я переглядаю завантажені сторінки. Однак він може дуже просто передбачити мої потреби і підготуватися до них, замість того щоб витрачати час даремно. Чому б не використати цей час, щоб попередньо завантажити сторінки, посилання на які видно у вікні. Цілком ймовірно, що я незабаром попрошу браузер завантажити ту або іншу посилання. Легше зупинити запит, якщо він виявиться непотрібним, ніж чекати його виконання. Чемна програма чуйна. Коли я обідаю в ресторані, я очікую, що офіціант буде реагувати відповідним чином на мої натяки. Коли я веду жваву бесіду з сусідами за столом, я очікую що офіціант в цей час буде виконувати інші справи. Було б недоречним, якби він перервав нашу розмову і сказав "Привіт, мене покликом Рауль, і я буду вашим офіціантом на цей вечір". З іншого боку, як тільки наша бесіда закінчиться, і я почну крутити головою в пошуках Рауля, я чекаю, що він відразу ж поспішить до мого столика, щоб дізнатися, що мені потрібно.

У мене на комп'ютері зазвичай встановлено дозвіл екрана 1024х768. Коли я проводжу презентації, мені необхідно тимчасово змінити дозвіл на 800х600 щоб воно відповідало низькому дозволу мого відео-проектора. Багато із запущених програм, включаючи Windows 95, реагують на зміну дозволу зміною розміру, форми і положення на екрані своїх вікон. Проте коли я змінюю дозвіл назад, вікна не повертаються до своїх розмірах. Інформація про це легко доступна, проте програма не піклується про мої очевидних потребах. Чемна програма замовчує про свої проблеми. У барі, салоні і психіатричному кабінеті бармен, перукар і доктор будуть замовчувати про свої проблеми і показувати інтерес у ваших. Така природа сфери обслуговування. Програми теж повинні мовчати про свої проблеми і цікавитися вашими. Так як в комп'ютерів немає власного "я" і почуттів, вони відмінно підходять для такої ролі, але вони зазвичай ведуть себе навпаки.

Програми завжди докучають мені підтверджують повідомленнями і непотрібними рядками станів. Я не хочу знати, наскільки важка робота комп'ютера. Мене не цікавлю труднощі програми в питанні коли чистити "кошик". Я не хочу чути її ниття про те, що вона не впевнена, в яке місце на диску записати файл. Я не хочу чути свист модему або спостерігати інформацію про швидкість передачі даних, так само як я не хочу чути про розлучення бармена, зламаному автомобілі перукаря чи аліментів доктора. З цього випливають два висновки. Програма не тільки повинна мовчати про свої проблеми, але й повинна вміти вирішувати їх сама. Чемна програма добре поінформована. З іншого боку, всі ми повинні знати, що відбувається. Той же бармен допомагає мені, повісивши список цін переді мною на стінці. Власники магазинів повинні тримати своїх покупців у курсі того, що може їх зацікавити. Я не хочу дізнатися 21 листопада в м'ясній лавці, що індички на День Подяки скінчилися. Я хочу знати заздалегідь, що обсяг партії обмежений і замовлення потрібно зробити заздалегідь.

Коли я шукаю інформацію в Інтернет через пошукову машину, я не можу бути впевнений, що не натраплю на непрацюючу посилання. Я вибираю потрібну мені посилання і отримую гидке повідомлення про помилку "404 Link Not Found". Хіба Пошукова машина не може періодично перевіряти кожне посилання? Якщо посилання невірна, її можна видалити зі списку, і мені не доведеться витрачати час на очікування її завантаження. Програми постійно пропонують мені варіанти вибору, які, з різних причин, в даний час недоступні. Програма повинна знати це, і не виводити їх на екран.

Чемна програма сприйнятлива. Консьєрж Нью-Йоркського готелю, де я часто зупиняюся, зауважив мій інтерес до бродвейських шоу. І тепер, коли б я не зупинився в цьому готелі знову, консьєрж - без мого прохання - залишає в моїй кімнаті. Він виявився досить сприйнятливий до моїм інтересам, що дозволило йому припустити мої бажання і забезпечити мене потрібною інформацією до того, як я сам подумаю про неї. Для цього консьєржу не потрібно багато зусиль, але в результаті я повертаюся в цей готель знову і знову. Я розкриваю на весь екран вікно будь-якої запущеної програми. Потім я використовую Панель Завдань для перемикання між запущеними додатками. Але програми, які я запускаю, не помічають цей факт. Я так часто максимизирую вікна, що мої уподобання повинні бути ясними і однозначними. Інші користувачі працюють з програмами в маленькому вікні, щоб бачити Робочий Стіл. Так просто для програми зрозуміти це і передбачити дії користувача.

Чемна програма упевнена в собі. Я очікую від службовців, з якими я спілкуюся певної сміливості і впевненості в собі. Якщо вони побачать, що я виходжу з вбиральні з розстебнутою ширінкою, я хочу щоб хто-небудь швидко, чітко і ненав'язливо сказав мені про це до того, як я ввійду в зал, щоб виголосити промову. Для цього потрібна певна сміливість, але ця сміливість буде оцінена. Точно також, якщо мій асистент не зможе взяти квитки на потрібний мені рейс, я очікую, що він замовить квитки на найбільш підходящий, не турбуючи мене з за таких дрібниць. Якщо я прошу комп'ютер видалити файл, я не хочу щоб він запитував у мене "Ви впевнені?" Звичайно я впевнений, інакше б я не питав. Я хочу, щоб він мав сміливість у своїх переконаннях і видалив файл. З іншого боку, якщо комп'ютер має якісь підозри, що я можу помилятися - що може бути завжди - він повинен передбачити це, і підготуватися до можливого відновлення файлу, якщо я раптом передумаю. У будь-якому випадку, програма повинна бути впевненою у своїх діях, а не перекладати відповідальність на мене. Дуже часто після тривалої роботи з документом я натискаю кнопку "Друк" і йду випити чашечку кави, поки документ роздрукується. Потім я повертаюся щоб виявити посеред екрану безглузде і страшне вікно діалогу з питанням "Ви дійсно хочете друкувати?" Така невпевненість просто приводить у лють, і це антитеза ввічливої ​​поведінки.

Чемна програма не ставить зайвих питань. Коли я замовляю салат в хорошому ресторані, я отримую хороший салат. У третьосортному ресторані мені подають його несвіжим разом з купою питань "З шпинатом? З цибулею? З грінками? Посипаний сиром? Повну порцію або середню? Масло французьке чи італійське? Подавати до або після головного страви? "Навіть самий вимогливий гурман не захоче ніякого салату з таким ставленням, проте програми весь час ведуть себе подібним чином. Adobe Photoshop наприклад обсипає користувача безліччю непотрібних маленьких питань, кожен в окремому вікні. Неввічливо програма задає безліч дражливих питань. Коли вибір пропонують насильно - це важке випробування. Вибирати можна різними способами. Візьмемо, наприклад, розглядання вітрин магазинів. Ми зазвичай дивимося на вітрини бездіяльно, обдумуючи, вибираючи, або ігноруючи товари, які нам пропонують. З іншого боку, іноді нам насильно пропонують вибір, як наприклад на митниці: "У вас є що-небудь потребує декларації?". Якщо нас зловлять, наслідки можуть виявитися значними. Але ми не знаємо, що піде за цим питанням. Будуть нас обшукувати чи ні? Якщо ми знаємо, що обшуку не уникнути, ми ніколи не будемо брехати. А якщо ми знаємо, що ніякого обшуку не буде, нас буде долати спокусу провезти зайву пачку Мальборо.

Чемна програма є подстраиваемой. Коли система ручної обробки інформації переноситься на комп'ютери, що-небудь завжди втрачається. Найчастіше система комп'ютеризуються для збільшення обсягів оброблюваної інформації, а не для зміни свій функціональності. Однак системам працюють вручну властива гнучкість - властивість, яка на так просто виділити серед інших. Хоча автоматизована система введення замовлень може обробити в мільйон разів більше замовлень, ніж простий службовець, службовець завжди може підлаштувати роботу системи. В автоматизованій системі ця можливість зникає. Немає практично жодної можливості змінити роботу тієї чи іншої функції. Коли службовцю дзвонить знайомий з відділу продажів і пояснює, що можна отримати більшу вигоду якщо ось це замовлення обробити швидше, він прискорює його обробку. Коли надходить який-небудь замовлення з неповною інформацією, він може обробити його і повернутися до нього пізніше, щоб заповнити інформацію. Така гнучкість начисто відсутня у комп'ютеризованих системах.

Комп'ютерні системи можуть перебувати лише у двох станах: не-існування або повна відповідність; будь-які проміжні стану не приймаються або ігноруються. Будь-яка "ручна" система має важливе але парадоксальний стан невизначеності (про який не говорять, але часто користуються), коли транзакція може бути прийнята, але повністю ще не оброблена. Оператор створює цей стан у себе в голові. Наприклад, автоматизованій системі потрібна інформація і про клієнта та про його замовлення для того, щоб виписати рахунок. Тоді як службовець може виписати рахунок не маючи повної інформації про клієнта, автоматизована система не зможе виконати такий запит, не бажаючи виписувати рахунок. Я називаю цю здатність людини діяти поза існуючої схеми обробки інформації до того, як всі необхідні реквізити будуть доступні подстраіваемостью. Відсутність це якості - одна з головних причин нечеловечним комп'ютерних систем. Це прямий наслідок моделі втілення. Програмісти не бачать ніякого резону в тому, щоб створювати проміжні стани, тому що в комп'ютері вони не потрібні. Але користувач повинен мати можливість злегка "підправити" систему. Одне з великих переваг подстраиваемой системи - зменшення кількості помилок. Допускаючи існування в системі тимчасових маленьких помилок і довіряючи людині в тому, що він пізніше виправить їх, можна уникнути більш серйозних помилок. Однак більшість правил виходять від комп'ютерних систем спрямовані на те, щоб не допустити цих маленьких помилок. Ці негнучкі правила роблять програму і людини суперниками, і оскільки людині не дають підлаштовуватися, щоб уникнути великих помилок, він незабаром перестає піклується про захист програми від більш серйозних проблем. Коли такі правила застосовуються до людини, страждають обидві сторони.

Подстраіваемость - одне з небагатьох якостей людини, пов'язаних з ввічливістю, яке важко вмонтувати в комп'ютерну систему. Подстраіваемость вимагає від інтерфейсу великих можливостей. Для того, щоб бути подстраиваемой система має зробити свій внутрішній процес доступним досвідченому користувачеві. Службовець не зможе перемістити документ у початок черги, поки він не буде чітко бачити саму чергу, її початок і кінець, документ і його положення в черзі. Далі йому повинні бути доступні інструменти для того щоб витягти документ з черги і помістити його в самий початок. Фізична реалізація подстраіваемості вимагає спеціальних засобів для зберігання записів у стані невизначеності, але схожі кошти потрібні для операцій скасування (undo). Справжня проблема в тому, що подстраіваемость робить можливим шахрайство і зловживання. Підстроювання системи можна розцінити як шахрайство. Технічно це порушення правил. У реальному світі на це закривають очі, тому що це спеціальний випадок, і мається на увазі що той, хто "підстроїв" систему призведе всі рахунки в порядок до кінця робочого для чи даної роботи. Всі подібні приклади мають звичайно бути "підчищені" до того, як прийде перевірка.

Якби процес тимчасового призупинення правил став би широко відомий, у людей з'явилося б бажання зловживати цим. Можна навести безліч раціональних і логічних причин не використовувати підбудовується системи. Але на жаль, таке ідеалізоване стан справ не є точним описом роботи реального світу. Люди використовує подстраіваемость "ручних" систем у всіх видах бізнесу щоб утриматися на плаву. Незважаючи на всі перешкоди, наповнення автоматизованих систем подібною якістю є життєво важливим питанням. Для запобігання шахрайства можна скористатися можливостями комп'ютера стежити за всіма діями користувача і показувати цю інформацію спеціальному спостерігачеві. Принцип тут простий - дозволити користувачеві робити все що він захоче, але докладно записувати всі його дії, так що відповідальність залишається.

Чемна програма приносить задоволення. У програмуванні важко досягти задоволення. Комп'ютер не зробить нічого, поки ви не витратите величезних зусиль на написання програми. Тому програмісти створюють свої програми точно такими ж. Їхні програми змушують користувача вводити всю можливу інформацію, а самі й пальцем не поворухнуть. Якщо б хтось з людей вів себе подібним чином, вам би він дуже не подобався. Ми можемо зробити програми значно більш ввічливими, якщо вони будуть працювати для того, щоб надати користувачеві всю можливу інформацію без значних зусиль з його боку. Чемна програма вселяє довіру. Друзі довіряють один одному, тому що залежать один від одного, і завжди готові пожертвувати собою. Коли комп'ютери ведуть себе абсолютно некеровано і неохоче виконують завдання користувачів, ні про яку довіру й мови бути не може. Я довіряю банківському службовцю, тому що він посміхається мені, але я завжди перераховую свої гроші після банкомату, тому що просто не довіряю тупий машині.

Програми дратують нас не через нестачу можливостей, а через відсутність ввічливості. Як показує наведений список характеристик, в більшості випадків зробити ввічливу програму нітрохи не важче, ніж неввічливо. Просто хтось повинен передбачити взаємодію, що імітує якості чутливого і турботливого друга. Жодна з цих характеристик не відрізняється від інших, більш очевидних цілей інформаційного бізнесу. Більш людську поведінку - найочевидніша мета з усіх.

Список літератури

Alan Cooper. 14 принципів створення ввічливих програм.


Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
45.9кб. | скачати


Схожі роботи:
Соціальні теорії старіння їх значення для створення програм адаптуюся
Соціальні теорії старіння їх значення для створення програм адаптації до старості
Створення бази даних функціональних аналогів Windows-програм для ОС Linux і розробка методики
Етапи розробки програм Тестування та налагодження Документування програм
12 принципів продуктивності Емерсон
Характеристика принципів виховання
Загальна характеристика принципів навчання
Поняття та система принципів трудового права
Поняття і класифікація принципів трудового права
© Усі права захищені
написати до нас