इंटरफेस डिज़ाइन के स्वर्ण नियम (2013)
(cs.umd.edu)- Ben Shneiderman के इंटरफेस डिज़ाइन के 8 सिद्धांत अधिकांश interactive systems पर लागू किए जा सकने वाले व्यावहारिक मानदंड हैं, लेकिन हर design domain में उनकी जाँच और समायोजन की आवश्यकता होती है
- सुसंगत terminology और behavior, universal usability, और informative feedback ऐसे बुनियादी तत्व हैं जो उपयोगकर्ताओं को state changes का अनुमान लगाने और उन्हें समझने में मदद करते हैं
- workflow को शुरुआत·मध्य·अंत वाली इकाइयों में व्यवस्थित करना चाहिए, और completion के समय स्पष्ट confirmation देना चाहिए ताकि उपयोगकर्ता आसानी से अगले action पर बढ़ सकें
- error prevention को प्राथमिकता देनी चाहिए, और error होने पर ठोस recovery guidance तथा आसान undo देकर उपयोगकर्ता की चिंता कम करनी चाहिए
- अगर control की भावना और कम memory load को केंद्र में रखा जाए, तो mobile, desktop, और web interfaces में productivity और mastery की भावना बढ़ाई जा सकती है
सिद्धांतों की प्रकृति और लागू होने का दायरा
- Ben Shneiderman ने user interface design के विशाल ज्ञान को कुछ Golden Rules में संक्षेपित किया और उन्हें अधिकांश interactive systems पर लागू किए जा सकने वाले दिशानिर्देशों के रूप में व्यवस्थित किया
- ये सिद्धांत अनुभव से निकले हैं और 30 से अधिक वर्षों में परिष्कृत किए गए हैं, लेकिन कुछ विशेष design domains में अलग से validation और adjustment की आवश्यकता होती है
- 1985 की शुरुआती सूची भी छात्रों और designers के लिए उपयोगी मार्गदर्शिका मानी गई, और Jakob Nielsen, Jeff Johnson आदि ने इसमें बदलाव और विस्तार जोड़े
- यह संस्करण Designing the User Interface: Strategies for Effective Human-Computer Interaction: Sixth Edition के section 3.3.4 में शामिल है
इंटरफेस डिज़ाइन के 8 स्वर्ण नियम
-
सुसंगतता बनाए रखें
- मिलती-जुलती परिस्थितियों में actions का क्रम सुसंगत होना चाहिए
- prompts, menus, और help screens में एक जैसी terminology का उपयोग होना चाहिए
- रंग, layout, capital letters का उपयोग, और fonts भी पूरे interface में सुसंगत होने चाहिए
- delete command confirmation या password input को छिपाने जैसे अपवाद समझ में आने वाले और सीमित होने चाहिए
-
universal usability का समर्थन करें
- विभिन्न उपयोगकर्ताओं की ज़रूरतों को पहचानते हुए ऐसा flexible design चाहिए जो content transformation को आसान बनाए
- beginners और experts का अंतर, आयु समूह, disabilities, international differences, और technology diversity requirements के दायरे को बढ़ाते हैं
- beginners के लिए explanation, और experts के लिए shortcuts तथा तेज़ progression features, interface quality की धारणा को बेहतर बनाते हैं
-
informative feedback दें
- हर user action के साथ interface feedback होना चाहिए
- बार-बार होने वाले छोटे actions के लिए साधारण response पर्याप्त है, लेकिन दुर्लभ और महत्वपूर्ण actions के लिए अधिक ठोस response आवश्यक है
- अगर focus object को visually दिखाया जाए, तो changes को स्पष्ट रूप से दिखाना आसान हो जाता है
-
पूर्णता का एहसास देने वाला dialog flow डिज़ाइन करें
- tasks के sequence को शुरुआत, मध्य, और अंत वाले समूहों में व्यवस्थित करना चाहिए
- जब किसी task group का अंत होता है, तो informative feedback उपलब्धि, राहत, और अगले task की तैयारी का संकेत देता है
- e-commerce websites में product selection से payment तक जाना और फिर स्पष्ट confirmation page के साथ transaction समाप्त करना इसका एक उदाहरण है
-
errors को रोकें
- interface को जहाँ तक संभव हो इस तरह डिज़ाइन करना चाहिए कि उपयोगकर्ता गंभीर errors कर ही न सकें
- जैसे अनुपयुक्त menu items को disable करना, या numeric input field में alphabetic characters को अनुमति न देना
- यदि error हो जाए, तो सरल, रचनात्मक, और ठोस recovery instructions देनी चाहिए
- किसी एक गलत postal code की वजह से पूरे name·address form को फिर से भरवाने के बजाय, केवल गलत हिस्से को ठीक करने के लिए मार्गदर्शन देना चाहिए
- गलत action या तो interface state को बदले नहीं, या फिर state restore करने का तरीका साथ में दे
-
आसान undo की अनुमति दें
- जहाँ तक संभव हो, actions reversible होने चाहिए
- undo उपयोगकर्ताओं को यह भरोसा देता है कि वे errors रद्द कर सकते हैं, जिससे चिंता कम होती है और वे अनजाने विकल्पों को भी explore कर पाते हैं
- undo की इकाई single action, data entry task, या name·address block जैसे task group हो सकती है
-
उपयोगकर्ता के हाथ में control बनाए रखें
- experienced users यह गहराई से महसूस करना चाहते हैं कि वे interface को नियंत्रित कर रहे हैं और interface उनके actions पर प्रतिक्रिया दे रहा है
- अप्रत्याशित बदलाव, परिचित behavior में परिवर्तन, उबाऊ data entry, आवश्यक जानकारी पाने में कठिनाई, और इच्छित परिणाम न बना पाने की स्थिति उपयोगकर्ताओं को असहज बनाती है
-
short-term memory load कम करें
- मनुष्यों की short-term memory की information processing क्षमता सीमित होती है, और thumb rule के अनुसार लगभग “7±2 chunks” याद रखे जा सकते हैं
- ऐसे interfaces से बचना चाहिए जहाँ उपयोगकर्ता को एक screen की जानकारी याद रखकर दूसरी screen पर उसका उपयोग करना पड़े
- mobile phones को phone number दोबारा भरने की आवश्यकता नहीं होनी चाहिए, website location लगातार दिखनी चाहिए, और लंबे forms को एक screen में समेटा जाना चाहिए
डिज़ाइनर के लिए व्यावहारिक मानदंड
- इन सिद्धांतों की हर environment के अनुसार व्याख्या·परिशोधन·विस्तार किया जाना चाहिए
- सीमाएँ होने के बावजूद, ये mobile, desktop, और web designers के लिए एक अच्छा शुरुआती बिंदु हैं
- simplified data entry, समझ में आने वाली presentation, और तेज़ तथा informative feedback उपयोगकर्ता की productivity बढ़ाने पर केंद्रित हैं
- एक अच्छा interface उपयोगकर्ता को system के प्रति सक्षम होने·दक्षता होने·control होने की भावना दिलाने में मदद करना चाहिए
1 टिप्पणियां
Hacker News की रायें
UI के "design" में जरूरी तौर पर शामिल नहीं माना जाता, लेकिन performance भी अक्सर नज़रअंदाज़ हो जाती है
खराब performance वाला UI इन सभी design rules को तोड़ने जैसा है। मेरा Sony Android smart TV दिखने में शानदार है, लेकिन UI इतना धीमा है कि असल में इस्तेमाल के लायक नहीं
लगातार बदलता रहने वाला अस्थिर UI भी ज़्यादातर principles तोड़ता है। smart TV इस मामले में भी खास तौर पर खराब हैं; home screen layout और app icon की जगहें बिना किसी खास वजह के अक्सर बदल जाती हैं
इसके अलावा, मेरी एक निजी शिकायत जो लगातार बढ़ती जा रही है, वह है बिना label वाले icons। अक्सर tooltip तक नहीं होता, और अगर button का नाम जानने के लिए documentation को Google करना पड़े, तो वह UI design खराब है
इस्तेमाल में मुश्किल interface की ओर युवा users खिंचते हैं, और उसकी जटिलता parents वाली generation को बाहर रखने वाले insider feature की तरह काम करती है
अच्छा designer developers से चर्चा करता है कि उसके proposed UI का performance पर क्या असर पड़ेगा, और जब engineering ऐसे technical फैसले लेती है जो user को दिखेंगे, तो trade-offs में मदद करता है
UI में न सिर्फ सैकड़ों छोटे icons थे, बल्कि documentation में भी उन्हीं icons का वैसे ही इस्तेमाल किया गया था। manual कुछ ऐसा था: "पहले [] click करें, फिर [] दबाएँ, और आखिर में [] पर जाकर [] करें"
यह V5 के बहुत शुरुआती version की बात है, काफी पुरानी, उम्मीद है अब बेहतर हो गया होगा
बाकी सब लगभग coding जैसा है
मैं हर सुबह वही दो news podcasts सुनता हूँ, लेकिन app की recommendations हर सुबह बिना किसी वजह के उलट-पुलट हो जाती हैं
इससे भी ज्यादा चिढ़ाने वाली बात यह है कि app start होते समय एक पल के लिए कल वाला layout दिखाता है, फिर loading के कारण करीब 1 second रुकता है और फिर items को rearrange कर देता है। उसी क्षण हर बार हिलते हुए item पर गलत tap हो जाता है, जो बेहद frustrate करने वाला है
कुछ साल पहले साथ काम कर चुके एक designer ने बहुत अच्छे से समझाया था कि consistency क्यों महत्वपूर्ण है
यह limited colour palette या ऐसे font choice का मामला नहीं है जिसे कोई notice भी न करे। छोटी-छोटी rules के पीछे भागते-भागते software भयानक बन जाता है। कुछ लोग गलती से सोचते हैं कि UI में variety जितनी कम होगी, consistency उतनी ज्यादा होगी
असली बात है user को उस software का expert बनने देना
उस designer ने Microsoft Office का उदाहरण दिया था। लोग Microsoft Office को "जानने" पर गर्व महसूस करते हैं, और "Office" की inertia महसूस करते हैं, इसलिए कई apps के बीच सहजता से आते-जाते हैं। Vim में भी मुझे वैसा ही एहसास होता है। बस पता होता है कि कोई चीज़ कैसे काम करनी चाहिए, और अच्छी तरह बनाया गया नया plugin आम तौर पर उस pattern का सम्मान करता है
Office और (Neo)Vim बेहतरीन UI के उदाहरण नहीं हैं, लेकिन वे असाधारण रूप से stable हैं
उदाहरण के लिए, चार choices दिखाते समय आप brand theme लगे [Insert UI Library] का searchable checkbox combo box इस्तेमाल कर सकते हैं, या बस label लगे हुए सामान्य radio buttons या checkboxes दिखा सकते हैं। दूसरा विकल्प हर लिहाज से बेहतर है
users सिर्फ गोल और चौकोर shapes देखकर समझ सकते हैं कि एक ही विकल्प चुनना है या कई; वे चारों choices देख सकते हैं; mobile keyboard "search" करने के लिए ऊपर आकर छोटे screen को और नहीं ढकता; और accessibility भी हमेशा लगभग 100% रहती है
लेकिन यह option "हमारे design system के साथ cute लगता है" वाले criterion में fail हो जाता है, इसलिए designers आम तौर पर पहला option चुनते हैं; और इससे भी खराब, उसी तरीके को standard बना देते हैं, जिससे सामान्य widgets का इस्तेमाल "bug" बन जाता है
नतीजा यह कि बहुत सारे "UX designers" aesthetics और branding की पूजा करते हैं और बाकी सब कुछ कुर्बान कर देते हैं। UI widgets brand या creativity दिखाने की जगह नहीं हैं। यह वैसा ही है जैसे हर अक्षर को logo जैसा बनाने के लिए custom font बना देना—ऐसा नहीं करना चाहिए। customers के लिए brand से ज्यादा जरूरी है कि वे अपना काम पूरा कर सकें
इसने जरूरी feature ढूँढने की क्षमता को काफी नुकसान पहुँचाया
खुद को technical न मानने वाले किसी व्यक्ति को Excel में बेहद तेज़ी से काम करते देखना हमेशा खास होता है
Microsoft के UI design rules काफी कमाल के हैं। वर्षों की consistency की वजह से लोग हर 1–2 साल में upgrade करने के बाद भी software इस्तेमाल करते रह सकते हैं। मैं यह Microsoft fan होने के कारण नहीं कह रहा
upgrade का मूल उद्देश्य UX सुधारने वाले incremental changes हैं। हालांकि मुझे समझ नहीं आता कि जब Win 95 ने "कहीं भी right-click करने पर properties और deeper settings/details" का concept लाया, तो design team ने उसे reject क्यों नहीं किया। क्योंकि यह ऐसी invisible feature थी जो user को दिखाती ही नहीं थी कि right-click किया जा सकता है। Win 95 को शुरुआती कुछ बार इस्तेमाल करते समय शायद किसी को right-click समझ नहीं आया था
मैं मानता हूँ कि proficiency relevant है, लेकिन consistency कैसे proficiency में बदलती है, इसे थोड़ा और जोड़कर समझाने की जरूरत लगती है
Consistency का मतलब है कि user system के बारे में जो पहले से जानता है, उसे system के दूसरे हिस्सों तक compound interest की तरह फैलाना। अगर system consistent है, तो X और Y सीखने में लगाई गई मेहनत से Z और W भी समझ आ जाते हैं, क्योंकि वे उसी तरह काम करेंगे। inconsistent system में पहले की learning investment से मिलने वाला value बहुत कम हो जाता है
Office कम-से-कम long term में stable नहीं है। बदनाम ribbon stable और efficient Word UI से दुखद विचलन था, और Windows platform में Microsoft की समझ से परे regression ने समस्या और बढ़ा दी। उदाहरण के लिए applications से menu bar हटाना। आखिर उन्होंने ऐसा क्यों किया, समझ नहीं आता
एक और "नियम" जो मुझे लगता है कि होना चाहिए, वह है conceptual model को यूज़र के सामने उजागर करना
अगर कोई व्यक्ति product के conceptual model को नहीं समझता, तो icon labels कितने भी अच्छे क्यों न हों, वह हमेशा उलझेगा। उदाहरण के लिए, किसी product की कल्पना करें जिसमें "New Configuration" command हो; सबसे पहले तो यह ही अस्पष्ट है कि "Configuration" क्या है। क्या यह कोई template है जिससे दूसरे objects define किए जाते हैं? कई options के bundles के बीच तेज़ी से switch करने का तरीका है? या folder जैसा कोई container है?
UI ऐसा design होना चाहिए कि यूज़र केवल interface explore करके conceptual model का अनुमान लगा सके। यह हमेशा आसान काम नहीं होता
"उदाहरण के लिए, जब यूज़र गलत postal code डालता है, तो उससे पूरा name-address form दोबारा न भरवाएं; सिर्फ गलत हिस्से को ठीक करने के लिए guide करें" वाला हिस्सा मेरी सबसे बड़ी शिकायत है, और यह आज भी अक्सर दिखता है
multi-page forms में भी आगे-पीछे जाते समय यह सिद्धांत लागू रहना चाहिए
"गलत action से interface state नहीं बदलनी चाहिए, और अगर बदल गई हो तो मूल state में लौटने का तरीका बताना चाहिए" भी महत्वपूर्ण है
मोबाइल फोन और watch जैसे छोटे screens पर space बचाने की कोशिश में designers increasingly icons पर निर्भर हो रहे हैं। लेकिन कई icons अपरिचित होते हैं या समझने में मुश्किल होते हैं, और कभी-कभी तो दबाकर ही पता चलता है। ऐसे icons में गलती होने पर मूल state में वापस जाने का तरीका जरूर होना चाहिए
email address और password से login करने की कोशिश करते समय भी यह पहले से एक समस्या है, लेकिन अगर मैंने "Forgot password" दबाया है, तो कृपया मुझे ऐसे form पर न भेजें जो अभी-अभी डाला हुआ वही email address फिर से मांगता हो
"अनुपयुक्त menu items को grey out करें" वाली बात पर एक शर्त है
अगर grey out होने की वजह स्पष्ट नहीं है, तो ऐसा नहीं करना चाहिए। command को enabled रखें, और click करने पर अगर वह अभी इस्तेमाल नहीं हो सकती तो error message में बताएं कि क्यों नहीं हो सकती। यूज़र से यह पता लगवाना कि command disabled क्यों है, परेशान करने वाला है
अपवाद वह स्थिति है जहां यूज़र के बहुत समय बर्बाद करने के बाद ही यह बताया जाने की बड़ी संभावना हो कि यह इस्तेमाल नहीं हो सकती
संबंधित और पढ़ने के लिए: https://medium.com/@vedranio/james-bond-and-the-design-of-di...
यह दोनों तरफ के फायदे लेने का तरीका लगता है
एक to-do app ऐसा करता है। premium commands visually free commands से अलग नहीं दिखते, इसलिए वे बार-बार click हो जाते हैं, और हर बार पूरे flow को रोकने वाला signup prompt dialog खुल जाता है
मेरे हिसाब से यह गंभीर UI error है
जो UI वजह बताए बिना सिर्फ कुछ actions को disable करता है, वह हमेशा गुस्सा दिलाता है
Nielsen की 10 usability heuristics अच्छी north star का काम करती हैं
https://www.nngroup.com/articles/ten-usability-heuristics/
NN page में information absorb करना कहीं आसान है, वह ज्यादा concise है, और page layout भी कहीं बेहतर है
दोनों लेखों में सुनने लायक information और direction है, लेकिन irony यह है कि original page ने वही पुराने समान font size और paragraph conventions अपनाए हैं जिन्हें NN page ने छोड़ दिया है
Hacker News भी इस information के कुछ हिस्से follow नहीं करता, यह frustrating है। मौजूदा comment edit करते समय "update" button दबाने के बाद feedback पर्याप्त स्पष्ट नहीं होता। शायद screen redraw होती है
ऐसी UI बंद होनी चाहिए जो जहां मैं अभी select करने वाला था, वहीं कुछ और डालकर गलत click करा देती है
यह ऊपर के कुछ rules का उल्लंघन हो सकता है या शायद कम किया जा सकने वाला problem हो, लेकिन व्यक्तिगत रूप से यह सच में पागल कर देने वाली चीज है और मैं इसे खास तौर पर गंभीर गलती मानता हूं
एक महत्वपूर्ण rule छूट गया है। कभी यह इतना obvious लगता था कि static information और controls को अलग करना चाहिए
साथ ही, जो controls लागू नहीं हो सकते उन्हें छिपाने के बजाय grey out करना चाहिए। इससे यूज़र सीखता है कि वह feature मौजूद है, कहां है, और उसे इस्तेमाल करने के लिए कौन-सी conditions पूरी करनी होंगी
इससे जुड़ी बात: ऐसे hide-and-seek UI पर कभी निर्भर नहीं होना चाहिए जिसमें कुछ केवल तब दिखता है जब यूज़र संयोग से cursor उस पर ले जाए। हमें काम पूरा करना है, Advent calendar explore नहीं करना
मैंने जो एक golden rule सीखा है, वह यह है कि interface render होने के बाद elements अप्रत्याशित रूप से move नहीं होने चाहिए
Google में यह समस्या खास तौर पर खराब है, जहां अंगूठा उठाने और screen tap करने के बीच button move हो जाता है, लेकिन ऐसा सिर्फ Google में नहीं है
अगर target touch होने से लगभग 0.25 second के भीतर नया दिखाई दिया है, तो touch event generate नहीं होना चाहिए। इंसानी reaction speed के हिसाब से कोई इतने जल्दी button aim करके press नहीं कर सकता
ये साफ तौर पर यूटोपिया के सुनहरे नियम हैं
ज़्यादातर लोग ऐसे नियमों के खिलाफ नहीं होंगे
फिर भी ज़्यादातर developers ने ऐसे interfaces के साथ काम किया होगा जो इन नियमों को अक्सर तोड़ते हैं। इसलिए नहीं कि वे समझे नहीं या चाहते नहीं थे, बल्कि इसलिए कि उस समय इसकी लागत बहुत ज़्यादा थी
उदाहरण के लिए, वापस किया जा सकना बहुत कठिन है, और यह तभी संभव है जब application के नीचे की data structure शुरू से ही इसे ध्यान में रखकर बनाई गई हो। error prevention भी वैसा ही है: असल में error क्या है, यह ठीक-ठीक जानना अपने-आप में कठिन और महंगा है, और user की भाषा में बेहतरीन feedback देना उससे भी कहीं ज़्यादा जटिल है