我们中的一些人在UI设计的柔和方面(尤其是我自己)很难过。“后端编码器”注定只能设计业务逻辑和数据层吗?我们可以做些什么来重新训练我们的大脑,使其在设计令人愉悦和有用的表示层时更加有效?
同事向我推荐了几本书,包括《网站的设计》,《不要让我思考》和《为什么软件糟透了》,但我想知道其他人为消除他们在这一领域的不足做了什么?
我们中的一些人在UI设计的柔和方面(尤其是我自己)很难过。“后端编码器”注定只能设计业务逻辑和数据层吗?我们可以做些什么来重新训练我们的大脑,使其在设计令人愉悦和有用的表示层时更加有效?
同事向我推荐了几本书,包括《网站的设计》,《不要让我思考》和《为什么软件糟透了》,但我想知道其他人为消除他们在这一领域的不足做了什么?
Answers:
让我直接说:
对此进行改进并非始于准则。它始于重新定义您对软件的看法。
大多数硬核开发人员对软件用户的同情几乎为零。他们不知道用户的想法,用户如何构建使用的软件模型以及通常如何使用计算机。
当专家与外行碰撞时,这是一个典型的问题:普通人怎么会这么愚蠢,不理解专家十年前的理解?
几乎所有经验丰富的开发人员都难以理解的第一个事实是:
普通人与您所拥有的软件概念截然不同。他们没有任何编程线索。没有。零。他们甚至不在乎。他们甚至认为他们不必关心。如果您强迫他们这样做,他们将删除您的程序。
对于开发人员来说,这真是令人难以置信。他为自己生产的软件感到骄傲。他喜欢每一个功能。他可以准确地告诉您其背后的代码是如何工作的。也许他甚至发明了一种令人难以置信的聪明算法,使它的工作速度比以前快了50%。
而且用户不在乎。
真是个傻瓜。
许多开发人员无法忍受普通用户的工作。他们因不存在的技术知识而感到沮丧。这就是为什么大多数开发人员都回避并认为用户一定是白痴的原因。
他们不是。
如果软件开发人员购买汽车,他希望汽车能够平稳运行。他通常并不关心轮胎压力,而机械压力对于使轮胎以这种方式运行很重要。在这里他不是专家。如果他买了没有微调的汽车,他会把车还给他,然后买一辆能满足他要求的汽车。
许多软件开发人员喜欢电影。做得好的电影激发了他们的想象力。但是他们不是制作电影,制作视觉效果或编写好的电影剧本的专家。大多数书呆子在表演上都非常非常非常糟糕,因为这全都表现出复杂的情绪,而很少涉及分析。如果开发者观看了不好的电影,他只是注意到整个电影是不好的。书呆子甚至建立了IMDB来收集有关好电影和坏电影的信息,以便他们知道要观看哪些电影和避免观看哪些电影。但是他们不是制作电影的专家。如果电影不好,他们将不会看电影(或不从BitTorrent下载);
因此可以归结为:忽视普通用户作为专家就是无知。因为在那些不是专家的领域(有那么多),他们希望其他领域的专家已经考虑过使用产品或服务的正常人。
您可以采取什么补救措施?您作为程序员的核心越强,对普通用户的思考就越开放。对你来说这将是陌生而无知的。你会想:我不能想象人们会永远使用一台计算机与该知识的缺乏。但是他们可以。对于每个UI元素,请考虑:是否有必要?它适合用户使用我的工具的概念吗?我如何让他理解?为此,请仔细阅读可用性,其中有很多不错的书。这也是整个科学领域。
嗯,在您说出来之前,是的,我是苹果迷;)
问题:
为什么大多数开发人员都很难进行UI设计?
尝试问反问题:
为什么对于大多数UI设计人员来说编程如此困难?
编码用户界面和设计用户界面需要不同的技能和不同的思维方式。UI设计对于大多数开发人员(而不是某些开发人员)来说很困难,就像编写代码对大多数设计人员(而不是某些设计师)而言很困难。
编码很难。设计也很困难。很少有人会做的很好。优秀的UI设计师很少编写代码。他们甚至可能都不知道如何,但他们仍然是优秀的设计师。那么,为什么优秀的开发人员会对UI设计负责?
对UI设计的更多了解将使您成为一名更好的开发人员,但这并不意味着您应该对UI设计负责。对于设计师而言,情况恰恰相反:知道如何编写代码将使他们成为更好的设计师,但这并不意味着他们应该负责对UI进行编码。
对于希望在UI设计上变得更好的开发人员,我有3条基本建议:
以下是一些您可以学习的特定知识。不要试图学一切。如果您了解以下所有内容,则可以称自己为交互设计师或信息架构师。从列表顶部附近的东西开始。专注于特定的概念和技能。然后向下移动并分支。如果您真的喜欢这些东西,可以考虑将其作为职业道路。许多开发人员都进入了管理,但是UX设计是另一种选择。
好的UI设计很困难,因为它涉及2种截然不同的技能:
这是开发人员和设计人员这两个组之间的本质区别:
此外,编程和设计需要不同的心态,而不仅仅是不同的知识和技能。好的UI设计需要两种思维方式,两种知识库以及两种技能组。而且要掌握其中任何一个,都需要花费数年时间。
开发人员应该期望很难找到UI设计,就像UI设计师应该期望很难编写代码一样。
真正帮助我改善设计的方法是招募一名开发人员,一名质量检查人员,项目经理或碰巧走过去并让他们尝试特定小部件或屏幕的任何人。
当您第一次看到别人使用您的软件时,您会意识到,这很神奇
归根结底,这实际上与移情有关–您可以让自己陷入用户的视线中吗?
当然,有帮助的一件事是“吃自己的狗粮”-自己以真实用户的身份使用应用程序,然后看到令人讨厌的东西。
另一个好主意是找到一种方法来观看使用您的应用程序的真实用户,这可能像使用单向镜,屏幕视频捕获,用户上的摄像机等的可用性实验室那样复杂,或者可能很简单作为下一个碰巧走下大厅的人的原型纸。
如果其他所有方法都失败了,请记住,UI过于简单总比过于复杂总是好。很容易说“哦,我知道如何解决这个问题,我只添加一个复选框,以便用户可以决定他们喜欢的模式”。很快,您的用户界面太复杂了。选择默认模式,并将首选项设置为高级配置选项。或者只是将其省略。
如果您对设计有很多了解,您很容易陷入阴影和圆角等问题。那不是重要的东西。简单性和可发现性是重要的内容。
与流行的说法相反,UI设计实际上没有软性方面,至少没有比设计一个好的后端所需的多。
考虑以下; 好的后端设计基于任何优秀开发人员都熟悉的相当扎实的原理和元素:
低耦合
高凝聚力
建筑图案
行业最佳实践
等等
好的后端设计通常是通过许多交互作用而产生的,其中基于在测试或实际使用过程中获得的可测量的反馈,逐渐改善了初始蓝图。有时,您需要对后端的较小方面进行原型设计,并进行单独测试等。
好的UI设计基于以下合理的原则:
能见度
负担能力
反馈
公差
简单
一致性
结构体
UI也是通过测试和试验,通过迭代而诞生的,但不是通过编译器+自动测试服诞生的,而是人们。与后端类似,还有业界最佳的实践,测量和评估技术,从用户模型,系统图像,设计者模型,结构模型,功能模型等方面考虑UI和设定目标的方式。
设计UI所需的技能与设计后端有很大的不同,因此,如果不先学习一些知识,不要指望能够做到好的UI。但是,这两个活动的共同点是设计过程。我相信,只要可以花一些时间学习如何设计好的软件,任何人都可以设计好的UI。
我建议参加“人机交互”课程,例如,可以查看MIT和Yale网站上的在线资料:
理解和使用中的结构模型与功能模型
Thorsten79在早期的出色文章中提出了软件开发专家与用户以及他们对软件的理解有何不同的话题。人类学习专家区分功能性和结构性心理模型。找到通往您朋友家的方法可以很好地说明两者之间的区别:
第一种方法包括一组详细的说明:从高速公路的第一个出口离开,然后在100码后左转等。这是功能模型的示例:实现特定目标所需的具体步骤清单。功能模型易于使用,只需要直接执行就不需要太多思考。显然,为简单起见要付出代价:这可能不是最有效的路线,任何异常情况(例如,交通改道)都容易导致完全失败。
处理任务的另一种方法是建立结构化的心理模型。在我们的示例中,这将是一张地图,该地图传达有关“任务对象”内部结构的大量信息。通过了解我们和朋友房屋的地图和相对位置,我们可以推断出功能模型(路线)。显然,这需要付出更多的努力,但是尽管存在可能的偏差,但是完成任务的方式却更加可靠。
通过UI传递功能或结构模型(例如,向导与高级模式)之间的选择并不像从Thorsten79的帖子中看到的那样直接。高级用户和经常使用的用户可能会更喜欢结构模型,而偶然的或不太熟悉的用户则可以使用。
Google地图就是一个很好的例子:它们既包含功能模型又包含结构模型,因此许多卫星导航仪也是如此。
问题的另一个方面是,通过UI呈现的结构模型必须不映射到软件的结构,而自然地映射到手头的用户任务或涉及的任务对象的结构。
这里的困难在于,许多开发人员将拥有一个良好的软件内部结构模型,但是只有软件旨在协助的用户任务的功能模型。要构建良好的UI,需要了解任务/任务对象的结构并将UI映射到该结构。
无论如何,我仍然不建议足够强烈地参加正式的HCI课程。涉及很多东西,例如启发式方法,从格式塔生理学中得出的原理,人类学习的方式等。
我建议您首先以与现在相同的方式来处理所有UI,而不要着眼于可用性和内容。
替代文字http://www.stricken.org/uploaded_images/WordToolbars-718376.jpg
现在考虑一下:
设计师知道他实现了完美,而不是什么都没有添加,而是什么都没有带走。—圣艾修伯里
并将其应用到您的设计中。
许多开发人员认为,因为他们可以编写代码,所以可以完成所有工作。设计界面是一种完全不同的技能,当我上大学时根本没有教过它。这不仅仅是自然而然的事情。
另一本好书是唐纳德·诺曼(Donald Norman)设计的《日常事物》。
设计和美学之间存在巨大差异,而且它们经常被混淆。
精美的用户界面需要许多艺术技能,或者至少是美学技能,包括我自己在内,很多人都无法生产。不幸的是,这还不够,并且不能使UI可用,正如我们在许多基于Flash的重量级API中所看到的那样。
产生可用的用户界面需要了解人类与计算机的交互方式,一些心理学问题(例如菲特定律,希克定律)以及其他主题。很少有CS程序为此训练。据我所知,只有极少数的开发人员会选择用户测试书而不是JUnit书,等等。
我们中的许多人也是“核心程序员”,倾向于将UI视为基础,而不是可能导致或破坏我们的项目成功的因素。
此外,大多数UI开发经验都非常令人沮丧。我们可以使用像旧VB这样的玩具GUI生成器,并且不得不处理难看的粘合代码,或者我们使用使我们无休止地沮丧的API,例如尝试在Swing中整理布局。
转至Slashdot,并阅读有关Apple的任何文章的评论。您会发现很多人谈论Apple产品没什么特别之处,并将iPod和iPhone的成功归功于试图变得时髦或时髦的人们。他们通常会浏览功能列表,并指出他们在MP3播放器或智能手机之前没有执行任何操作。
还有一些人喜欢iPod和iPhone,因为它们可以简单,轻松地完成用户想要的操作,而无需参考手册。这些界面就像界面变得直观,令人难忘和可发现一样直观。我不像以前的版本那样喜欢MacOSX上的UI,我认为它们已经放弃了一些有用的功能来支持炫目的效果,但是iPod和iPhone就是出色设计的例子。
如果您处于第一个阵营,那么您就不会以普通人的方式思考,因此您可能会创建不良的用户界面,因为您无法从良好的界面中分辨出来。这并不意味着您就没有希望,而是您必须明确学习良好的界面设计原则以及如何识别良好的UI(就像拥有Asperger的人可能需要明确学习社交技能一样)。显然,仅仅拥有良好的用户界面并不意味着您可以创造一个。例如,我对文学的欣赏似乎并没有扩展到(目前)撰写可发表故事的能力。
因此,请尝试对良好的UI设计产生一种感觉。这不仅限于软件。唐·诺曼(Don Norman)的《日常事物的设计》是一部经典著作,此外还有其他书籍。获取成功的UI设计示例,并进行充分的尝试,以体会其中的不同之处。认识到您可能必须学习一种新的思考事物的方法,并乐在其中。
我坚持的主要经验法则是永远不要尝试同时做这两项。如果我正在处理后端代码,那么我将结束该过程,休息一下,然后打开我的UI帽子。如果您在编写代码时尝试使用它,则会以错误的思维方式进行处理,最终会导致一些可怕的界面。
我认为既可以成为优秀的后端开发人员,又可以成为出色的UI设计师,您只需要做,就该主题进行一些阅读和研究(从Miller的#7到Nielsen的所有档案),然后制作确定你知道为什么 UI设计至关重要。
我认为这不是需要创新的情况,而是像后端开发一样,这是需要学习的非常有条理,非常结构化的东西。人们使用UI变得“创意”,从而创造了一些最大的可用性怪异……我的意思是,首先看一下100%Flash网站...
编辑:克鲁格的书真的很好...请认真阅读,尤其是当您要为Web设计时。
这件事情是由很多原因导致的。
(1)开发人员无法从用户的角度看待事物。这是通常的怀疑:缺乏同情心。但这通常是不正确的,因为开发人员并不像人们认为的那样陌生。
(2)另一个更常见的原因是,开发人员与自己的东西如此亲近,并且在自己的东西上呆了很长时间,却没有意识到自己的东西可能对其他人不太熟悉(比直觉更好的术语) 。
(3)另一个原因是开发人员缺乏技术。
我的大要求:阅读任何UI,人机交互设计,原型书籍。例如,设计显而易见的东西:Web应用程序设计的常识方法,别让我思考:Web可用性的常识方法,无论如何设计时刻。
他们如何讨论任务流程?他们如何描述决策点?也就是说,在任何用例中,至少都有3条路径:成功,失败/异常,替代。
因此,从A点开始,您可以转到A.1,A.2,A.3。从点A.1,您可以转到A.1.1,A.1.2,A.1.3,依此类推。
他们如何显示这种深入的任务流?他们没有。他们只是掩饰它。
由于即使UI专家也没有技术,因此开发人员也没有机会。他认为头脑清楚。但是在纸上甚至还不清楚,更不用说软件实现了。
为此,我必须使用自己的手工技术。
我尝试与特定于设计的网站和文本保持联系。我还找到了出色的罗宾·威廉姆斯(Robin Williams)书《非设计师的设计书》在这些研究中,非常有趣。
我相信设计和可用性是软件工程中非常重要的部分,我们应该更多地学习它,并停止提供不应被设计的借口。
每个人都可以偶尔成为设计师,因为每个人都可以成为程序员。
在进行UI设计时,以下是我要牢记的一些事情(到目前为止还不完整):
交流模型。UI是一种叙述,向用户解释了心理模型。该模型可能是业务对象,一组关系以及您所拥有的。视觉突出,空间放置和工作流程排序均在将此模型传达给用户方面发挥了作用。例如,某种列表与另一种列表意味着不同的事物,以及列表中内容与模型其余部分的关系。总的来说,我发现最好确保一次仅传达一种模型。程序员经常尝试在同一UI空间中交流多个模型或多个模型的一部分。
一致性。重用流行的UI隐喻很有帮助。内部一致性也非常重要。
任务分组。用户不必不必在屏幕上一直移动鼠标就可以验证或完成相关的命令序列。模态对话框和弹出菜单在该区域可能特别糟糕。
了解你的听众。如果您的用户将一遍又一遍地进行相同的活动,那么他们将迅速成为那些任务的高级用户,并且会因尝试降低初始进入门槛而感到沮丧。如果您的用户不经常进行许多不同类型的活动,则最好确保UI始终握住他们的手。
我发现UI设计中最好的工具是观看首次用户使用该软件的尝试。记笔记,问他们一些问题。切勿指导他们或尝试解释软件的工作方式。这是UI的工作(以及写得很好的文档)。
我们在所有项目中始终采用这种方法。观看用户以前所未有的方式处理软件总是很有趣的。
UI设计为什么这么难?好吧,因为开发人员和用户从未见过面。
duffymo只是提醒我原因:许多程序员认为“ * Design” ==“ Art”。
好的UI设计绝对不是艺术。它遵循可靠的原则,如果您有时间进行研究,则可以使用数据进行备份。
我认为所有程序员需要做的就是花时间学习这些原理。我认为,无论是在代码中还是在布局中,尽我们所能应用最佳实践是我们的本性。我们需要做的就是使自己意识到我们工作的最佳实践是什么。
为了提高UI设计水平我做了什么?
注意啦!
就像您每隔多长时间在新闻或电子公交标志上看到图表,而您想知道“他们如何获取这些数据?他们是使用原始sql还是使用LINQ?(或在此处插入您自己的普通怪胎好奇心)。
您需要使用各种视觉元素来开始执行此操作。
但是就像学习一种新语言一样,如果您不真正投入使用它,那么您将永远不会学习它。
从另一个答案中我写道:
学习看看,真正看一下周围的世界。为什么我喜欢该UI但讨厌这个UI?为什么在这家餐厅的菜单中很难找到面条?哇,我什至在读单词之前就知道那个标志的意思。怎么会这样 那本书的封面看起来怎么这么错?学习花点时间思考为什么对各种视觉元素做出反应时将其应用于工作。
但是,您这样做(上面有一些要点),一旦我接受没有任何直观的东西,它确实对我有所帮助。
我可以听到争论在不断抬头……所以让我解释一下。
直觉的:基于一种无意识的方法或感觉来使用某人的感觉是对的或正确的。
如果(如卡尔·萨根(Carl Sagan)所假设的那样),您接受了您无法理解与您所遇到的事物完全不同的事物,那么,如果您从未远程使用过类似的东西,您怎么可能“知道”如何使用它呢?
想一想:孩子们尝试打开门并不是因为他们“知道”门把手的工作原理,而是因为他们看到别人这样做了……通常他们会朝错误的方向转动旋钮,或者拉得太早。他们必须学习门把手的工作原理。然后,将这些知识应用到不同但相似的实例中:打开窗户,打开抽屉,打开几乎所有带有把手的大型物件。
即使对于我们而言直观的简单事物,对来自其他文化的人们也根本不直观。如果有人将手臂伸出他们的面前,并在保持手臂不动的同时在手腕上上下挥动手....他们是否让您离开?可能,除非您在日本。在那里,该手势可能意味着“来到这里”。那么谁是对的?当然,两者都是在各自的背景下进行的。但是,如果您同时旅行,则需要同时了解两者。UI设计。
我试图找到我的项目的潜在用户已经“熟悉”的东西,然后围绕它们构建UI:以用户为中心的设计。
看看苹果的iPhone。即使您讨厌它,您也必须尊重其中的思想。完美吗?当然不是。随着时间的流逝,物体的“直觉”可能会增长甚至完全消失。
例如。大多数人都知道一条黑色的条带,顶部和底部有两排孔,看起来像是一条胶片条……还是他们?
询问您平均9岁或10岁的孩子,他们的想法是什么。您可能会惊讶于现在有多少孩子很难将其标识为电影带,即使它仍然可以代表好莱坞或其他与电影(电影)相关的东西。在过去的20年中,大多数电影都是以数字方式拍摄的。而且,我们什么时候最后一次拿着任何种类的电影,照片或电影?
因此,对我而言,这一切都归结为:了解您的受众并不断研究以跟上“直觉”的趋势和变化,以您的主要用户为目标,并尝试不做会惩罚那些缺乏经验的人而偏向于高级用户或放慢高级用户的速度,以掌握新手。
最终,每个程序都需要用户方面的一定程度的培训才能使用它。多少培训和针对哪个用户级别是需要制定的决策的一部分。
根据目标用户作为人类,计算机用户或学生等的过往经验水平,有些事情或多或少是熟悉的。
我只是拍摄钟形曲线中最胖的部分,然后尝试吸引尽可能多的人,但是意识到我永远不会取悦所有人...。
我知道Microsoft与他们自己的指南相当不一致,但是我发现阅读他们的Windows设计指南确实对我有所帮助。我在这里的网站上有一份副本,只需向下滚动一下《 Vista UX指南》。它在颜色,间距,布局等方面帮助了我。
我认为主要问题与不同的才能或技能集无关。主要问题在于,作为开发人员,您对应用程序的功能及其执行方式了解得太多,并且会从拥有该知识的人的角度自动设计UI。
而用户通常一开始对应用程序一无所知,并且永远不需要学习任何有关其内部工作的知识。
不使用您所拥有的知识非常困难,几乎是不可能的,这就是为什么不应该由开发该UI的人来设计UI的原因。
要说程序设计吸引了UI设计,那是错了。问题的关键是大多数开发人员获得的正式培训对该技术进行了深入的研究。人机交互不是一个简单的话题。通过提供一个简单的单行语句,您无法意识到“噢,如果我用x代替y,用户将更有效地使用此应用程序”,这不是我可以“介意”的事情。
这是因为缺少UI设计的一部分。人脑。为了了解如何设计UI,您必须了解人脑如何与机器交互。我在明尼苏达大学学习了一门非常出色的课程,由心理学教授教授。它被命名为“人机交互”。这说明了UI设计如此复杂的许多原因。
由于心理学基于相关性而非因果关系,因此您永远无法证明UI设计方法在任何给定情况下都将始终有效。您可以关联许多用户会发现某个特定的UI设计具有吸引力或效率高,但是您不能证明它总是可以推广。
此外,许多人似乎错过了UI设计的两个部分。具有美学吸引力和功能性工作流程。如果您追求100%的美学吸引力,那么肯定有人会喜欢您的产品。我非常怀疑美学是否会减少用户的挫败感。
关于此主题和课程,有几本好书(例如,Bill Buxton的“ 素描用户体验 ”和“野外认知”) Edwin Hutchins)。许多大学都有关于人机交互的研究生课程。
但是,该问题的总体答案在于如何向个人教授计算机科学。都是基于数学,基于逻辑的,而不是基于用户体验的。为此,您需要的不只是一般的4年计算机科学学位(除非您的4年计算机科学学位在心理学方面是次要的,并且在“人机交互”中得到强调)。
让我们扭转您的问题-
“ ui设计师”注定只能设计信息架构和表示层吗?他们是否可以采取一些措施来训练他们的大脑,使其在设计令人愉悦和高效的系统层时更加有效?
似乎他们的“ ui设计师”将不得不采取完全不同的观点-他们必须从盒子的内部向外看。而不是从盒子外面看。
艾伦·库珀(Alan Cooper)的“囚犯正在庇护中”的观点是,我们不能成功地同时考虑这两种观点-我们可以学会很好地戴一顶帽子,但不能只换帽子。
我认为这是因为良好的UI是不合逻辑的。好的用户界面很直观。
软件开发人员通常在“直觉”上做得不好
一个有用的框架是在设计交流过程时积极考虑您在做什么。实际上,您的界面是用户必须用来告诉计算机做什么的语言。这导致需要考虑以下几点:
真的,这是有点难以确定什么程序员认为界面交互的作为,其他比沟通的过程,但也许问题是,它不会看作是在所有东西。
已经有很多很好的评论,所以我不确定我可以补充很多。但是...
我们不希望随机的“ Joe the Plumber”能够编写良好的代码。那么,为什么我们期望随机的“ Joe the程序员”来设计好的UI呢?
同情心会有所帮助。分开UI设计和编程会有帮助。可用性测试有帮助。
但是,UI设计是一种必须像其他任何东西一样学习和实践的技术。
要改善,只需环顾现有站点即可。除了已经建议的书之外,您可能还想看看罗宾·威廉姆斯(Robin Williams)的出色著作《非设计师的设计书》(经过消毒的Amazon链接)
通过查看The Zen Garden的各种作品,了解视觉设计的可能性。
UI设计绝对是一门艺术,就像C语言中的指针一样,有些人了解它,有些人却没有。
但是至少我们可以为他们的尝试感到轻笑。顺便说一句,感谢OK / Cancel制作了有趣的漫画,也感谢Joel将其放入您的书“ The Best Software Writing I”(经过消毒的Amazon链接)中。
用户界面不是事后可以应用的东西,例如薄薄的油漆。它是一开始就需要存在的,并且要基于真实的研究。当然,有大量的可用性研究可用。它不仅需要一开始就存在,它还需要成为您首先要开发该软件的原因的核心:世界上存在一些差距,存在一些问题,需要进行开发更实用,更高效。
软件本身并不是存在的。存在大量软件的原因是为了人。甚至在不了解为什么有人需要它的情况下尝试提出一种新的软件想法是绝对荒谬的。然而,这种情况一直都在发生。
在编写一行代码之前,您应该浏览该界面的书面版本,并在真实的人中对其进行测试。这有点奇怪和愚蠢,它最适合孩子们,并且有人娱乐性地扮演“计算机”的角色。
界面需要利用我们的自然认知能力。穴居人将如何使用您的程序?例如,我们已经发展为非常擅长跟踪运动对象。这就是为什么使用物理模拟的界面(例如iphone)比瞬时发生变化的界面效果更好的原因。
我们擅长某些抽象,但不擅长其他抽象。作为程序员,我们接受过心理体操和后空翻训练,以了解一些最奇怪的抽象。例如,我们了解到,一系列奥术文字可以表示并转化为金属盘上的电磁状态模式,当精心设计的设备遇到该模式时,会导致一系列不可见事件发生,这些事件在电子设备上以光速发生电路,这些事件可以指导产生有用的结果。这是必须理解的非常不自然的事情。请理解,尽管它对我们有一个非常合理的解释,但对外界来说,似乎是我们在书写难以理解的咒语,以召唤看不见的有情人来做我们的竞标。
普通人类可以理解的抽象是诸如地图,图表和符号之类的东西。当心符号,因为符号是非常脆弱的人类概念,需要有意识的精神努力才能解码,直到学习符号为止。
使用符号的技巧是,符号与它所代表的事物之间必须有明确的关系。它所代表的事物必须是名词,在这种情况下,符号看起来应与其所代表的事物非常相似。如果符号代表一个更抽象的概念,则必须先进行解释。请参阅msword或photoshop工具栏中的难以理解的未标记图标,以及它们代表的抽象概念。必须知道,Photoshop中的裁剪工具图标表示“裁剪工具”。必须理解CROP甚至意味着什么。这些是正确使用该软件的先决条件。提出了一个重要的观点,提防ASSUMED知识。
我们只有在4岁左右才能够理解地图的能力。我认为一旦黑猩猩在6或7岁左右就具有理解地图的能力时,我就会在某个地方读书。
guis之所以如此成功,是因为它们将计算机的大部分文本界面的外观改变了,将计算机概念映射到类似于物理位置的界面。图形用户界面在可用性方面失败的地方就是它们不再类似于您在现实生活中看到的东西。计算机中发生着看不见的,不可预测的,难以理解的事情,与您在物理世界中看到的任何事物都不相似。其中有些是必要的,因为仅制作一个现实模拟器是没有意义的-想法是节省工作,因此必须有一点魔术。但是,这种魔术必须是有道理的,并且必须以抽象为人类很容易理解的基础。当我们的抽象开始深入,分层时,并与即将发生的故障不符。换句话说,该接口不能用作基础软件的良好映射。
有很多书。我已经读过并且可以理解的两个是唐纳德·诺曼(Donaldaldman)的“日常事物的设计”和杰夫·拉斯金(Jef Raskin)的“人机界面”。
我也推荐一门心理学课程。“日常事物的设计”谈到了这一点。许多接口由于开发人员对心理学的“民间理解”而崩溃。这类似于“民间物理学”。运动中的物体保持运动对大多数人没有任何意义。“您必须不断推动它才能保持运动!” 认为是物理新手。用户测试对大多数开发人员而言没有意义。“您可以问用户他们想要什么,那应该足够了!” 认为是心理学新手。
我建议由Philip Zimbardo主持的PBS纪录片系列“发现心理学”。如果失败,请尝试找到一本好的物理教科书。昂贵的一种。不是您在Borders中发现的纸浆小说自助废话,而是只有在大学图书馆中才能找到的厚重的精装书。这是必要的基础。没有它,您可以进行良好的设计,但是您只能对所发生的事情有直观的了解。读一些好书会给你一个很好的视角。
如果您读了《为什么软件糟透了》这本书,您会看到普拉特的答案,这很简单:
但是,您的问题的另一个答案是“为什么牙科对某些开发人员如此困难?” -UI设计最好由UI设计师完成。
http://dotmad.net/blog/2007/11/david-platt-on-why-software-sucks/