我们中的一些人只是在UI设计的软方面遇到了困难(尤其是我自己)。“后端编码器”注定只设计业务逻辑和数据层吗?我们是否可以做些什么来重新训练我们的大脑,使其更有效地设计出令人愉悦和有用的演示层?
同事们给我推荐了《网站设计》、《不要让我思考》、《为什么软件很糟糕》等几本书,但我想知道其他人在这方面做了什么来弥补他们的不足?
我们中的一些人只是在UI设计的软方面遇到了困难(尤其是我自己)。“后端编码器”注定只设计业务逻辑和数据层吗?我们是否可以做些什么来重新训练我们的大脑,使其更有效地设计出令人愉悦和有用的演示层?
同事们给我推荐了《网站设计》、《不要让我思考》、《为什么软件很糟糕》等几本书,但我想知道其他人在这方面做了什么来弥补他们的不足?
当前回答
程序员通常不擅长UI设计。有些设计师专门从事可用性和UI设计,当涉及到开发商业软件/网站/娱乐等时,他们应该受到尊重。
大多数程序员所面临的问题是,他们无法超越自己的鼻子,意识到什么能让事情更容易理解和消化。
最好的UI设计原则之一是始终将界面设计为简单且易于目标用户访问。
一个简单的例子就是电梯。一般来说,你按下按钮来打开/关闭门,以及穿越建筑物的楼层。你能想象如果你有旋钮和开关,你必须从一楼到二楼吗?如果你必须向后滑动一个面板来访问三个按键开关,你必须以特定的顺序转动三个彩色按键才能到达特定的楼层,那会怎么样呢?
你很快就会发现一个糟糕的界面是多么的困难,而一个好的界面是多么的简单和可用。
其他回答
你提到了《别让我思考》这本书。我强烈推荐你阅读这篇文章。
说程序在UI设计方面很糟糕是没有抓住重点。问题的关键在于,大多数开发人员所接受的正式培训深入了技术。人机交互不是一个简单的话题。这不是我可以通过提供简单的一行语句让您意识到“哦,如果我使用x而不是y,用户将更有效地使用这个应用程序”来“思想融合”的东西。
这是因为你忽略了UI设计的一部分。人类的大脑。为了理解如何设计UI,你必须理解人的思想如何与机器交互。我在明尼苏达大学上过一门关于这个话题的很棒的课程,是一位心理学教授教的。它被命名为“人机交互”。这描述了UI设计如此复杂的许多原因。
因为心理学是基于相关性而不是因果关系,你永远无法证明UI设计方法总是适用于任何给定的情况。你可以认为许多用户会发现某个特定的UI设计很吸引人或高效,但你不能证明它总是具有普遍性。
此外,UI设计中有两个部分似乎被许多人忽略了,那就是美学吸引力和功能工作流。如果你追求100%的美感,人们肯定会买你的产品。但我非常怀疑美学能否减少用户的挫败感。
有几本关于这个主题的好书和课程可供选择(如Bill Buxton的《素描用户体验》和Edwin Hutchins的《野外认知》)。许多大学都开设了人机交互的研究生课程。
这个问题的总体答案在于如何教授个人计算机科学。这一切都是基于数学和逻辑,而不是基于用户体验。要做到这一点,你需要的不仅仅是一个普通的4年计算机科学学位(除非你的4年计算机科学学位副修心理学,并强调人机交互)。
我认为我们不能设计ui的原因是因为我们是完美主义者,不能决定什么时候足够好才是足够好。我知道我个人无法忍受UI设计,因为我总是怀疑自己,说:“不,那还不够好。”
真正帮助我改进设计的是找一个开发人员,QA人员、项目经理或任何碰巧路过的人,让他们尝试特定的小部件或屏幕。
当你看到别人第一次使用你的软件时,你会惊奇地发现
与流行的神话相反,在UI设计中实际上没有软方面,至少不需要设计一个好的后端。
考虑以下几点;优秀的后端设计是基于任何优秀开发者都熟悉的原则和元素:
低耦合 高内聚 架构模式 行业最佳实践 等
好的后端设计通常是通过一系列交互产生的,基于测试或实际使用期间获得的可测量反馈,初始蓝图会逐渐改进。有时候,你需要对后端较小的方面进行原型设计,然后单独进行测试等等。
优秀的UI设计是基于以下合理的原则:
可见性 功能可见性 反馈 宽容 简单 一致性 结构
UI也是通过测试和试验,通过迭代诞生的,但不是用编译器+自动化测试套装,而是人。与后端类似,有行业最佳实践、测量和评估技术、考虑UI的方法,并根据用户模型、系统图像、设计师模型、结构模型、功能模型等设定目标。
设计UI所需的技能与设计后端是完全不同的,因此不要指望不先学习就能做出好的UI。然而,这两种活动的共同之处是设计过程。我相信只要花点时间学习,任何能设计好软件的人都有能力设计好UI。
我建议你选一门人机交互的课程,比如在MIT和耶鲁的网站上找一些在线资料:
麻省理工学院用户界面设计与实现课程
结构模型和功能模型的理解和使用
Thorsten79之前的一篇出色的文章提出了软件开发专家和用户之间的话题,以及他们对软件的理解是如何不同的。人类学习专家区分了功能思维模式和结构思维模式。找到去朋友家的路是两者区别的一个很好的例子:
First approach includes a set of detailed instructions: take the first exit of the motorway, then after 100 yards turn left etc. This is an example of functional model: list of concrete steps necessary to achieve a certain goal. Functional models are easy to use, they do not require much thinking just a straight forward execution. Obviously there is a penalty for the simplicity: it might not be the most efficient route and any any exceptional situation (i.e. a traffic diversion) can easilly lead to a complete failure. A different way to cope with the task is to build a structural mental model. In our example that would be a map that conveyes a lot of information about the internal structure of the "task object". From understanding the map and relative locations of our and friend's house we can deduct the functional model (the route). Obviously it's requires more effort, but much more reliable way of completing the task in spite of the possible deviations.
通过UI传递功能模型或结构模型(例如,向导模式还是高级模式)之间的选择并不像Thorsten79的帖子中看起来那样简单。高级和频繁的用户可能更喜欢结构模型,而偶尔或缺乏经验的用户-功能。
谷歌地图就是一个很好的例子:它们包括功能和结构模型,许多卫星导航也是如此。
问题的另一个方面是,通过UI呈现的结构模型不能映射到软件的结构,而应该自然地映射到手头的用户任务或涉及的任务对象的结构。
这里的困难在于,许多开发人员对他们的软件内部有一个良好的结构模型,但只有软件旨在协助的用户任务的功能模型。要构建好的UI,你需要理解任务/任务对象结构,并将UI映射到该结构。
无论如何,我仍然强烈建议参加一个正式的HCI课程。这涉及到很多东西,比如启发式,源自格式塔心理学的原则,人类的学习方式等等。