为什么良好的UI设计对某些开发人员来说如此困难?[关闭]


206

我们中的一些人在UI设计的柔和方面(尤其是我自己)很难过。“后端编码器”注定只能设计业务逻辑和数据层吗?我们可以做些什么来重新训练我们的大脑,使其在设计令人愉悦和有用的表示层时更加有效?

同事向我推荐了几本书,包括《网站的设计》,《不要让我思考》和《为什么软件糟透了》,但我想知道其他人为消除他们在这一领域的不足做了什么?


1
对于我自己(我也遇到同样的问题),我知道一个好的UI。而且我绝对知道一个让我烦恼的UI。但是我很难自己设计一个人。就像我在使用别人的UI不能在我自己的设计上使用时的批判性眼睛一样。
JMD

1
我讨厌“后端编码器”一词,并试图使其脱离标题
Chris Ballance

20
图形设计!= UI设计。前者是关于使事情变得漂亮。后者是关于使事物有用和可用。
Esko Luontola,2009年

2
+1 @Esko。通常,“漂亮”意味着完全不可用。但是如果谨慎处理,这两个CAN并存。
Dhaust

12
为什么对UI设计人员来说开发软件如此困难?
格雷格·赫尔曼

Answers:


360

让我直接说:

对此进行改进并非始于准则。它始于重新定义您对软件的看法。

大多数硬核开发人员对软件用户的同情几乎为零。他们不知道用户的想法,用户如何构建使用的软件模型以及通常如何使用计算机。

当专家与外行碰撞时,这是一个典型的问题:普通人怎么会这么愚蠢,不理解专家十年前的理解?

几乎所有经验丰富的开发人员都难以理解的第一个事实是:

普通人与您所拥有的软件概念截然不同。他们没有任何编程线索。没有。零。他们甚至不在乎。他们甚至认为他们不必关心。如果您强迫他们这样做,他们将删除您的程序。

对于开发人员来说,这真是令人难以置信。他为自己生产的软件感到骄傲。他喜欢每一个功能。他可以准确地告诉您其背后的代码是如何工作的。也许他甚至发明了一种令人难以置信的聪明算法,使它的工作速度比以前快了50%。

而且用户不在乎。

真是个傻瓜。

许多开发人员无法忍受普通用户的工作。他们因不存在的技术知识而感到沮丧。这就是为什么大多数开发人员都回避并认为用户一定是白痴的原因。

他们不是。

如果软件开发人员购买汽车,他希望汽车能够平稳运行。他通常并不关心轮胎压力,而机械压力对于使轮胎以这种方式运行很重要。在这里他不是专家。如果他买了没有微调的汽车,他会把车还给他,然后买一辆能满足他要求的汽车。

许多软件开发人员喜欢电影。做得好的电影激发了他们的想象力。但是他们不是制作电影,制作视觉效果或编写好的电影剧本的专家。大多数书呆子在表演上都非常非常非常糟糕,因为这全都表现出复杂的情绪,而很少涉及分析。如果开发者观看了不好的电影,他只是注意到整个电影是不好的。书呆子甚至建立了IMDB来收集有关好电影和坏电影的信息,以便他们知道要观看哪些电影和避免观看哪些电影。但是他们不是制作电影的专家。如果电影不好,他们将不会看电影(或不从BitTorrent下载);

因此可以归结为:忽视普通用户作为专家就是无知。因为在那些不是专家的领域(有那么多),他们希望其他领域的专家已经考虑过使用产品或服务的正常人。

您可以采取什么补救措施?您作为程序员的核心越强,对普通用户的思考就越开放。对你来说这将是陌生而无知的。你会想:我不能想象人们会永远使用一台计算机与该知识的缺乏。但是他们可以。对于每个UI元素,请考虑:是否有必要?它适合用户使用我的工具的概念吗?我如何让他理解?为此,请仔细阅读可用性,其中有很多不错的书。这也是整个科学领域。

嗯,在您说出来之前,是的,我是苹果迷;)


8
极好的评论!您已确定了软件设计中最基本的障碍之一。对于像我这样坚强的开发人员来说,这是一个难以理解的事实,但事实往往是这样。

12
+1。我建议阅读“囚犯正在庇护”,它详细介绍了用户/开发人员心态上的差异以及一些补救措施。
理查德·勒瓦瑟

9
+1老实说,任何不关心用户的开发者都是可怜的开发者!
加里·威洛比

7
非常有道理的观点,我认为这种心态也是许多开发人员管理的项目(例如,开源或您拥有什么)难以使用的部分原因,因为大多数开发人员为用户自己写,而不是为“真正的”最终用户写。
CloudyMusic

25
+1,这就是Linux仍无法为普通用户的桌面准备的原因。
布赖恩·安德森

215

UI设计很难

问题:

为什么大多数开发人员都很难进行UI设计?

尝试问反问题:

为什么对于大多数UI设计人员来说编程如此困难?

编码用户界面和设计用户界面需要不同的技能和不同的思维方式。UI设计对于大多数开发人员(而不是某些开发人员)来说很困难,就像编写代码对大多数设计人员(而不是某些设计师)而言很困难。

编码很难。设计也很困难。很少有人会做的很好。优秀的UI设计师很少编写代码。他们甚至可能都不知道如何,但他们仍然是优秀的设计师。那么,为什么优秀的开发人员会对UI设计负责?

对UI设计的更多了解将使您成为一名更好的开发人员,但这并不意味着您应该对UI设计负责。对于设计师而言,情况恰恰相反:知道如何编写代码将使他们成为更好的设计师,但这并不意味着他们应该负责对UI进行编码。

如何在UI设计上变得更好

对于希望在UI设计上变得更好的开发人员,我有3条基本建议:

  1. 将设计视为一项独立技能。编码和设计是分开的,但是相关。UI设计不是编码的子集。它需要不同的心态,知识库和技能组。有些人专注于UI设计。
  2. 了解设计。至少一点点。尝试从下面的长长的列表中学习一些设计概念和技术。如果您比较有野心,可以阅读一些书籍,参加会议,上课,获得学位。有很多学习设计的方法。Joel Spolky的关于UI设计的书对开发人员来说是不错的入门,但是它还有很多其他内容,这就是设计师参与其中的地方。
  3. 与设计师合作。好的设计师,如果可以的话。从事这项工作的人有不同的头衔。今天,最常见的标题是用户体验设计师(UXD),信息架构师(IA),交互设计师(ID)和可用性工程师。他们对设计的思考与对代码的思考一样。您可以从他们那里学到很多,他们也可以从您那里学到很多。但是可以与他们合作。在您的公司中找到具有这些技能的人。也许您需要雇用某个人。或参加一些会议,参加网络研讨会并在UXD / IA / ID世界中度过时间。

以下是一些您可以学习的特定知识。不要试图学一切。如果您了解以下所有内容,则可以称自己为交互设计师或信息架构师。从列表顶部附近的东西开始。专注于特定的概念和技能。然后向下移动并分支。如果您真的喜欢这些东西,可以考虑将其作为职业道路。许多开发人员都进入了管理,但是UX设计是另一种选择。

为什么UI设计很难

好的UI设计很困难,因为它涉及2种截然不同的技能:

  • 对机器有深刻的了解。该小组中的人们首先担心代码,其次是人们。他们具有深厚的技术知识和技能。我们称他们为开发人员,程序员,工程师等。
  • 对人员和设计的深刻理解:该组中的人员首先关注人员,然后考虑代码。他们对人们如何与信息,计算机以及他们周围的世界互动有深刻的了解。我们称他们为用户体验设计师,信息架构师,交互设计师,可用性工程师等等。

这是开发人员和设计人员这两个组之间的本质区别:

  • 开发人员可以使其工作。他们在您的TiVo,iPhone,您喜欢的网站等上实现了这些功能。他们确保该功能确实可以实现预期的功能。他们最优先考虑的是使其发挥作用。
  • 设计师让人们喜欢。他们弄清楚了如何与之交互,其外观和感觉。他们设计了使用应用程序,网站和设备的体验。他们的首要任务是让您爱上开发人员的作品。这就是用户体验的含义,与品牌体验不同。

此外,编程和设计需要不同的心态,而不仅仅是不同的知识和技能。好的UI设计需要两种思维方式,两种知识库以及两种技能组。而且要掌握其中任何一个,都需要花费数年时间。

开发人员应该期望很难找到UI设计,就像UI设计师应该期望很难编写代码一样。


8
这是最好的答案。伟大的链接顺便说一句!
伯纳德·伊吉里

UI设计的出色概述!我也观察到您对不同心态的看法。我同时进行UI设计和编程,最好一次只专注于其中之一。[...]
Esko Luontola,2009年

如果在编程时做出UI设计决策,您会认为最简单的实现方法是什么,这通常会导致UI设计不佳。而且,如果您在执行UI设计时考虑实现,则可以选择易于实现但对用户不利的UI设计模式。
Esko Luontola,2009年

2
为什么没有将此标记为最佳答案?似乎比Thorsten79的回答要好得多。
AbdullahC 2010年

1
希望我可以直接喜欢这个答案。:)
Dan J

70

真正帮助我改善设计的方法是招募一名开发人员,一名质量检查人员,项目经理或碰巧走过去并让他们尝试特定小部件或屏幕的任何人。

当您第一次看到别人使用您的软件时,您会意识到,这很神奇


我已经尝试了很多方法,发现它非常有效。有时候,我有一个非技术性的朋友使用它来查看是什么导致他们在尝试使用时感到疼痛。
克里斯·巴伦斯

这与我采用的方法相同。
Ed S.

可以将这种方法称为“可用性测试”吗?;)是的,这是您应该在之前,之中和之后采用的方法。
Ates Goral

这几乎是我的确切答案。质量检查和技术支持都很棒。开发人员会沉迷于UI设计,进行迭代并让其他人经常对其进行测试。
比尔K

7
我相信它被称为“走廊可用性测试”
凯文,

32

归根结底,这实际上与移情有关–您可以让自己陷入用户的视线中吗?

当然,有帮助的一件事是“吃自己的狗粮”-自己以真实用户的身份使用应用程序,然后看到令人讨厌的东西。

另一个好主意是找到一种方法来观看使用您的应用程序的真实用户,这可能像使用单向镜,屏幕视频捕获,用户上的摄像机等的可用性实验室那样复杂,或者可能很简单作为下一个碰巧走下大厅的人的原型纸。

如果其他所有方法都失败了,请记住,UI过于简单总比过于复杂总是好。很容易说“哦,我知道如何解决这个问题,我只添加一个复选框,以便用户可以决定他们喜欢的模式”。很快,您的用户界面太复杂了。选择默认模式,并将首选项设置为高级配置选项。或者只是将其省略。

如果您对设计有很多了解,您很容易陷入阴影和圆角等问题。那不是重要的东西。简单性和可发现性是重要的内容。


说得好。通常,增加灵活性的尝试只会导致混乱。更简单==更好。
SquareCog

如果用户位于地球的另一端,并且处于您从未体验过的文化中,您是否可以将自己放在用户的鞋子上?国际化是可靠的UI设计中的主要考虑因素。不要假设每个人都住在美国。

绝对; 实际上,我目前的项目实际上是针对整个星球的用户(基本上是在我所在的美国以外的每个国家/地区)。毫无疑问,它使同理心变得更加困难,而认真而有力地尝试它变得更加重要。
雅各布·马蒂森

另外,我还补充说,一旦让真正的用户来研究,绝大多数可用性问题就非常明显。是的,会有一些特定于文化的细微之处,但是您可以使用下一个走在大厅里的家伙来进行重大改进。
雅各布·马蒂森

+1,只是因为我自己不能+100!我将补充说,使用原本打算用于非常不同的应用程序的经验可以帮助您成长为UI开发人员。仅使用Visual Studio之类的工具或其他开发工具会妨碍此功能……
BQ。

26

与流行的说法相反,UI设计实际上没有软性方面,至少没有比设计一个好的后端所需的多。

考虑以下; 好的后端设计基于任何优秀开发人员都熟悉的相当扎实的原理和元素:

  • 低耦合

  • 高凝聚力

  • 建筑图案

  • 行业最佳实践

  • 等等

好的后端设计通常是通过许多交互作用而产生的,其中基于在测试或实际使用过程中获得的可测量的反馈,逐渐改善了初始蓝图。有时,您需要对后端的较小方面进行原型设计,并进行单独测试等。

好的UI设计基于以下合理的原则:

  • 能见度

  • 负担能力

  • 反馈

  • 公差

  • 简单

  • 一致性

  • 结构体

UI也是通过测试和试验,通过迭代而诞生的,但不是通过编译器+自动测试服诞生的,而是人们。与后端类似,还有业界最佳的实践,测量和评估技术,从用户模型,系统图像,设计者模型,结构模型,功能模型等方面考虑UI和设定目标的方式。

设计UI所需的技能与设计后端有很大的不同,因此,如果不先学习一些知识,不要指望能够做到好的UI。但是,这两个活动的共同点是设计过程。我相信,只要可以花一些时间学习如何设计好的软件,任何人都可以设计好的UI。

我建议参加“人机交互”课程,例如,可以查看MIT和Yale网站上的在线资料:

理解和使用中的结构模型与功能模型

Thorsten79在早期的出色文章中提出了软件开发专家与用户以及他们对软件的理解有何不同的话题。人类学习专家区分功能性和结构性心理模型。找到通往您朋友家的方法可以很好地说明两者之间的区别:

  • 第一种方法包括一组详细的说明:从高速公路的第一个出口离开,然后在100码后左转等。这是功能模型的示例:实现特定目标所需的具体步骤清单。功能模型易于使用,只需要直接执行就不需要太多思考。显然,为简单起见要付出代价:这可能不是最有效的路线,任何异常情况(例如,交通改道)都容易导致完全失败。

  • 处理任务的另一种方法是建立结构化的心理模型。在我们的示例中,这将是一张地图,该地图传达有关“任务对象”内部结构的大量信息。通过了解我们和朋友房屋的地图和相对位置,我们可以推断出功能模型(路线)。显然,这需要付出更多的努力,但是尽管存在可能的偏差,但是完成任务的方式却更加可靠。

通过UI传递功能或结构模型(例如,向导与高级模式)之间的选择并不像从Thorsten79的帖子中看到的那样直接。高级用户和经常使用的用户可能会更喜欢结构模型,而偶然的或不太熟悉的用户则可以使用。

Google地图就是一个很好的例子:它们既包含功能模型又包含结构模型,因此许多卫星导航仪也是如此。

问题的另一个方面是,通过UI呈现的结构模型必须不映射到软件的结构,而自然地映射到手头的用户任务或涉及的任务对象的结构。

这里的困难在于,许多开发人员将拥有一个良好的软件内部结构模型,但是只有软件旨在协助的用户任务的功能模型。要构建良好的UI,需要了解任务/任务对象的结构并将UI映射到该结构。

无论如何,我仍然不建议足够强烈地参加正式的HCI课程。涉及很多东西,例如启发式方法,从格式塔生理学中得出的原理,人类学习的方式等。


麻省理工学院开放式课件(MIT OCW)链接+1 :)这些讲座笔记非常宝贵
PlagueHammer 2009年

没错,用户可以自己成为软件专家,当有人通过“漂亮”的用户界面为他们找到一种更快的开发方法时,他们就会喜欢它。例如,这就是所有关键快捷方式的所在地。可用性是一个非常有趣的主题!
Thorsten79 2009年

25

我建议您首先以与现在相同的方式来处理所有UI,而不要着眼于可用性和内容。

替代文字http://www.stricken.org/uploaded_images/WordToolbars-718376.jpg

现在考虑一下:

设计师知道他实现了完美,而不是什么都没有添加,而是什么都没有带走。—圣艾修伯里

并将其应用到您的设计中。


这就是为什么我非常喜欢Office 2007的原因!
理查德·埃夫

如果有人想知道我是从哪个坟墓挖来的那句话,那我就从文明4中听​​到了。我不知道作者是谁,但是他确信,地狱写的UI可能比文字设计的更好。
Hoffmann

爱因斯坦(A. Einstein)也有类似的好话:“让一切尽可能简单,但不要简单。” 我发现这些想法也适用于UI设计:www.presentationzen.com。...和+1
Pyry Jahkola,2009年

Saint-Exupery不仅仅是飞行员和飞机设计师。+1引用他。他的孩子们的书(“小王子”)非常值得一读,但是我在这里变得没意思了。
David Thornley,2009年

5
您应该已经选择了打印视图...现在看不到标尺。
Mussnoon

16

许多开发人员认为,因为他们可以编写代码,所以可以完成所有工作。设计界面是一种完全不同的技能,当我上大学时根本没有教过它。这不仅仅是自然而然的事情。

另一本好书是唐纳德·诺曼(Donald Norman)设计的《日常事物》


谢谢,“日常设计思考”在我的亚马逊愿望清单上
克里斯·巴伦斯

+1。“日常事物的设计”也在推荐阅读的“编码恐怖”列表中(对于开发人员来说是好书)。最近读完它,也可以强烈推荐它。
屯门

我目前正在阅读“日常事物的设计”,它的确非常好,但是正如在另一个答案的评论中所提到的那样,艾伦·库珀的“囚犯正在庇护所”恰好解决了这个话题。作为开发人员,这本书“改变了生活”!
Stuart Helwig 2009年

我的烦恼:许多开发人员(以及设计师和其他人员)认为,因为我可以编码,所以无法设计用户界面。我对Photoshop不太了解,但我认为我对哪些有效和哪些无效有很好的了解。(《日常事物的设计》是我的第一本UI圣经。)
Barry Brown,

14

设计和美学之间存在巨大差异,而且它们经常被混淆。

精美的用户界面需要许多艺术技能,或者至少是美学技能,包括我自己在内,很多人都无法生产。不幸的是,这还不够,并且不能使UI可用,正如我们在许多基于Flash的重量级API中所看到的那样。

产生可用的用户界面需要了解人类与计算机的交互方式,一些心理学问题(例如菲特定律,希克定律)以及其他主题。很少有CS程序为此训练。据我所知,只有极少数的开发人员会选择用户测试书而不是JUnit书,等等。

我们中的许多人也是“核心程序员”,倾向于将UI视为基础,而不是可能导致或破坏我们的项目成功的因素。

此外,大多数UI开发经验都非常令人沮丧。我们可以使用像旧VB这样的玩具GUI生成器,并且不得不处理难看的粘合代码,或者我们使用使我们无休止地沮丧的API,例如尝试在Swing中整理布局。


“我们要么使用像旧的VB这样的玩具GUI生成器,就不得不处理丑陋的粘合代码,要么我们使用使我们无穷无尽的API,例如尝试在Swing中整理布局。” 您确实总结了我在GUI构建方面的经验。如果我可以添加:“或者疯狂的DOM和CSS组合”
Hoffmann

我确定每个人都对Totally Gridbag熟悉吗?“ madbean.com/anim/totallygridbag
Uri 2009年

12

转至Slashdot,并阅读有关Apple的任何文章的评论。您会发现很多人谈论Apple产品没什么特别之处,并将iPod和iPhone的成功归功于试图变得时髦或时髦的人们。他们通常会浏览功能列表,并指出他们在MP3播放器或智能手机之前没有执行任何操作。

还有一些人喜欢iPod和iPhone,因为它们可以简单,轻松地完成用户想要的操作,而无需参考手册。这些界面就像界面变得直观,令人难忘和可发现一样直观。我不像以前的版本那样喜欢MacOSX上的UI,我认为它们已经放弃了一些有用的功能来支持炫目的效果,但是iPod和iPhone就是出色设计的例子。

如果您处于第一个阵营,那么您就不会以普通人的方式思考,因此您可能会创建不良的用户界面,因为您无法从良好的界面中分辨出来。这并不意味着您就没有希望,而是您必须明确学习良好的界面设计原则以及如何识别良好的UI(就像拥有Asperger的人可能需要明确学习社交技能一样)。显然,仅仅拥有良好的用户界面并不意味着您可以创造一个。例如,我对文学的欣赏似乎并没有扩展到(目前)撰写可发表故事的能力。

因此,请尝试对良好的UI设计产生一种感觉。这不仅限于软件。唐·诺曼(Don Norman)的《日常事物的设计》是一部经典著作,此外还有其他书籍。获取成功的UI设计示例,并进行充分的尝试,以体会其中的不同之处。认识到您可能必须学习一种新的思考事物的方法,并乐在其中。


+1的建议《
日常事物

+1是一个很好的答案。我认为这表明您仍在1票(现在是2票)上徘徊;那些符合您的描述的人可能不会认为他们愿意,或者只是忽略了这个主意:-(
mghie

这是一个笼统的声明。并非每一个反苹果对Slashdot的评论都是对其UI的批评,或者是对UI缺乏理解的验证。苹果拥有良好的用户界面,许多竞争对手也是如此。
伯纳德·伊吉里

另一个想法:苹果并不适合所有人;苹果不适合所有人。例如,它没有提供CLI所提供的强大功能。
J. Polfer

2
我个人认为Apple产品的使用非常不直观。我想我不是唯一一个沮丧的人,他们的第一个iPod每次我开始慢跑时都会开始随机播放歌曲,或者为什么iPhone屏幕会不断反转。我认为事情应该只发生在直接,明确的用户操作上。
Lotus Notes 2010年

10

我坚持的主要经验法则是永远不要尝试同时做这两项。如果我正在处理后端代码,那么我将结束该过程,休息一下,然后打开我的UI帽子。如果您在编写代码时尝试使用它,则会以错误的思维方式进行处理,最终会导致一些可怕的界面。

我认为既可以成为优秀的后端开发人员,又可以成为出色的UI设计师,您只需要做,就该主题进行一些阅读和研究(从Miller的#7到Nielsen的所有档案),然后制作确定你知道为什么 UI设计至关重要。

我认为这不是需要创新的情况,而是像后端开发一样,这是需要学习的非常有条理,非常结构化的东西。人们使用UI变得“创意”,从而创造了一些最大的可用性怪异……我的意思是,首先看一下100%Flash网站...

编辑:克鲁格的书真的很好...请认真阅读,尤其是当您要为Web设计时。


而这是什么库克的书的标题
defau1t

@refhat在顶部文章中突出显示了链接,因此当时我没有链接它,但它就是这个: librarything.com/work/12322
James B

8

这件事情是由很多原因导致的。

(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专家也没有技术,因此开发人员也没有机会。他认为头脑清楚。但是在纸上甚至还不清楚,更不用说软件实现了。

为此,我必须使用自己的手工技术。


7

我尝试与特定于设计的网站和文本保持联系。我还找到了出色的罗宾·威廉姆斯(Robin Williams)书《非设计师的设计书》在这些研究中,非常有趣。

我相信设计和可用性是软件工程中非常重要的部分,我们应该更多地学习它,并停止提供不应被设计的借口。

每个人都可以偶尔成为设计师,因为每个人都可以成为程序员。


我不同意每个人都可以成为程序员。交易的某些方面无法教授,您可以破解它,也可以不做(没有双关语。)
克里斯·巴伦斯

2
我的意思是,有时候,这并不意味着他会成为一个程序员,或者永远成为一个程序员。
Edwin Jarvis,2009年

7

在进行UI设计时,以下是我要牢记的一些事情(到目前为止还不完整):

  • 交流模型。UI是一种叙述,向用户解释了心理模型。该模型可能是业务对象,一组关系以及您所拥有的。视觉突出,空间放置和工作流程排序均在将此模型传达给用户方面发挥了作用。例如,某种列表与另一种列表意味着不同的事物,以及列表中内容与模型其余部分的关系。总的来说,我发现最好确保一次仅传达一种模型。程序员经常尝试在同一UI空间中交流多个模型或多个模型的一部分。

  • 一致性。重用流行的UI隐喻很有帮助。内部一致性也非常重要。

  • 任务分组。用户不必不必在屏幕上一直移动鼠标就可以验证或完成相关的命令序列。模态对话框和弹出菜单在该区域可能特别糟糕。

  • 了解你的听众。如果您的用户将一遍又一遍地进行相同的活动,那么他们将迅速成为那些任务的高级用户,并且会因尝试降低初始进入门槛而感到沮丧。如果您的用户不经常进行许多不同类型的活动,则最好确保UI始终握住他们的手。


通过了解您的听众,您可以带出一个好点 ……我也喜欢“您不是您的用户”(普拉特)和“了解您的用户”。(普拉特)这一点并不能得到足够的重视
克里斯·巴伦斯


5

我发现UI设计中最好的工具是观看首次用户使用该软件的尝试。记笔记,问他们一些问题。切勿指导他们或尝试解释软件的工作方式。这是UI的工作(以及写得很好的文档)。

我们在所有项目中始终采用这种方法。观看用户以前所未有的方式处理软件总是很有趣的。

UI设计为什么这么难?好吧,因为开发人员和用户从未见过面。


完全同意,但对于开发人员而言,很有可能会应用扎实的基本UI原则。
nailitdown

Solid Basic UI原理并非在每个国家/地区都适用。我们在许多地区部署软件,并且针对全球不同地区的UI设计存在巨大差异。尝试将您的以美国为中心的应用发送到中国……

5

duffymo只是提醒我原因:许多程序员认为“ * Design” ==“ Art”。

好的UI设计绝对不是艺术。它遵循可靠的原则,如果您有时间进行研究,则可以使用数据进行备份。

我认为所有程序员需要做的就是花时间学习这些原理。我认为,无论是在代码中还是在布局中,尽我们所能应用最佳实践是我们的本性。我们需要做的就是使自己意识到我们工作的最佳实践是什么。


我认为您不能完全不重视美学。也许丑陋的UI可以和漂亮的UI一样有用,但这并不是UI的全部用途。毕竟,UI是程序的外观,就像书的封面一样:人们更有可能选择具有漂亮UI的程序。
蒂洪·耶维斯

绝对,美学很重要,但这是图形设计,而不是UI设计。
nailitdown

5

为了提高UI设计水平我做了什么?
注意啦!

就像您每隔多长时间在新闻或电子公交标志上看到图表,而您想知道“他们如何获取这些数据?他们是使用原始sql还是使用LINQ?(或在此处插入您自己的普通怪胎好奇心)。

您需要使用各种视觉元素来开始执行此操作。

但是就像学习一种新语言一样,如果您不真正投入使用它,那么您将永远不会学习它。

另一个答案中我写道:

学习看看,真正看一下周围的世界。为什么我喜欢该UI但讨厌这个UI?为什么在这家餐厅的菜单中很难找到面条?哇,我什至在读单词之前就知道那个标志的意思。怎么会这样 那本书的封面看起来怎么这么错?学习花点时间思考为什么对各种视觉元素做出反应时将其应用于工作。


+1禅宗关于学习看和思考的建议。很少有人质疑眼神。
PlagueHammer

5

但是,您这样做(上面有一些要点),一旦我接受没有任何直观的东西,它确实对我有所帮助。

我可以听到争论在不断抬头……所以让我解释一下。

直觉的:基于一种无意识的方法或感觉来使用某人的感觉是对的或正确的。

如果(如卡尔·萨根(Carl Sagan)所假设的那样),您接受了您无法理解与您所遇到的事物完全不同的事物,那么,如果您从未远程使用过类似的东西,您怎么可能“知道”如何使用它呢?

想一想:孩子们尝试打开门并不是因为他们“知道”门把手的工作原理,而是因为他们看到别人这样做了……通常他们会朝错误的方向转动旋钮,或者拉得太早。他们必须学习门把手的工作原理。然后,将这些知识应用到不同但相似的实例中:打开窗户,打开抽屉,打开几乎所有带有把手的大型物件。

即使对于我们而言直观的简单事物,对来自其他文化的人们也根本不直观。如果有人将手臂伸出他们的面前,并在保持手臂不动的同时在手腕上上下挥动手....他们是否让您离开?可能,除非您在日本。在那里,该手势可能意味着“来到这里”。那么谁是对的?当然,两者都是在各自的背景下进行的。但是,如果您同时旅行,则需要同时了解两者。UI设计。

我试图找到我的项目的潜在用户已经“熟悉”的东西,然后围绕它们构建UI:以用户为中心的设计。

看看苹果的iPhone。即使您讨厌它,您也必须尊重其中的思想。完美吗?当然不是。随着时间的流逝,物体的“直觉”可能会增长甚至完全消失。

例如。大多数人都知道一条黑色的条带,顶部和底部有两排孔,看起来像是一条胶片条……还是他们?

询问您平均9岁或10岁的孩子,他们的想法是什么。您可能会惊讶于现在有多少孩子很难将其标识为电影带,即使它仍然可以代表好莱坞或其他与电影(电影)相关的东西。在过去的20年中,大多数电影都是以数字方式拍摄的。而且,我们什么时候最后一次拿着任何种类的电影,照片或电影?

因此,对我而言,这一切都归结为:了解您的受众并不断研究以跟上“直觉”的趋势和变化,以您的主要用户为目标,并尝试不做会惩罚那些缺乏经验的人而偏向于高级用户或放慢高级用户的速度,以掌握新手。

最终,每个程序都需要用户方面的一定程度的培训才能使用它。多少培训和针对哪个用户级别是需要制定的决策的一部分。

根据目标用户作为人类,计算机用户或学生等的过往经验水平,有些事情或多或少是熟悉的。

我只是拍摄钟形曲线中最胖的部分,然后尝试吸引尽可能多的人,但是意识到我永远不会取悦所有人...。


4

我知道Microsoft与他们自己的指南相当不一致,但是我发现阅读他们的Windows设计指南确实对我有所帮助。我在这里的网站上有一份副本,只需向下滚动一下《 Vista UX指南》。它在颜色,间距,布局等方面帮助了我。


+1阅读平台的设计指南绝对是一个应该做的事情(并发现微软多久打破自己的规则;)
Oskar Duveborn

另外,请阅读Apple的《人机界面指南》。他们具有更多的基本知识和原则。这使您了解什么是通用的以及什么是平台专用的
Stephan Eggermont,09年

当您使用它时,也请阅读GNOME HIG。在这三个之间,开始变得显而易见的是,这仅仅是单个平台的特定内容,而总体上似乎是个好主意。
mghie

其中大多数是基于IBM的,但是现在已经过时了。例如,标准的剪切和粘贴命令是Shift + Del和Shift + Ins(它们仍然有效,顺便说一句)。
西蒙·布坎

4

我认为主要问题与不同的才能或技能集无关。主要问题在于,作为开发人员,您对应用程序的功能及其执行方式了解得太多,并且会从拥有该知识的人的角度自动设计UI。

而用户通常一开始对应用程序一无所知,并且永远不需要学习任何有关其内部工作的知识。

不使用您所拥有的知识非常困难,几乎是不可能的,这就是为什么不应该由开发该UI的人来设计UI的原因。


4

“从屏幕的两面进行设计”提出了一个非常简单却深刻的原因,说明了程序员为什么很难进行UI设计:训练了程序员以极端情况为依据进行思考,而UI设计者则经过了以常见情况或用法进行思考的训练。

因此,如果其中一个的默认转换与另一个完全相反,那么从一个世界转到另一个世界无疑是困难的。


3

要说程序设计吸引了UI设计,那是错了。问题的关键是大多数开发人员获得的正式培训对该技术进行了深入的研究。人机交互不是一个简单的话题。通过提供一个简单的单行语句,您无法意识到“噢,如果我用x代替y,用户将更有效地使用此应用程序”,这不是我可以“介意”的事情。

这是因为缺少UI设计的一部分。人脑。为了了解如何设计UI,您必须了解人脑如何与机器交互。我在明尼苏达大学学习了一门非常出色的课程,由心理学教授教授。它被命名为“人机交互”。这说明了UI设计如此复杂的许多原因。

由于心理学基于相关性而非因果关系,因此您永远无法证明UI设计方法在任何给定情况下都将始终有效。您可以关联许多用户会发现某个特定的UI设计具有吸引力或效率高,但是您不能证明它总是可以推广。

此外,许多人似乎错过了UI设计的两个部分。具有美学吸引力和功能性工作流程。如果您追求100%的美学吸引力,那么肯定有人会喜欢您的产品。我非常怀疑美学是否会减少用户的挫败感。

关于此主题和课程,有几本好书(例如,Bill Buxton的“ 素描用户体验 ”和“野外认知”) Edwin Hutchins)。许多大学都有关于人机交互的研究生课程。

但是,该问题的总体答案在于如何向个人教授计算机科学。都是基于数学,基于逻辑的,而不是基于用户体验的。为此,您需要的不只是一般的4年计算机科学学位(除非您的4年计算机科学学位在心理学方面是次要的,并且在“人机交互”中得到强调)。


我不同意:计算机本质上是基于数学和逻辑的。任何计算机编程教学都必须基于数学和逻辑。
保罗·内森

1
是的,你是正确的保罗。计算机是数学和逻辑。UI设计虽然涉及人为因素,但历史证明,它远没有基于数学和逻辑。
jwendl

它们并没有那么多基于数学和逻辑的东西,而是它们背后的数学和逻辑要复杂得多,大部分都超出了当今的水平。就是说,我敢打赌,好的UI设计在一定程度上都是基于几何的。
蒂洪·耶维斯

2

让我们扭转您的问题-

“ ui设计师”注定只能设计信息架构和表示层吗?他们是否可以采取一些措施来训练他们的大脑,使其在设计令人愉悦和高效的系统层时更加有效?

似乎他们的“ ui设计师”将不得不采取完全不同的观点-他们必须从盒子的内部向外看。而不是从盒子外面看。

艾伦·库珀(Alan Cooper)的“囚犯正在庇护中”的观点是,我们不能成功地同时考虑这两种观点-我们可以学会很好地戴一顶帽子,但不能只换帽子。


2

我认为这是因为良好的UI是不合逻辑的。好的用户界面很直观。

软件开发人员通常在“直觉”上做得不好


妙点,需要大脑的另一
克里斯·巴伦斯

用户界面没有直观的东西。类似于我已经知道的,但是有些不同。
2009年

没有什么是“直觉的”,一切都是学到的。直觉是商人为了使程序员汗水而抛出的一个单词。
伯纳德·伊吉里

像真正的程序员一样说话....那才是问题的根源。
Gregor Brandt

@gbrandt Intuitive是“熟悉”和“简单”的某种组合。尽管如此,这仍然是一个目标。关于可用性的困难之处在于,对某些人来说直观的东西不一定对其他人来说直观。@Stephan是对的,“直觉”不是很难的“事实”,它是相对于用户而言的。
TM。

2

一个有用的框架是在设计交流过程时积极考虑您在做什么。实际上,您的界面是用户必须用来告诉计算机做什么的语言。这导致需要考虑以下几点:

  1. 用户是否已经说过这种语言?使用高度特质的界面就像用以前从未说过的语言进行交流一样。因此,如果您的界面必须完全是特质的,那么最好以最简单的术语和很少的干扰来自我介绍。另一方面,如果您的界面使用了用户习惯的习惯用语,那么他们将从一开始就获得信心。
  2. 交流的敌人是噪音。听觉噪声会干扰口头交流;视觉噪音会干扰视觉交流。您可以从界面上消除的噪音越多,与之进行的交流就越容易。
  3. 就像在人类对话中一样,这通常不是您所说的,而是您所说的。大多数软件的通信方式在某种程度上是不礼貌的,如果是人的话,会使人感到震惊。如果您问某人一个问题,然后他们坐在那里盯着您看了几分钟,拒绝以其他任何方式回答,然后您回答,您会感觉如何?进度条和自动焦点选择等许多界面元素都具有礼貌的基本功能。问自己,如何使用户的一天更加愉快。

真的,这是有点难以确定什么程序员认为界面交互的作为,其他比沟通的过程,但也许问题是,它不会看作是在所有东西。


2

已经有很多很好的评论,所以我不确定我可以补充很多。但是...

  • 开发人员为何期望能够设计出良好的UI?
  • 他在该领域接受了多少培训?
  • 他读了几本书?
  • 他多少年来设计了几件东西?
  • 他有机会看到它的用户的反应吗?

我们不希望随机的“ Joe the Plumber”能够编写良好的代码。那么,为什么我们期望随机的“ Joe the程序员”来设计好的UI呢?

同情心会有所帮助。分开UI设计和编程会有帮助。可用性测试有帮助。

但是,UI设计是一种必须像其他任何东西一样学习和实践的技术。


正是我在想的是,“开发人员”与“用户界面设计人员”有何关系?
豪尔赫·科尔多瓦

@Jorge现在与它有关:许多开发人员必须为其雇主设计UI,即使他们不是设计师。在我公司,我们没有任何艺术家。我们的应用看起来还不错。在这种情况下,您必须有小组讨论和相关内容,以确保设计不错。
TM。

@TM:设计不一定是UI / UX设计。当然它看起来不错,但这并不意味着它很好
凯文·佩诺

2

出于同样的原因,开发人员不(必须)擅长UI设计;他们不擅长于编织。这很困难,需要实践,并且让某人向您展示如何做也没有什么坏处。

大多数开发人员(包括我在内)都开始“设计” UI,因为这是编写软件的必要部分。除非开发人员竭尽所能,否则他/她将不会。


2

要改善,只需环顾现有站点即可。除了已经建议的书之外,您可能还想看看罗宾·威廉姆斯(Robin Williams)的出色著作《非设计师的设计书》(经过消毒的Amazon链接

通过查看The Zen Garden的各种作品,了解视觉设计的可能性。

UI设计绝对是一门艺术,就像C语言中的指针一样,有些人了解它,有些人却没有。

但是至少我们可以为他们的尝试感到轻笑。顺便说一句,感谢OK / Cancel制作了有趣的漫画,也感谢Joel将其放入您的书“ The Best Software Writing I”(经过消毒的Amazon链接)中。


2

用户界面不是事后可以应用的东西,例如薄薄的油漆。它是一开始就需要存在的,并且要基于真实的研究。当然,有大量的可用性研究可用。它不仅需要一开始就存在,它还需要成为您首先要开发该软件的原因的核心:世界上存在一些差距,存在一些问题,需要进行开发更实用,更高效。

软件本身并不是存在的。存在大量软件的原因是为了人。甚至在不了解为什么有人需要它的情况下尝试提出一种新的软件想法是绝对荒谬的。然而,这种情况一直都在发生。

在编写一行代码之前,您应该浏览该界面的书面版本,并在真实的人中对其进行测试。这有点奇怪和愚蠢,它最适合孩子们,并且有人娱乐性地扮演“计算机”的角色。

界面需要利用我们的自然认知能力。穴居人将如何使用您的程序?例如,我们已经发展为非常擅长跟踪运动对象。这就是为什么使用物理模拟的界面(例如iphone)比瞬时发生变化的界面效果更好的原因。

我们擅长某些抽象,但不擅长其他抽象。作为程序员,我们接受过心理体操和后空翻训练,以了解一些最奇怪的抽象。例如,我们了解到,一系列奥术文字可以表示并转化为金属盘上的电磁状态模式,当精心设计的设备遇到该模式时,会导致一系列不可见事件发生,这些事件在电子设备上以光速发生电路,这些事件可以指导产生有用的结果。这是必须理解的非常不自然的事情。请理解,尽管它对我们有一个非常合理的解释,但对外界来说,似乎是我们在书写难以理解的咒语,以召唤看不见的有情人来做我们的竞标。

普通人类可以理解的抽象是诸如地图,图表和符号之类的东西。当心符号,因为符号是非常脆弱的人类概念,需要有意识的精神努力才能解码,直到学习符号为止。

使用符号的技巧是,符号与它所代表的事物之间必须有明确的关系。它所代表的事物必须是名词,在这种情况下,符号看起来应与其所代表的事物非常相似。如果符号代表一个更抽象的概念,则必须先进行解释。请参阅msword或photoshop工具栏中的难以理解的未标记图标,以及它们代表的抽象概念。必须知道,Photoshop中的裁剪工具图标表示“裁剪工具”。必须理解CROP甚至意味着什么。这些是正确使用该软件的先决条件。提出了一个重要的观点,提防ASSUMED知识。

我们只有在4岁左右才能够理解地图的能力。我认为一旦黑猩猩在6或7岁左右就具有理解地图的能力时,我就会在某个地方读书。

guis之所以如此成功,是因为它们将计算机的大部分文本界面的外观改变了,将计算机概念映射到类似于物理位置的界面。图形用户界面在可用性方面失败的地方就是它们不再类似于您在现实生活中看到的东西。计算机中发生着看不见的,不可预测的,难以理解的事情,与您在物理世界中看到的任何事物都不相似。其中有些是必要的,因为仅制作一个现实模拟器是没有意义的-想法是节省工作,因此必须有一点魔术。但是,这种魔术必须是有道理的,并且必须以抽象为人类很容易理解的基础。当我们的抽象开始深入,分层时,并与即将发生的故障不符。换句话说,该接口不能用作基础软件的良好映射。

有很多书。我已经读过并且可以理解的两个是唐纳德·诺曼(Donaldaldman)的“日常事物的设计”和杰夫·拉斯金(Jef Raskin)的“人机界面”。

我也推荐一门心理学课程。“日常事物的设计”谈到了这一点。许多接口由于开发人员对心理学的“民间理解”而崩溃。这类似于“民间物理学”。运动中的物体保持运动对大多数人没有任何意义。“您必须不断推动它才能保持运动!” 认为是物理新手。用户测试对大多数开发人员而言没有意义。“您可以问用户他们想要什么,那应该足够了!” 认为是心理学新手。

我建议由Philip Zimbardo主持的PBS纪录片系列“发现心理学”。如果失败,请尝试找到一本好的物理教科书。昂贵的一种。不是您在Borders中发现的纸浆小说自助废话,而是只有在大学图书馆中才能找到的厚重的精装书。这是必要的基础。没有它,您可以进行良好的设计,但是您只能对所发生的事情有直观的了解。读一些好书会给你一个很好的视角。


2

如果您读了《为什么软件糟透了》这本书,您会看到普拉特的答案,这很简单:

  1. 开发人员更喜欢控制而不是用户友好
  2. 一般人更喜欢用户友好而不是控制

但是,您的问题的另一个答案是“为什么牙科对某些开发人员如此困难?” -UI设计最好由UI设计师完成。

http://dotmad.net/blog/2007/11/david-platt-on-why-software-sucks/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.