【问题标题】:Why is good UI design so hard for some Developers? [closed]为什么好的 UI 设计对一些开发人员来说如此困难? [关闭]
【发布时间】:2009-02-05 00:54:16
【问题描述】:

我们中的一些人只是在 UI 设计的较软方面遇到了困难(尤其是我自己)。 “后端编码员”是否注定只设计业务逻辑和数据层?我们可以做些什么来重新训练我们的大脑,以便更有效地设计令人愉悦且有用的表示层?

同事向我推荐了几本书,包括网站设计别让我思考为什么软件很烂,但我想知道其他人做了什么来消除他们在这方面的不足?

【问题讨论】:

  • 对于我自己(我也遇到同样的问题),当我使用一个好的 UI 时,我知道它。而且我肯定知道一个让我烦恼的 UI。但是我很难自己设计一个。这就像我在使用别人的 UI 时所拥有的批判眼光不适用于我自己的设计。
  • 我讨厌“后端编码器”这个词,并试图将其排除在标题之外
  • 平面设计!= UI 设计。前者是关于让事情变得漂亮。后者是关于使事物变得有用和可用。
  • +1 @Esko。通常“漂亮”意味着完全无法使用。但如果处理得当,这两者可以共存。
  • 为什么 UI 设计师开发软件这么难?

标签: user-interface


【解决方案1】:

我直接说吧:

改进这一点并不是从指导方针开始的。首先是重新定义您对软件的看法。

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

专家与外行发生冲突是一个典型的问题:一个正常人怎么会愚蠢不了解专家十年前的理解?

对于几乎所有有经验的开发人员来说,首先要承认的事实之一是难以置信地难以掌握:

普通人对软件的概念与你有很大不同。他们对编程一无所知。没有。零。他们甚至不在乎。他们甚至认为他们不必在意。如果你强迫他们这样做,他们会删除你的程序。

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

而且用户不在乎。

真是个白痴。

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

他们不是。

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

许多软件开发人员都喜欢电影。精彩的电影,激发他们的想象力。但他们不是制作电影、制作视觉效果或编写好电影剧本的专家。大多数书呆子在表演方面都非常、非常、非常糟糕,因为这完全是为了展示复杂的情绪,而很少涉及分析。如果开发人员看了一部烂片,他只会注意到它整体上很烂。书呆子们甚至建立了 IMDB 来收集关于好电影和坏电影的信息,这样他们就知道该看哪些电影,避免哪些电影。但他们不是制作电影的专家。如果电影不好,他们就不会去看电影(或者不从 BitTorrent 下载;)

因此归结为:将普通用户作为专家回避是无知。因为在那些(而且有很多)他们不是专家的领域中,他们期望其他领域的专家能够已经考虑过使用他们的产品或服务的普通人。

你能做些什么来补救它?作为一名程序员,你越是铁杆,你对普通用户思维的开放就越少。这对你来说将是陌生和无知的。你会想:我无法想象人们怎么会曾经在缺乏知识的情况下使用计算机。但他们可以。对于每个 UI 元素,请考虑:是否有必要?它是否符合用户对我的工具的概念?我怎样才能让他明白?请为此阅读可用性,有很多好书。这也是一个完整的科学领域。

啊,在你说之前,是的,我是苹果的粉丝;)

【讨论】:

  • 优秀的评论!您已经解决了软件设计中最基本的障碍之一。对于顽固的开发人员(比如我)来说,这是一个难以接受的事实,但事实往往如此。
  • +1。我推荐阅读“The Inmates are Running the Asylum”,它详细介绍了用户/开发者心态的差异以及一些补救措施。
  • +1 老实说,任何不关心用户的开发者都是糟糕的开发者!
  • 非常有效的观点,我认为这种心态也是许多开发人员运行的项目(例如开源或what-have-you)难以使用的部分原因-- 总的来说,大多数开发人员是作为用户为自己编写的,而不是为“真正的”最终用户编写的。
  • +1 这就是 Linux 还没有为普通用户桌面做好准备的原因。
【解决方案2】:

UI 设计困难

问题:

为什么 UI 设计对大多数开发者来说如此困难?

尝试反问:

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

编写 UI 和设计 UI 需要不同的技能和不同的思维方式。 UI 设计对于 大多数 开发人员来说是困难的,而不是 一些 开发人员,就像编写代码对于 大多数 设计师来说是困难的,而不是 一些 em>设计师。

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

了解更多有关 UI 设计的知识将使您成为更好的开发人员,但这并不意味着您应该负责 UI 设计。设计师则相反:知道如何编写代码将使他们成为更好的设计师,但这并不意味着他们应该负责编写 UI。

如何在 UI 设计方面做得更好

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

  1. 将设计视为一项单独的技能。编码和设计是分开但相关的。 UI 设计不是编码的子集。它需要不同的思维方式、知识基础和技能组。有些人专注于 UI 设计。
  2. 了解设计。至少一点点。尝试从下面的长列表中学习一些设计概念和技术。如果你更有野心,读一些书,参加会议,上课,获得学位。有很多方法可以学习设计。 Joel Spolky's book on UI design 对开发人员来说是一本很好的入门读物,但它还有很多其他内容,这就是设计师的用武之地。
  3. 与设计师合作。好的设计师,如果可以的话。从事这项工作的人有不同的头衔。今天,最常见的头衔是用户体验设计师 (UXD)、信息架构师 (IA)、交互设计师 (ID) 和可用性工程师。他们对设计的思考与您对代码的思考一样多。你可以从他们身上学到很多东西,他们也可以从你身上学到很多。尽可能与他们合作。在您的公司中寻找具备这些技能的人。也许你需要雇人。或者参加一些会议、参加网络研讨会,并花时间在 UXD/IA/ID 世界中。

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

为什么 UI 设计很难

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

  • 对机器的深刻理解。这个群体中的人首先担心代码,其次才是人。他们拥有深厚的技术知识和技能。我们称他们为开发人员、程序员、工程师等等。
  • 对人和设计的深刻理解:这个群体的人首先关心的是人,其次才是代码。他们对人们如何与信息、计算机以及他们周围的世界进行交互有着深入的了解。我们称他们为用户体验设计师、信息架构师、交互设计师、可用性工程师等等。

这是这两个群体之间的本质区别——开发人员和设计师之间:

  • 开发人员让它发挥作用。他们在你的 TiVo、你的 iPhone、你最喜欢的网站等上实现了这些功能。他们确保它确实做了它应该做的事情。他们的首要任务是让它发挥作用。
  • 设计师让人们喜欢。他们弄清楚如何与之交互,它应该看起来如何,以及它应该如何感觉。他们设计使用应用程序、网站和设备的体验。他们的首要任务是让你爱上开发人员所做的事情。这就是用户体验的含义,与品牌体验不同。

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

开发人员应该会发现 UI 设计很难,就像 UI 设计师应该会发现编写代码很困难一样。

【讨论】:

  • 这是最好的答案。顺便说一句,很棒的链接!
  • UI 设计的优秀概述!我也观察到你关于不同心态的概念。我同时进行 UI 设计和编程,最好一次只专注于其中一个。 [...]
  • 如果您在编程时做出 UI 设计决策,您认为什么是最简单的实现方式,这往往会导致糟糕的 UI 设计。如果你在做 UI 设计的时候考虑实现,你可能会选择更容易实现但对用户没有那么好的 UI 设计模式。
  • 为什么没有将此标记为最佳答案?这似乎比 Thorsten79 的回答要好得多。
  • 希望我能直接收藏这个答案。 :)
【解决方案3】:

真正帮助我改进设计的是找一位开发人员、QA 人员、PM 或任何碰巧路过的人,让他们试用特定的小部件或屏幕。

当你看到别人第一次使用你的软件时,你会意识到这是惊人的

【讨论】:

  • 我已经多次尝试这种方法,发现它非常有效。偶尔我有一个非技术朋友用它来看看是什么导致他们在尝试使用它时感到疼痛。
  • 这与我采用的方法相同。
  • 这种方法可以称为“可用性测试”吗? ;) 是的,这是您应该在事前、事中和事后采取的方法。
  • 这几乎是我的确切答案。质量保证和技术支持很棒。开发人员不擅长 UI 设计,反复迭代并让其他人经常对其进行测试。
  • 我相信它被称为“走廊可用性测试”
【解决方案4】:

归根结底,这真的关乎同理心——你能设身处地为用户着想吗?

当然,有一个帮助是“吃你自己的狗粮”——你自己作为一个真实的用户使用你的应用程序,看看什么是烦人的。

另一个好主意是找到一种方法来观察使用您的应用程序的真实用户,这可能与具有单向镜子、屏幕视频捕获、用户摄像机等的可用性实验室一样复杂,或者可以就像使用碰巧走过大厅的下一个人进行纸质原型制作一样简单。

如果一切都失败了,请记住,UI 太简单总比太复杂好。很容易说“哦,我知道如何解决这个问题,我只需添加一个复选框,以便用户可以决定他们喜欢哪种模式”。很快你的用户界面就太复杂了。选择默认模式并将首选项设置为高级配置选项。或者干脆不说。

如果您阅读了大量有关设计的内容,您很容易被阴影和圆角等问题所困扰。那不是重要的东西。简单性和可发现性是最重要的。

【讨论】:

  • 说得好。大多数情况下,尝试增加灵活性只会导致混乱。更简单 == 更好。
  • 如果他们在地球的另一端,在您从未体验过的文化中,您能否设身处地为您的用户着想?国际化是实体 UI 设计中的主要考虑因素。我们不要假设每个人都住在美国。
  • 绝对的;我目前的项目实际上是针对全球用户(基本上在美国以外的每个国家,我所在的地方)。毫无疑问,它让同理心变得更难——而且更重要的是认真、积极地尝试它。
  • 另外,我想补充一点,一旦你让真正的用户看到它,绝大多数可用性问题就会非常明显。是的,会有一些特定于文化的微妙之处,但你可以让下一个走在大厅里的人来做出巨大的改进。
  • +1,只是因为我自己不能+100!我将补充一点,使用完全不同的应用程序获得经验有助于您成长为 UI 开发人员。仅使用 Visual Studio 或其他开发工具之类的工具会妨碍这种能力...
【解决方案5】:

与流行的神话相反,UI 设计实际上没有软方面,至少不会超过设计一个好的后端所需要的。

考虑以下事项;良好的后端设计基于任何优秀的开发人员都熟悉的相当可靠的原则和元素:

  • 低耦合

  • 高内聚

  • 架构模式

  • 行业最佳实践

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

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

  • 可见性

  • 供能

  • 反馈

  • 容差

  • 简单

  • 一致性

  • 结构

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

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

我建议参加人机交互课程,例如查看 MIT 和耶鲁网站以获取在线资料:

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

早期的优秀post by Thorsten79 提出了软件开发专家与用户的话题,以及他们对软件的理解有何不同。人类学习专家区分功能性和结构性心理模型。寻找去朋友家的路可以很好地说明两者之间的区别:

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

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

通过 UI 传达功能模型还是结构模型(例如,向导与高级模式)之间的选择并不像 Thorsten79 的帖子中看起来那么简单。高级和频繁使用的用户可能更喜欢结构模型,而偶尔或经验较少的用户 - 功能性。

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

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

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

无论如何,我仍然不能强烈推荐参加正式的 HCI 课程。涉及很多东西,例如heuristics、源自Gestalt phychology 的原理、人类学习的方式等。

【讨论】:

  • +1 获取 MIT OCW 链接 :) 这些讲义非常宝贵
  • 你说得对,用户自己也可以成为软件专家,并且他们喜欢有人通过“漂亮”的 UI 为他们创造出一种更快的方式。例如,这就是所有快捷键的用途。可用性是一个非常有趣的主题!
【解决方案6】:

我建议您以与现在相同的方式开始所有 UI,而不是关注可用性和其他内容。

alt text http://www.stricken.org/uploaded_images/WordToolbars-718376.jpg

现在想想:

设计师知道他已经达到了完美,而不是在没有什么可添加的时候,而是在没有什么可以拿走的时候。 — 圣埃克苏佩里

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

【讨论】:

  • 这就是为什么我更喜欢 Office 2007!
  • 如果有人想知道我是从哪个坟墓里挖出这句话的,我是从文明 4 中听到的。很棒的游戏。我不知道作者是谁,但他肯定能写出比 word 设计师更好的 UI。
  • 爱因斯坦还有一句类似的名言:“让一切尽可能简单,但不要简单。”我发现这些想法也适用于 UI 设计:www.presentationzen.com。 ...和 ​​+1
  • 圣埃克苏佩里不仅仅是一名飞行员和飞机设计师。 +1 引用他的话。他的儿童读物(《小王子》)非常值得一读,但我在这里跑题了。
  • 你应该选择打印视图...现在看不到标尺。
【解决方案7】:

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

另一本好书是唐纳德·诺曼的The Design of Everyday Things

【讨论】:

  • 谢谢,“The Design of Everyday Thinks”在我的 Amazon WishList 上
  • +1。 《日常事物的设计》也在 Coding Horror 推荐阅读清单上(开发人员的好书清单)。最近读完了,也可以强烈推荐一下。
  • 我现在正在阅读“日常事物的设计” - 它当然非常好,但正如 cmets 在另一个答案中提到的那样,艾伦库珀的“囚犯正在运行庇护所”正好解决了这个问题话题。作为开发者,这本书“改变了生活”!
  • 我的烦恼:很多开发人员(和设计师,以及其他人)认为因为我可以编码,所以我不能设计用户界面。我不太了解 Photoshop,但我认为我对哪些有效,哪些无效。 (日常事物的设计是我的第一本 UI 圣经。)
【解决方案8】:

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

一个漂亮的用户界面需要许多人(包括我自己)无法产生的艺术或至少是审美技能。不幸的是,这还不够,也无法使 UI 可用,正如我们在许多重量级的基于闪存的 API 中看到的那样。

制作可用的 UI 需要了解人类如何与计算机交互、心理学中的一些问题(例如,菲特定律、希克定律)以及其他主题。很少有 CS 课程为此进行培训。据我所知,很少有开发人员会选择用户测试书籍而不是 JUnit 书籍等。

我们中的许多人也是“核心程序员”,倾向于将 UI 视为门面,而不是决定我们项目成功或失败的因素。

此外,大多数 UI 开发体验都非常令人沮丧。我们可以使用像旧 VB 这样的玩具 GUI 构建器并不得不处理丑陋的胶水代码,或者我们使用让我们无所适从的 API,比如尝试在 Swing 中整理布局。

【讨论】:

  • “我们可以使用像旧 VB 这样的玩具 GUI 构建器并不得不处理丑陋的胶水代码,或者我们使用让我们无所适从的 API,比如尝试在 Swing 中整理布局。”您真的总结了我在 GUI 构建方面的经验。如果我可以添加:“或疯狂的 DOM 和 CSS 组合”
  • 相信大家都熟悉Totally Gridbag吧? "madbean.com/anim/totallygridbag"
【解决方案9】:

转到 Slashdot,阅读任何有关 Apple 的文章中的 cmets。你会发现很多人都在谈论 Apple 产品没有什么特别之处,并将 iPod 和 iPhone 的成功归因于那些试图时尚或时髦的人。他们通常会浏览功能列表,并指出他们没有做早期的 MP3 播放器或智能手机没有做的事情。

还有一些人喜欢 iPod 和 iPhone,因为它们可以简单轻松地完成用户想要的操作,无需参考手册。界面与界面一样直观、令人难忘和易于发现。我不像早期版本那样喜欢 MacOSX 上的用户界面,我认为他们已经放弃了一些有用性来支持浮华,但 iPod 和 iPhone 就是出色设计的例子。

如果您属于第一个阵营,那么您不会像普通人那样思考,因此您可能会做出糟糕的用户界面,因为您无法区分它们的好坏。这并不意味着你没有希望,而是你必须明确地学习好的界面设计原则,以及如何识别好的 UI(就像阿斯伯格综合症的人可能需要明确地学习社交技能一样)。显然,仅仅拥有一个好的 UI 并不意味着你就能做出来。例如,我对文学的欣赏似乎并没有扩展到(目前)撰写可发表故事的能力。

因此,请尝试培养良好的 UI 设计意识。这不仅限于软件。唐诺曼的“日常事物的设计”是经典之作,还有其他书籍。获取成功的 UI 设计示例,并充分利用它们来感受不同之处。认识到您可能需要学习一种新的思考方式,并享受它。

【讨论】:

  • +1 建议日常生活用品的设计
  • +1 以获得非常好的答案。我认为这说明你仍然徘徊在 1 个赞成票(现在是 2 个);那些符合您描述的人可能不会认为他们这样做,或者只是忽略这个想法:-(
  • 这是一个笼统的声明。并不是所有对 Slashdot 的反苹果评论都是对其 UI 的批评,或者是对缺乏 UI 理解的验证。 Apple 拥有出色的用户界面,许多竞争对手也是如此。
  • 另一个想法:Apple 并不适合所有人。例如,它没有 CLI 提供的惊人的强大功能。
  • 我个人认为 Apple 产品使用起来非常不直观。我想我不是唯一一个因为他们的第一台 iPod 每次我开始慢跑时都会开始随机播放歌曲而感到沮丧的人,或者为什么 iPhone 屏幕会不断地反转自己。我认为事情应该只发生在直接、明确的用户操作中。
【解决方案10】:

我坚持的主要经验法则是,永远不要同时尝试两者。如果我正在处理后端代码,我将完成它,休息一下,然后带着我的 UI 帽子返回。如果您在编写代码的同时尝试使用它,您会以错误的心态来处理它,并最终导致一些可怕的界面。

我认为绝对有可能同时成为一名优秀的后端开发人员和一名优秀的 UI 设计师,你只需要努力工作,就该主题进行一些阅读和研究(从 Miller 的 #7 到 Nielsen 的档案) ,并确保您了解为什么 UI 设计至关重要。

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

编辑:Krug 的书真的很棒……一定要读一读,尤其是如果你要为 Web 进行设计。

【讨论】:

  • 这本书的书名是什么
  • @refhat 贴在顶帖显眼处了,所以我当时没有链接,但就是这个:librarything.com/work/12322
【解决方案11】:

这有很多原因。

(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 专家也没有技术,开发人员也没有机会。 他认为这在他的脑海中很清楚。但在纸面上甚至都不清楚,更不用说在软件实现上明确了。

我必须使用我自己的手工制作技术。

【讨论】:

    【解决方案12】:

    我尝试与特定设计的网站和文本保持联系。我还发现优秀的 Robin Williams 书 The Non-Designer's Design Book 在这些研究中非常有趣。

    我相信设计和可用性是软件工程中非常重要的一部分,我们应该更多地了解它,不要再找借口说我们不应该做设计。

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

    【讨论】:

    • 我不同意每个人都可以成为程序员。交易的某些方面无法教授,您可以破解它,也可以不破解(没有双关语。)
    • 我的意思是,偶尔,这并不意味着这个人会成为一个优秀的程序员或者永远都是。
    【解决方案13】:

    在进行 UI 设计时,我始终牢记以下几点(目前还不是完整的列表):

    • 模型通信。 UI 是向用户解释心理模型的叙述。这个模型可能是一个业务对象,一组关系,你有什么。视觉突出、空间布局和工作流排序都在将此模型传达给用户的过程中发挥作用。例如,某种列表与另一个列表意味着不同的事物,以及列表中的内容与模型其余部分的关系。一般来说,我发现最好确保一次只传达一个模型。程序员经常尝试在同一个 UI 空间中交流多个模型或多个模型的一部分。

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

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

    • 了解您的受众。如果您的用户将一遍又一遍地执行相同的活动,他们将很快成为这些任务的高级用户,并因尝试降低初始进入门槛而感到沮丧。如果您的用户不经常进行许多不同类型的活动,最好确保用户界面始终握住他们的手。

    【讨论】:

    • 您通过 了解您的受众 提出了一个很好的观点......我也喜欢“你不是你的用户”(Platt)和“了解你的用户”。(Platt ) 这一点怎么强调都不过分
    【解决方案14】:

    【讨论】:

    • 你的意思是苹果自己不再遵循的准则?
    • “它们更像是指南” ^_^
    【解决方案15】:

    我发现 UI 设计中最好的工具是观察首次用户尝试使用该软件的情况。做大量笔记并问他们一些问题。永远不要指导他们或试图解释软件是如何工作的。这是 UI 的工作(以及编写良好的文档)。

    我们在所有项目中始终采用这种方法。观看用户以您从未考虑过的方式处理软件总是令人着迷。

    为什么 UI 设计这么难?一般是因为开发者和用户从不见面。

    【讨论】:

    • 完全同意,但开发人员很有可能应用扎实的基本 UI 原则。
    • 坚实的基本 UI 原则并非在每个国家/地区都适用。我们在许多地区部署软件,全球不同地区的 UI 设计存在巨大差异。尝试将您以美国为中心的应用程序发送到中国......
    【解决方案16】:

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

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

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

    【讨论】:

    • 我认为你不能完全忽视美学。也许丑陋的 UI 可以和漂亮的 UI 一样有用,但这并不是 UI 的全部用途。毕竟,UI 是程序的面孔,就像一本书的封面:人们更有可能选择具有漂亮 UI 的程序。
    • 当然,美学很重要,但那是平面设计,而不是 UI 设计。
    【解决方案17】:

    为了在 UI 设计方面做得更好,我做了什么?
    注意了!

    这就像您每次看到新闻图表或电子巴士标志时都会想“他们是如何获得这些数据的?他们是使用原始 sql 还是使用 LINQ? (或在此处插入您自己共同的极客好奇心)。

    您需要开始这样做,但要使用各种视觉元素。

    但就像学习一门新语言一样,如果您不真的投入其中,您将永远学不会它。

    取自another answer我写道:

    学会观察、真正观察你周围的世界。为什么我喜欢那个 UI 但讨厌这个?为什么在这家餐厅的菜单上很难找到面食?哇,我什至在阅读这些文字之前就知道那个标志的含义。那是为什么?这本书的封面怎么看起来这么不对劲?学会花时间思考为什么你会对各种视觉元素做出反应,然后将其应用到你的工作中。

    【讨论】:

    • +1 获得关于学习观察和思考的禅宗建议。很少有人会质疑眼前的事物。
    【解决方案18】:

    不管你怎么做(上面有一些很好的观点),一旦我接受没有直观的东西......它真的帮助了我。

    我能听到即将到来的争论……所以让我解释一下。

    直觉:根据一种无意识的方法或感觉,使用一个人认为正确或真实的东西。

    如果(正如卡尔·萨根所假设的)你接受你无法理解与你曾经遇到过的任何事物完全不同的事物,那么如果你从未使用过类似的事物,你怎么可能“知道”如何使用它呢?

    想一想:孩子们尝试开门并不是因为他们“知道”门把手的工作原理,而是因为他们看到其他人这样做……他们经常把门把手转错方向,或者拉得太快。他们必须了解门把手的工作原理。然后将这些知识应用于不同但相似的情况:打开窗户,打开抽屉,打开几乎任何带有大把手的大东西。

    即使是对我们来说很直观的简单事情,对于来自其他文化背景的人来说也完全不直观。如果有人在他们面前伸出手臂,在手腕上上下挥动手臂,同时保持手臂不动......他们是在放弃你吗?可能吧,除非你在日本。在那里,这个手势可能意味着“过来”。那么谁是对的呢?当然,两者都在他们自己的背景下。但是如果你去这两个地方旅行,你需要知道这两个... UI 设计。

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

    看看苹果的 iPhone。即使你讨厌它,你也必须尊重它所投入的思想量。完美吗?当然不是。随着时间的推移,一个对象的感知“直觉”会增长甚至完全消失。

    例如。大多数人都知道,顶部和底部有两排孔的黑色带看起来像胶片......或者是吗?

    问问你平均 9 岁或 10 岁的孩子他们认为是什么。您可能会感到惊讶,现在有多少孩子很难将其识别为电影片段,即使它仍然被用来代表好莱坞或任何与电影(电影)相关的东西。过去 20 年的大多数电影都是数字拍摄的。我们中的任何人最后一次拿着任何类型的胶卷、照片或胶卷是什么时候?

    所以,对我来说,归根结底是:了解您的受众并不断研究以跟上“直观”事物的趋势和变化,针对您的主要用户并尽量不要做惩罚缺乏经验的事情偏向高级用户或者放慢高级用户的速度,以便牵手新手。

    最终,每个程序都需要用户接受一定程度的培训才能使用它。需要进行多少培训以及针对哪个级别的用户是需要做出的决策的一部分。

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

    我只是为钟形曲线中最胖的部分而努力,并试图吸引尽可能多的人,但我意识到我永远不会取悦所有人......

    【讨论】:

      【解决方案19】:

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

      【讨论】:

      • +1 阅读平台的设计指南绝对是一个人应该做的事情(并发现微软违反自己规则的频率;)
      • 另外阅读 Apple 的(人机界面指南)。他们有更多的基础和原则。这使您了解什么应该是通用的,什么是特定于平台的
      • 在阅读的同时,请阅读 GNOME HIG。在这三者之间,它开始变得可见,什么只是单个平台的特定事物,什么似乎是总体上的好主意。
      • 其中大部分基于 IBM,但现在已经过时了。例如,标准的剪切和粘贴命令是 Shift+Del 和 Shift+Ins(它们仍然有效,顺便说一句)。
      【解决方案20】:

      我认为主要问题与不同的才能或技能组合无关。主要问题是,作为开发人员,您对应用程序的功能和方式了解太多,并且您会自动从具有这些知识的人的角度设计您的 UI。

      而用户通常一开始对应用程序一无所知,并且永远不需要了解其内部工作原理。

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

      【讨论】:

        【解决方案21】:

        “从屏幕的两侧进行设计”为程序员发现 UI 设计困难的原因提供了一个非常简单但深刻的原因:程序员被训练为根据边缘情况进行思考,而 UI 设计师被训练为根据常见情况进行思考或用法。

        因此,如果其中一个世界的默认训练与另一个世界完全相反,那么从一个世界到另一个世界肯定是困难的。

        【讨论】:

          【解决方案22】:

          如果说程序在 UI 设计上很烂,就是没有抓住重点。问题的关键在于,大多数开发人员接受的正式培训都深入到了该技术。人机交互不是一个简单的话题。这不是我可以通过提供一个简单的单行语句让您意识到“哦,如果我使用 x 而不是 y,用户将更有效地使用此应用程序”,我可以“心灵融合”给您的东西。

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

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

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

          有几本关于这个主题和课程的好书可供学习(例如 Bill Buxton 的 Sketching User Experiences 和 Edwin Hutchins 的 Cognition in the Wild)。许多大学都有人机交互的研究生课程。

          这个问题的总体答案在于个人是如何学习计算机科学的。它完全基于数学,基于逻辑,而不是基于用户体验。要做到这一点,您需要的不仅仅是一个通用的 4 年计算机科学学位(除非您的 4 年计算机科学学位辅修了心理学并且在人机交互中得到了强调)。

          【讨论】:

          • 我不同意:计算机本质上是基于数学和逻辑的。任何计算机编程教学都必须以数学和逻辑为基础。
          • 是的,你是对的,保罗。计算机是数学和逻辑。 UI 设计虽然涉及到人为因素,但历史证明,这远远不是基于数学和逻辑的。
          • 与其说它们基于数学和逻辑的程度较低,不如说它们背后的数学和逻辑要复杂得多,而且大多超出了今天的任何人。也就是说,我敢打赌,好的 UI 设计在某种程度上都是基于几何图形的。
          【解决方案23】:

          让我们把你的问题转过来 -

          “ui 设计师”是否注定只设计信息架构和表示层?他们可以做些什么来重新训练他们的大脑,以便更有效地设计令人愉悦和高效的系统层?

          似乎他们的“用户界面设计师”必须采取完全不同的视角——他们必须从盒子的内部向外看;而不是从盒子外面看。

          Alan Cooper 的 "The Inmates are Running the Asylum" 观点是,我们不能同时兼顾两种观点 - 我们可以学会戴好一顶帽子,但我们不能只是换帽子。

          【讨论】:

            【解决方案24】:

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

            软件开发人员通常在“直观”方面做得不好

            【讨论】:

            • 好点,需要大脑的另一侧
            • UI 没有直观的东西。与我已经知道的类似,但有些不同。
            • 没有什么是“直觉的”,一切都是学来的。直观是商务人士用来让程序员大汗淋漓的词。
            • 像一个真正的程序员一样说话......这就是问题的根源。
            • @gbrandt Intuitive 是“熟悉”和“简单”的某种组合。尽管如此,这仍然是一个努力的目标。可用性的难点在于,对某些人来说直观的东西对其他人来说不一定是直观的。 @Stephan 说得对,“直觉”不是一些难以理解的“事实”,而是与用户相关的。
            【解决方案25】:

            一个有用的框架是在设计沟通过程时积极考虑您正在做的事情。在非常真实的意义上,您的界面是一种用户必须用来告诉计算机该做什么的语言。这导致考虑以下几点:

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

            确实,很难确定程序员认为界面交互是什么,其他而不是通信过程,但问题可能在于它没有被认为是任何东西全部。

            【讨论】:

              【解决方案26】:

              已经有很多优秀的 cmets,所以我不确定我可以添加多少。 不过还是……

              • 为什么开发人员希望能够设计出优秀的 UI?
              • 他在该领域接受了多少培训?
              • 他读了多少本书?
              • 他花了多少年设计了多少东西?
              • 他有机会看到用户的反应吗?

              我们不期望一个随机的“管道工乔”能够编写好的代码。 那么为什么我们会期望随机的“程序员乔”来设计好的 UI?

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

              但 UI 设计是一门必须学习和实践的手艺,就像其他任何事情一样。

              【讨论】:

              • 正是我的想法,“开发人员”与“用户界面设计师”有何关系??
              • @Jorge 现在与此相关:许多开发人员必须为他们的雇主设计 UI,即使他们不是设计师。在我的公司,我们没有任何艺术家。我们的应用看起来还不错。在这种情况下,您必须进行小组评审和其他工作,以确保设计良好。
              • @TM:设计不一定是 UI/UX 设计。当然它可能看起来不错,但这并不意味着它效果很好
              【解决方案27】:

              开发人员并不(必然)擅长 UI 设计,原因与他们不(必然)擅长编织的原因相同;这很难,需要练习,而且首先让别人教你怎么做也没有什么坏处。

              大多数开发人员(包括我)开始“设计”用户界面是因为它是编写软件的必要部分。除非开发人员努力精通它,否则他/她不会。

              【讨论】:

                【解决方案28】:

                要改进,只需环顾现有网站。除了已经推荐的书籍,您可能还想看看 Robin Williams 的优秀书籍《非设计师设计书籍》(sanitised Amazon link)

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

                UI 设计绝对是一门艺术,就像 C 语言中的指针一样,有些人懂,有些人不懂。

                但至少we can have a chuckle at their attempts。顺便说一句,感谢 OK/Cancel 提供了一部有趣的漫画,并感谢 Joel 将其放入您的“最佳软件写作 I”一书中 (sanitised Amazon link)。

                【讨论】:

                  【解决方案29】:

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

                  软件不是为了它自己而存在的。一些软件存在的原因是为了人们。甚至试图想出一个新软件的想法,却不理解为什么有人需要它,这绝对是荒谬的。然而,这种情况一直都在发生。

                  在编写单行代码之前,您应该查看界面的纸质版本,并在真人身上进行测试。这有点奇怪和愚蠢,它最适合孩子,以及扮演“计算机”的人。

                  界面需要利用我们的自然认知设施。穴居人将如何使用您的程序?例如,我们已经发展到非常擅长跟踪移动物体。这就是为什么使用物理模拟的界面(如 iphone)比即时发生变化的界面工作得更好。

                  我们擅长某些类型的抽象,但不擅长其他。作为程序员,我们接受过心理体操和后空翻的训练,以理解一些最奇怪的抽象。例如,我们了解到,一系列神秘的文本可以表示并转化为金属盘上的电磁状态模式,当精心设计的设备遇到这种模式时,会导致一系列不可见的事件,在电子设备上以光速发生。循环,并且这些事件可以被引导以产生有用的结果。这是一件非常不自然的事情,必须理解。要明白,虽然它对我们有一个完全合理的解释,但对外界来说,看起来我们正在编写难以理解的咒语,以召唤无形的有情灵魂来执行我们的命令。

                  普通人理解的抽象类型是地图、图表和符号等。谨防符号,因为符号是一个非常脆弱的人类概念,需要有意识的脑力才能解码,直到学会了符号。

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

                  我们只有在 4 岁左右获得理解地图的能力。我想我曾经在某个地方读到过,黑猩猩在 6 或 7 岁左右获得了理解地图的能力。

                  guis 之所以如此成功,是因为它们改变了计算机的主要文本界面,将计算机概念映射到类似于物理位置的东西。 guis 在可用性方面失败的地方是它们不再像你在现实生活中看到的东西。计算机中发生了一些看不见的、不可预测的、难以理解的事情,这些事情与你在物理世界中看到的任何事情都没有任何相似之处。其中一些是必要的,因为仅仅制作一个现实模拟器是没有意义的——这个想法是为了节省工作,所以必须有一点魔法。但这种魔法必须是有意义的,并且必须建立在人类能够很好地理解的抽象概念中。当我们的抽象开始变得深入、分层并且与手头的任务不匹配时,事情就会崩溃。换句话说,界面不能作为底层软件的良好映射。

                  有很多书。我读过并因此可以推荐的两本是 donald norman 的“The Design of Everyday Things”和 Jef Raskin 的“The Human Interface”。

                  我还推荐一门心理学课程。 《The Design of Everyday Things》稍微谈到了这一点。由于开发人员对心理学的“大众理解”,许多界面出现故障。这类似于“民间物理学”。运动中的物体保持运动对大多数人来说没有任何意义。 “你必须不断推动它才能让它保持运动!”物理新手想。用户测试对大多数开发人员来说没有意义。 “你可以问用户他们想要什么,这就足够了!”心理学新手认为。

                  我推荐由 Philip Zimbardo 主持的 PBS 纪录片系列《发现心理学》。做不到这一点,试着找一本好的物理教科书。贵的那种。不是您在 Borders 中找到的低俗小说自助废话,而是您只能在大学图书馆中找到的厚厚的精装书。这是一个必要的基础。没有它你也可以做出好的设计,但你只会对正在发生的事情有一个直观的了解。读一些好书会给你一个很好的视角。

                  【讨论】:

                    【解决方案30】:

                    如果您阅读《为什么软件很烂》这本书,您会看到 Platt 的回答,这个回答很简单:

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

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

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-03-28
                      • 2016-02-25
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2010-10-30
                      • 1970-01-01
                      相关资源
                      最近更新 更多