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

时间:2009-02-05 00:54:16

标签: user-interface

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

同事推荐了几本书,包括网站设计不要让我想到为什么软件糟透了,但我我想知道其他人为消除这方面的不足做了什么?

65 个答案:

答案 0 :(得分:361)

让我直接说出来:

对此进行改进并非始于准则。首先重新构建您对软件的看法。

大多数核心开发人员对其软件用户几乎同情。他们有无线索用户的想法,用户如何构建他们使用的软件模型以及他们如何使用计算机。

当专家与外行人发生碰撞时,这是一个典型的问题:一个正常人怎么会如此<强>愚蠢不明白专家10年前的理解?

对于几乎所有有经验的开发人员而言,难以理解的首要事实之一是:

普通人的软件概念与您的概念截然不同。他们对编程没有任何线索。没有。零。他们甚至都不关心。他们甚至认为他们不必关心。如果你强制使用,他们会删除你的程序。

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

用户不关心。

真是个白痴。

许多开发人员无法与普通用户合作。他们因不存在的技术知识而感到沮丧。这就是大多数开发人员回避并认为用户必须是白痴的原因。

他们不是。

如果软件开发商购买汽车,他希望它能够顺利运行。他通常不关心轮胎压力,机械微调对于使其以这种方式运行非常重要。在这里,他专家。如果他买了一辆没有微调的汽车,他会把它还给他,然后买一辆他想要的东西。

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

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

你能做些什么来补救它?作为一名程序员,你的核心越多,你对普通用户的思考就越不开放。对你来说,这将是陌生和无知的。您会想:我无法想象人们如何永远使用缺乏知识的计算机。但他们可以。对于每个UI元素,请考虑:是否有必要?它是否适合用户对我的工具的概念?我怎么能让他理解?请阅读有关这方面的可用性,有很多好书。这也是整个科学领域。

啊,在你说出来之前,是的,我是Apple粉丝;)

答案 1 :(得分:215)

答案 2 :(得分:70)

真正帮助我改进设计的方法是抓住一位开发人员,一位QA人员,一位PM,或任何偶然走过的人,让他们尝试一个特定的小部件或屏幕。

当您第一次看到其他人使用您的软件时,您会发现它的惊人之处

答案 3 :(得分:32)

最终,它真的是关于同理心 - 你能让自己置身于用户之中吗?

当然,有一件事是“吃你自己的狗食” - 自己使用你的应用程序作为一个真正的用户,并看到什么是烦人的。

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

如果所有其他方法都失败了,请记住,UI过于简单而不是太复杂,几乎总是更好。很容易说“哦,我知道如何解决这个问题,我只需添加一个复选框,以便用户可以决定他们喜欢哪种模式”。很快你的UI太复杂了。选择默认模式并使首选项设置为高级配置选项。或者只是把它留下来。

如果您阅读了很多关于设计的内容,您可以很容易地挂在阴影和圆角上等等。那不是重要的东西。简单性和可发现性是重要的东西。

答案 4 :(得分:26)

与流行的神话相反,UI设计中几乎没有软性方面,至少不需要设计一个好的后端。

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

  • 低耦合

  • 高凝聚力

  • 架构模式

  • 行业最佳实践

良好的后端设计通常通过多种相互作用而产生,其中基于在测试或实际使用期间获得的可测量反馈,初始蓝图逐渐得到改善。有时您需要对后端的较小方面进行原型设计,并将它们隔离等进行试验。

良好的用户界面设计基于以下原则:

  • 能见度

  • 启示

  • 反馈

  • 公差

  • 简单

  • 稠度

  • 结构

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

设计UI所需的技能与设计后端完全不同,因此,如果不首先进行一些学习,就不能期望能够做到好的UI。然而,这两种活动的共同点是设计过程。我相信任何可以设计好软件的人都能够设计好的UI,只要他们花一些时间学习如何。

我建议参加人机交互课程,查看麻省理工学院和耶鲁大学的网站,例如在线资料:

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

早期的优秀post by Thorsten79提出了软件开发专家与用户的主题以及他们对软件的理解有何不同。人类学习专家区分功能和结构心理模型。找到你朋友家的方式可以说是两者之间差异的一个很好的例子:

  • 第一种方法包括一系列详细说明:走高速公路的第一个出口,然后在100码左转后等。这是功能模型的一个例子:实现某个目标所需的具体步骤清单。功能模型易于使用,它们不需要太多考虑直接执行。显然,简单性会受到惩罚:它可能不是最有效的路线,任何特殊情况(即交通分流)都可能导致完全失败。

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

通过UI传递功能或结构模型(例如,向导与高级模式)之间的选择并不像Thorsten79的帖子那样直截了当。高级和频繁的用户可能更喜欢结构模型,而偶尔或不太经验的用户 - 功能。

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

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

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

无论如何,我仍然不能建议足够强烈地参加正式的HCI课程。涉及很多内容,例如heuristics,源自Gestalt phychology的原则,人类学习的方式等。

答案 5 :(得分:25)

我建议您从现在开始的所有UI开始,而不是关注可用性和内容。

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

现在想一想:

设计师知道他已经达到了完美状态,而不是在没有任何东西可以添加的时候,但是什么时候没有什么东西可以带走。 - Saint-Exupéry

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

答案 6 :(得分:16)

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

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

答案 7 :(得分:14)

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

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

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

我们中的许多人也是“核心程序员”,倾向于将UI视为外观而不是影响我们项目成功的因素。

此外,大多数UI开发经验都非常令人沮丧。我们可以使用像旧VB这样的玩具GUI构建器,并且必须处理丑陋的胶水代码,或者我们使用的API会让我们感到沮丧,比如试图在Swing中整理布局。

答案 8 :(得分:12)

转到Slashdot,阅读有关Apple的任何文章的评论。你会发现很多人都在谈论苹果产品如何与众不同,并将iPod和iPhone的成功归功于那些想要时尚或时尚的人。他们通常会浏览功能列表,并指出他们没有做任何早​​期MP3播放器或智能手机没有做的事情。

然后有些人喜欢iPod和iPhone,因为他们可以简单轻松地完成用户想要的操作,而无需参考手册。接口与接口一样直观,令人难忘且易于发现。我不喜欢MacOSX上的用户界面和早期版本一样,我认为他们已经放弃了一些有利于浮华的用途,但iPod和iPhone都是一流的设计。

如果你在第一个阵营,你不会想到一般人的方式,因此你可能会制造糟糕的用户界面,因为你无法从好的用户界面告诉他们。这并不意味着你没有希望,而是你必须明确地学习良好的界面设计原则,以及如何识别一个好的UI(就像Asperger的某些人可能需要明确地学习社交技能)。显然,只是有一个良好的用户界面并不意味着你可以做一个;例如,我对文学的欣赏似乎并没有扩展到(目前)编写可发表的故事的能力。

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

答案 9 :(得分:10)

我坚持的主要经验法则是不要试图同时做两件事。如果我正在处理后端代码,我将完成这项工作,休息一下,并返回我的UI帽子。如果您在编写代码时尝试使用它,那么您将以错误的思维方式处理它,并最终得到一些可怕的接口。

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

我不认为这是一个需要创造性的案例,而是像后端开发一样,这是一个非常有条理,非常有条理的事情,需要学习。人们通过用户界面获得“创造性”创造了一些最大的可用性怪物...我的意思是,看看100%的Flash网站,一开始......

编辑:Krug的书非常好......请仔细阅读,特别是如果你要为网络设计的话。

答案 10 :(得分:8)

这有很多原因。

(1)开发人员无法从用户的角度看问题。这是通常的怀疑:缺乏同理心。但通常情况下并非如此,因为开发人员并不像人们那样陌生。

(2)另一个更常见的原因是开发人员如此接近他自己的东西,长期待在他的东西上,没有意识到他的东西可能不那么熟悉(一个比直觉更好的术语)对其他人。

(3)另一个原因是开发人员缺乏技术。

我的大索赔:阅读任何用户界面,人工交互设计,原型书。例如设计明显:Web应用程序设计的常识方法,不要让我思考:一种常用的Web可用性方法,设计时刻,等等。

他们如何讨论任务流程?他们如何描述决策点?也就是说,在任何用例中,至少有3条路径:成功,失败/异常,替代。

因此,从A点开始,您可以转到A.1,A.2,A.3。 从A.1点开始,您可以访问A.1.1,A.1.2,A.1.3等等。

他们如何展示这样的深入任务流程? 他们没有。他们只是掩饰它。

由于即使是UI experst也没有技术,开发人员也没有机会。 他认为头脑清醒。但它在纸面上甚至不清楚,更不用说在软件实现中明确了。

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

答案 11 :(得分:7)

我尝试与特定于设计的网站和文字保持联系。我发现优秀的罗宾威廉姆斯书 The Non-Designer's Design Book 在这些研究中非常有趣。

我认为设计和可用性是软件工程中非常重要的一部分,我们应该更多地学习并停止给我们不应该做设计的借口。

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

答案 12 :(得分:7)

在接近UI设计时,以下是我记住的一些事项(到目前为止还没有完整的列表):

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

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

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

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

答案 13 :(得分:7)

答案 14 :(得分:5)

然而你这样做(并且上面有一些很好的观点),一旦我接受了这种情况,它确实对我有帮助....

我可以听到在地平线上轰轰烈烈的争论......所以让我解释一下。

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

如果(正如卡尔·萨根所假设的那样)你接受了你无法理解的东西绝对不同于你曾经遇到过的东西那么如果你从来没有像我这样远程使用任何东西,你怎么可能“知道”如何使用某些东西?

想一想:孩子们试图打开门不是因为他们“知道”门把手是如何工作的,而是因为他们看到别人这样做了......他们往往会把旋钮转向错误的方向,或者拉得太快。他们必须了解门把手是如何工作的。然后,这些知识应用于不同但相似的情况:打开窗户,打开抽屉,打开几乎任何大的东西,带有一个大的旋钮式手柄。

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

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

看看Apple的iPhone。即使你讨厌它,你也必须尊重它的思想。它完美吗?当然不是。随着时间的推移,一个物体的“直觉性”可以增长甚至完全消失。

例如。大多数人都知道,在顶部和底部有两排孔的黑色条纹看起来就像是一个电影胶带......或者它们呢?

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

所以,对我而言,最重要的是:了解您的受众并不断进行研究,以跟上“直观”事物的趋势和变化,针对您的主要用户并尽量不做惩罚缺乏经验的事情有利于高级用户或减慢高级用户以便掌握新手。

最终,每个程序都需要对用户进行一定程度的培训才能使用它。需要进行多少培训以及哪个级别的用户参与决策。

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

我只是为钟形曲线中最胖的部分拍摄,尽量让尽可能多的人,但我意识到我永远不会让所有人满意....

答案 15 :(得分:5)

我在UI设计方面做得更好?   注意它!

就像你有时间看到新闻或电子巴士标志上的图表而你想知道'他们是如何获得这些数据的?他们是用原始sql做的还是使用LINQ? (或在这里插入你自己的共同极客好奇心)。

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

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

取自another answer我写道:

  

学习,真实地看,你周围的世界。为什么我喜欢这个用户界面而又讨厌这个用户界面?为什么在这家餐厅菜单中找到面条很难?哇,在我读完这些文字之前,我知道这个标志的含义。那是为什么?为什么书封面看起来如此错误?学会花时间思考你为什么对各种视觉元素做出反应,然后将其应用到你的工作中。

答案 16 :(得分:5)

duffymo只是提醒我原因:许多程序员认为“*设计”==“艺术”。

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

我认为所有程序员需要做的是花时间学习原理。我认为,无论何时我们能够应用最佳实践,无论是代码还是布局,都是我们的本性。我们所需要做的就是让自己了解我们工作这方面的最佳实践。

答案 17 :(得分:5)

我发现UI设计中最好的工具是观看首次尝试使用该软件的用户。拿出大量笔记并问他们一些问题。切勿指导或尝试解释软件的工作原理。这是UI的工作(以及编写良好的文档)。

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

为什么UI设计如此之难?一般来说,因为开发人员和用户永远不会见面。

答案 18 :(得分:4)

“从屏幕两侧进行设计”提供了一个非常简单但深刻的理由,为什么程序员难以找到UI设计:程序员接受过边缘案例思考,而UI设计师则接受培训,可以根据常见案例进行思考或用法。

如果两者中的默认训练与另一个世界完全相反,那么从一个世界走向另一个世界肯定是困难的。

答案 19 :(得分:4)

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

用户通常开始完全不了解应用程序,并且永远不需要了解其内部工作原理。

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

答案 20 :(得分:4)

我知道微软与他们自己的指导方针不一致,但我发现阅读他们的Windows设计指南确实对我有所帮助。我在我的网站here上有一个副本,只需向下滚动一下Vista UX指南。它帮助我完成了颜色,间距,布局等方面的工作。

答案 21 :(得分:3)

要说程序设计吮吸UI设计就是错过了重点。问题的关键在于大多数开发人员对技术的深入了解。人机交互不是一个简单的话题。通过提供一个简单的单行语句让你意识到“如果我用x而不是y,用户将更有效地使用这个应用程序”,这不是我能“思想”你的东西。

这是因为您缺少UI设计的一部分。人脑。为了理解如何设计UI,您必须了解人类思维如何与机器相互作用。我在明尼苏达大学就心理学教授讲授的这个主题进行了很好的课程。它被命名为“人机交互”。这描述了为什么UI设计如此复杂的许多原因。

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

此外,UI设计有两个部分,很多人似乎都错过了。有美学魅力和功能性工作流程。如果你追求100%的审美吸引力,那么除了你的产品,人们肯定会。我非常怀疑美学会不会减少用户的挫败感。

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

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

答案 22 :(得分:2)

用户体验设计和软件开发绝不是相互排斥的技能。相反,它们都需要常识和逻辑,注重细节并能够看到全局。所以,如果你是一个优秀的开发人员,你可以成为一名优秀的用户体验设计师!

它们可能看起来是互斥的,因为许多开发人员没有UX设计经验,反之亦然。此外,如果您在考虑UX设计之前就开始考虑架构,框架或语言,它可能会引导您走向错误的方向。

答案 23 :(得分:2)

如果你读过“为什么软件很糟糕”这本书,你会看到普拉特的答案,这很简单:

  1. 开发人员优先控制用户友好性
  2. 普通人优先于用户友好而不是控制
  3. 但另一个问题的另一个答案是“为什么一些开发人员的牙科难以接受?” - UI设计最好由UI设计师完成。

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

答案 24 :(得分:2)

答案 25 :(得分:2)

改善现有网站。除了已经建议的书籍,你可能想看看罗宾威廉姆斯的优秀书籍“非设计师设计书”(sanitised Amazon link

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

UI设计绝对是一门艺术,就像C中的指针一样,有些人得到它而有些人却没有。

但至少we can have a chuckle at their attempts。顺便说一下,感谢OK /取消搞笑漫画,感谢Joel把它放在你的书“我最好的软件写作”(sanitised Amazon link)中。

答案 26 :(得分:2)

开发人员(不一定)擅长UI设计的原因与他们(不一定)擅长编织的原因相同;这很难,需要练习,并且让一个人首先向你展示如何做是没有害处的。

大多数开发人员(包括我在内)开始“设计”UI,因为它是编写软件的必要部分。直到开发人员付出努力来擅长它,他/她才不会。

答案 27 :(得分:2)

我认为他们的技能非常不同。优秀的设计师了解人类行为,颜色和字体的心理等等。我认为这就像尝试成为营销人员和开发人员一样。非常具有挑战性但不一定不可能。

我会尝试找一些UI专家,看看他们的研究建议是什么。除非你正在设计像google这样极简主义的东西,否则如果它是一个重要的项目,最好雇用一个以UI艺术为主要内容的人。

那就是说,如果你正在设计一个非常实用的应用程序,我认为你可以尝试专注于界面的简洁性和清晰度 - 我认为这至少是谷歌成功(和堆栈溢出)关键的一半 - - 即直观且使用愉快。

答案 28 :(得分:2)

已经有很多很好的评论,所以我不确定我能添加多少。 但还是......

  • 为什么开发人员希望能够设计出良好的用户界面?
  • 他在那个领域接受了多少培训?
  • 他读了多少本书?
  • 他设计了多少年的事情?
  • 他是否有机会看到其用户的反应?

我们不希望随机的“乔水管工”能够写出好的代码。 那么为什么我们期望随机的“程序员乔”设计好的UI?

同理心有帮助。分离UI设计和编程有帮助。可用性测试有帮助。

但是UI设计是一种必须像其他任何一样学习和实践的工艺。

答案 29 :(得分:2)

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

  1. 用户是否已经说过这种语言?使用高度特殊的界面就像用以前从未说过的语言进行交流。因此,如果您的界面必须是特殊的,那么最好用最简单的术语和几个分心来介绍自己。另一方面,如果您的界面使用用户习惯的习语,他们会从一开始就获得信心。
  2. 沟通的敌人是噪音。听觉噪音干扰口语交流;视觉噪声干扰视觉交流。您可以从界面中消除的噪音越多,与之通信就越容易。
  3. 在人类对话中,它往往不是你说的,而是你说的。大多数软件通信的方式都是粗鲁的程度,如果它是一个人,就会被打得面目全非。如果你问别人一个问题并且他们坐在那里并盯着你看几分钟,在回答之前拒绝以任何其他方式回答,你会有什么感受?许多界面元素,如进度条和自动焦点选择,具有礼貌的基本功能。问问自己如何让用户的日子更愉快。
  4. 实际上,确定程序员认为接口交互是什么,其他而不是通信过程有点困难,但问题可能是它没有被认为是什么所有

答案 30 :(得分:2)

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

软件开发人员通常在'直观'上做坏事

答案 31 :(得分:2)

您提到了 Don't make me think 一书。我强烈建议阅读此内容。

答案 32 :(得分:2)

让我们回答你的问题 -

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

看起来像他们“ui设计师”必须采取完全不同的观点 - 他们必须从盒子内侧向外看;而不是从盒子外面看。

Alan Cooper的"The Inmates are Running the Asylum"意见认为我们不能成功地采取两种观点 - 我们可以学会戴上一顶帽子,但我们不能只是换帽子。

答案 33 :(得分:1)

UI设计更多的是艺术而不是科学,需要了解您的用户以及同情他们的能力。

这与整天与电脑交谈非常不同。

我不认为人们总是意识到这一点。

这是一个小小的自我测试:看看FamFamFam silk icons。考虑在您编写的上一个应用程序中选择哪个图标来表示各种功能。如果花费超过十分钟这样做会让你的眼睛开始上釉,那么UI设计可能不适合你。

答案 34 :(得分:1)

左脑与右脑。有些人没有艺术感。

我敢打赌,任何人都可以通过学习和勤奋来更好地设计界面。这并不意味着你将成为一流的艺术家或设计师。

我认为总是可以改进。

答案 35 :(得分:1)

“我们可以做些什么来重新训练我们的大脑,以便更有效地设计令人愉悦和有用的表现层?”

是 - 使用界面驱动的架构。 首先根据您的业务需求设计用户流程--- 然后根据您的用户流程设计您的编程逻辑和数据库。如果您将中间层和后端构建为旨在为前端服务的内容,那么您将拥有一个以用户为中心的应用程序。

答案 36 :(得分:1)

部分答案是UI设计比看起来要困难得多,就像编码比设计师看起来要困难得多。两者对于非常不同的事情有着非常不同的程度的担忧,除了所需的方法和技能的明显差异之外,这使得他们专注于彼此看不到的问题。

我发现有助于描述我的应用以及如何在没有任何可视化工具的情况下将其用于某人。它有助于专注于实际需要和重要的事情,并反馈另一个人可以快速理解的内容。我甚至在我有一行代码之前就能做到这一点,所以这样做非常便宜并且不需要任何艺术技巧。另一个优点是,对应用程序进行语言表达可以使我的大脑部分工作,否则在编码时将保持休眠状态,我可以在我说话时开始“看到”应用程序工作(或不工作)。

答案 37 :(得分:1)

为你的母亲设计它。

答案 38 :(得分:1)

吃自己的狗食实际上并不是最好的方法。缺乏对用户关注的关注,而真实情况也不是全部。随着您的专业知识的增长,与正常用户关注的距离越来越远。我认识的大多数开发人员都希望在创建解决问题的软件方面做得很好。

断开发生的地方是失去想象力。我们作为人类无法想到所有的可能性和组合。当然,我们试图通过“更好”的方法来克服这个问题。

我发现这项工作的唯一方法是让我自己接受用户反馈。通过这种方式,我了解了我正在解决的问题,不仅仅是一次,而是在用户使用我的软件时持续不断。

这不是一个简单的解决方案。你不仅要成为一名优秀的程序员,还要擅长X,而X则是你想要解决的问题。通过擅长X,您可以获得理解可能性和局限性所需的经验。您可以在代码中开始计算,从而在您提供的功能和UI的设计中产生更精美的软件。

它不是为了重新训练你的大脑,而是获得有效解决问题所需的经验。如果你像Stack Overflow这样全新的东西,只有你是用户反馈的一部分,才能获得经验。

答案 39 :(得分:1)

“好的ui设计”实际上是two problems

  1. 获得正确的设计
  2. 正确设计
  3. 这两个都是难题。根据我的经验,这两件事应该是并行探讨,以免在项目后期出现难看的惊喜(“为什么我们的性感拖累和放慢IE8中的超慢?你的意思是什么?”不可修复???“)

    要获得正确的设计,您将不得不探索posibilites。书籍可以指导你尝试对你的语言最有意义的事情 - 当然,经验更好。你也绝对需要真实用户的反馈 - 你怎么知道设计已经是正确的? (当然不能告诉..继续阅读!)

    “设计正确”则是下一个问题,因为这意味着必须实施您认为合适的设计。

    那些“用户体验/ gui”事情是如此困难,因为找到正确的答案涉及了解人类想要什么 - 他们不能客观地告诉你,而另一方面你不能从“外面”找出来。这意味着(经验 - 引导的试验和误差方法是唯一的方法。


    更清楚地回答你的问题:

      

    为什么好的ui设计如此难以为某些人服务   devels

    对于硬核开发人员来说,一个大问题是,他们对软件工作原理的理解与用户认为工作方式有很大不同(例如,URL“www.stackoverflow.com”应该写成“com.stackoverflow” .com“,如果你对DNS如何运作有所了解。但是尝试销售一个需要URL的浏览器:)。)。

    作为旁注:我建议你研究“体验设计”而不是“用户界面设计”,但这是另一个故事。

答案 40 :(得分:1)

Neal Stephenson撰写的一本关于用户界面及其重要性的很多想法的好书是In the Beginning was the Commandline。不是每个人都需要GUI,只有很多人不需要编程。这就像迪士尼世界的动物王国和亚马逊的实际差异。

答案 41 :(得分:1)

这完全是关于练习,一些训练和回顾。但是大多数后端开发人员都在一个环境中工作,在这种环境中,管理层并不真正重视良好的UI设计。

在阅读了一些关于它的文献之后,围绕UI设计组织一些编码道场。

答案 42 :(得分:1)

就像音乐一样: 有时人们可以成为技术上伟大的音乐家,但不是艺术家。我的经验法则总是向用户提供他们当时所需的UI。我注意到很多后端开发人员在使用UI时可以想象的每个选项都充斥着屏幕。虽然那些类型的人想要首先掌握所有细节并慢慢忽略他们不需要的东西,但这对大多数最终用户来说都不起作用。

答案 43 :(得分:1)

我知道当我制作一个糟糕的用户界面时,几乎总是因为我对它的特定部分进行了“划分”。

在开发和测试给定功能的过程中,我几乎总是会多次使用它。

在我检查了十几次后,我处于一种心态,我确切地知道自己要做什么,以及我需要做些什么才能使程序按照我的意愿行事。我也一遍又一遍地看着这个特殊的作品功能,一直到“完成”。在我测试的时候,我很快就完成了其余的应用/菜单/工作流程。

用户根本不处于相同的情况。他们并没有将这部分软件视为一个独立的“块”。他们并不总是这么做很多次,而且当他们经常这样做时,他们肯定不经常这样做。他们并没有“跳过”其余的流程,而是像开发人员那样专注于这件事。

尝试查看用户界面非常重要,然后想一想“我该怎么做才能做到这一点?”。如果不清楚,你做错了。我们处于这样一种情况:我们知道软件需要什么输入,我们只想找到一种获得输入的方法。用户处于他们想要一些结果的情况,并且他们想知道他们必须做什么来获得该结果。

答案 44 :(得分:1)

我使用我称之为Grandmaw的测试。

  • 如果亲爱的老爷爷不能使用它,那就有问题了。
  • 预先假定她知道该计划的内容,例如,知道如何办税,并试图使用Quicken。

答案 45 :(得分:1)

十年前,我真的在UI设计中吮吸 ...我想这些年来帮助我变得更好的是谦虚的健康组合追求完美

结论:永远不要对过去或现在的成就感到满意。从自己和他人的错误中学习。

答案 46 :(得分:1)

用户认为自上而下,而程序员在进入创建UI的步骤时通常会自下而上思考。

我们(程序员)正在考虑创建一个能够完成工作的数据模型,这将保存所需的数据等。我们创建的UI可以整齐地映射到底层模型。我们经常忘记看看我们的用户如何处理相同的任务,而不是深入了解他们的流程和思维方式。

我们很自然地期望我们系统的用户以与我们相同的方式思考问题,如何存储和处理他们的数据,以及理解UI的工作方式。

这通常与他们对任务的看法(和期望)不匹配。

如何解决?我认为一种方法是实际问一个(潜在的)用户在向他们展示任何内容之前他们期望程序如何工作。永远不要给我们任何关于我们如何实现功能的提示。使用它们在纸上对UI进行原型设计,让它们告诉您他们的期望并且需要每一步。永远不要把任何事情视为理所当然。

掌上飞行员的设计采用了自上而下的方式:

  

开始开发之前   据说霍金斯试飞了   一块木头,大小的   潜在的飞行员,在他口袋里的一个   周。 (From this article

他会模拟在木头上做什么,而不是考虑如何将其作为代码实现。每当一个新想法出现时,他就会“尝试”它是一块木头。

当然,你需要一些关于如何处理你提出的想法的指导方针,也许并非所有这些都需要解决,即使我们在技术上可以......

See bulletpoint 1 (Eliminate options) and 3 (Underpromise, overdeliver) here.

答案 47 :(得分:0)

UI设计是一种完全不同的技能。它与视觉艺术密切相关 - 能够欣赏和创造视觉对称和美感。无论出于什么原因,通常编码员都不善于视觉艺术。我知道有例外 - 但作为一般规则 - 它有效。

所以真的(除非你是这个奇怪的规则的例外) - 它应该像你不天生的任何其他领域一样处理。你应该评估一下你是否可以与你所得到的排骨相处得很好 - 或者甚至可能在你有机会的时候花一些能量提高。但是,你可以更好地发展自己有能力的领域,也可以寻求与那些你没有能力的人合作。

一本关于这个想法的好书是:现在,发现你的优势由Marcus Buckingham ...这是一个简单的阅读。

答案 48 :(得分:0)

我认为我们无法设计用户界面的原因是因为我们是完美主义者并且只能决定什么时候足够好。我知道我个人无法忍受设计用户界面,因为我总是怀疑自己,并说,“不,这还不够好。”

答案 49 :(得分:0)

程序员一般都习惯于UI设计。有些设计师专注于可用性和UI设计,在开发商业软件/网站/娱乐等时应该受到尊重。

大多数程序员面临的问题是他们无法超越自己的鼻子并意识到什么使事情变得更容易理解和消化。

最好的UI设计原则之一是始终拥有一个设计简单且可供目标访问的界面。

一个很好的例子就是电梯。通常,您可以按下按钮来打开/关闭门以及穿过建筑物的地板。你能想象如果你有旋钮和开关你必须翻转从1楼到2楼吗?如果您必须将面板向后滑动以使用三个彩色键来访问三个按键开关,您必须按特定顺序转到某个楼层,该怎么办?

您可以快速了解错误界面的难度以及良好界面的简单性和可用性。

答案 50 :(得分:0)

  

“别人做了什么来消除他们的   这方面的不足之处?“    - Chris Ballance

  1. 与您可以找到的最少计算机的最终用户合作。(一个新的,从未见过您的软件)。
  2. 从他们那里得到关于是什么让他们感到厌烦的反馈。
  3. 修复这些问题,将其带到另一台计算机 - 破解用户,
  4. 再次重复此过程..
  5. 如果有足够的新鲜 - 非自由用户可以使用您的产品,您就知道自己已经完成了自己的工作。

    (此外,您的软件可能看起来很像微软,你可能不喜欢使用它......)

    但这不是重点!关键是最终用户可以使用它,并享受使用它!


    不是开发人员!


    另请阅读this post我发现它在这个领域很有用。它基本上表明你应该屈服于用户似乎想要的东西。

    换句话说......

    您必须查看用户已在尝试做什么......

    人行道和学生

    有一条小路是由我上大学的校园里的学生走来走去创造的。当学校注意到这条小路时,他们竖起了一条人们已经走过的围栏。学校做错了。 你想建立一条人行道,学生们已经走了!

    视频商店和Netflix

    再举一个例子,想想最近的视频商店历史:很久以前有很多视频商店:Block Buster Video等等......人们对那些视频商店不喜欢什么?当然是晚费。 所以Netflix出现并取消了滞纳金,因为它更多的是客户/最终用户想要的。

    现在Block Buster和所有其他收费的视频商店一起破产。

    这样做更难吗?关闭你的大脑,给人们他们想要的东西?当然这是......它正在弯曲你的意志......这总是比较困难,但最终它达到了为最终用户提供他们想要的目标。

答案 51 :(得分:0)

我为社交圈外的人设计了一个程序并观察了他们的行为。在这样做的过程中,我不再受到朋友的偏见,以及我自己的骄傲和自负。在改进应用程序时,我对设计问题变得更加谦虚和敏感。我了解了面向任务的设计和简单性的重要性。我了解了拥有太多功能的成本。有了经验,你也一样。

我强烈推荐一些参考文献:

  • joelonsoftware jef raskin的“人性化界面”
  • 罗宾威廉的“非设计师设计指南”
  • 关于alistapart的大部分ui文章
  • jwz关于编程的博客
  • 苹果人机界面指南

我强烈建议你忽略一些参考和哲学:

  • “主题”
  • 一般桌面应用程序,除非您需要驱动程序/文件系统访问
  • “越多越好”的想法

答案 52 :(得分:0)

我首先要说的是,我对这个问题所表达的人有类似的不足。尽管如此,我认为任何人都会做任何事情的唯一原因是因为:

  • 他们不理解它,从未研究过如何以及为什么要这样做的理论
  • 他们从未练习过足以成为专家

所以我的建议是首先获得描述主题并研究它们的书籍和网页。这里有很多好的答案,我会在列表中添加Tog On Interface。另请查看那些considered great的用户界面,例如Mac,IPhone和Google。

第二步是开始创建UI。这听起来很简单,但如果这不是您工作描述的一部分,您可能需要在自己的时间执行此操作。作为UI开发人员参与Web开发项目。也许它是你自己的项目或其他人的,但是擅长创建网页可以为你提供所需的体验,而且不应该很难做到。祝好运!

答案 53 :(得分:0)

在用户反馈的注释中,Silverback(http://silverbackapp.com/)是一个很棒的工具,如果你在Mac上。我建议创建一个要做的事情列表(找到这部电影,观看预告片,与这个演员一起找这部电影,购买它等)并让用户坐在那里然后下去。

最重要的是不告诉他们如何去做,而是看看他们如何完成任务(对于第二个场景,他们是按演员浏览还是他们按字母顺序找到场景?)。您可以从贵公司的非技术人员开始,然后上Craigslist或上街并随机支付人员进行测试。

答案 54 :(得分:0)

我相信所有CS程序员都能够生成良好的可用设计,因为可用性设计要求开发人员思考某些路径和规则。然而,对于一些程序员来说,开发一个好的“有吸引力”的设计几乎是不可能的。这并不意味着两者都是无情的联系在一起。就像莫扎特能够写出一段美妙的音乐,而不是非常擅长足球。

答案 55 :(得分:0)

没有其他人建议的东西,但是对你来说非常有帮助的是在人因工程学中修读一门课程(通常是研究生水平)。如果你不想参加课程,至少去找教科书并阅读。

答案 56 :(得分:0)

ui设计和软件开发工作在大脑的两个不同方面。它不是一个设计师吮吸开发,反之亦然,只是他们试图用大脑的错误方面来做。没有认真的人会不同意。

答案 57 :(得分:0)

我认为部分原因是因为UI设计和程序设计经常会有相互冲突的目标。当我编程时,我经常会想“最简单的方法是什么?”。在设计UI时,最简单的方法并不总是最友好的用户。如果你同时做到这两点,你可能会选择最简单的实施方式,这会对用户友好性产生负面影响。

我也相信程序员与产品太接近,无法从用户的角度来看待它。对编程应用程序的人来说似乎非常容易和直观的可能不是用户。获取用户的输入是必要的。

UI设计也不总是对或错。不同的人会以不同的方式评估UI。例如,有些人讨厌Office中新的“Ribbon”用户界面,有些人喜欢它。有些人认为Apple的OSX UI很棒,有些人不关心它,发现很难使用。无论你想出什么用户界面,你都会有不喜欢它的人。

答案 58 :(得分:0)

因为它具有 不同的 技能。成为网页设计师所需的技能与成为程序员所需的技能不同。是的,很少有技能可能会重叠,比如HTML,CSS,Javascript,但本质上程序员并不了解什么使网页设计成为一个好的网页设计,反之亦然。

RWendi

答案 59 :(得分:0)

因为他们通常不是UI设计师。它是一种不同的技能。多数民众赞成。

答案 60 :(得分:0)

也许是因为某些开发人员从Dos开始,并继续部分工作在命令行操作系统上 或者因为我们中的一些人编写软件,因为计算机有一些正常的逻辑,而不是像人类一样。 : - )

答案 61 :(得分:0)

当开发人员认为用户界面时,他们通常认为他们可以用于此任务或此任务的完美小部件(通过小部件我的意思是文本区域,组合框,所以交互式Ajax搜索字段......)。用户界面,尤其是人机交互,应该考虑在较低的水平。将关于UI的反思分为4个步骤很有意思:

  • 任务和概念模型:从开发人员的角度来看,这是最难理解的。您必须从您的反思中抽象出您对未来平台的所有想法,即您可以使用的语言。 [Paterno, 97]是此域中的引用。您将任务定义为树,其中任务具有子任务。 这是导出任务的示例。

  • 然后定义抽象UI:这是关于组任务和子任务到工作区。
  • 具体用户界面:您现在可以决定哪些交互者使用。你现在应该考虑平台(大屏幕,PDA,手机......)。这是关键。您的任务模型和抽象UI可以在多个平台之间进行分解。
  • 最终用户界面,用选定的编程语言实现。

答案 62 :(得分:0)

  

我们可以做些什么来重新训练我们的大脑,以便更有效地设计令人愉悦和有用的表现层?

是。观看试图使用您的软件的用户并没有帮助他们。也称为可用性测试。

可用性测试的基本思想是,您将具有类似背景的人带到目标受众,他们之前没有见过您的软件,并要求他们执行一系列典型的任务。理想情况下,他们应该试着大声说出他们的想法,让你更深入地了解他们的思维过程。然后你看他们做了什么。至关重要的是,无论多么不可抗拒的冲动,你都不会帮助他们。结果可能非常令人惊讶且极具启发性。使用单向镜,摄像机等可用性测试非常有用,但实际上并不是获得大部分好处所必需的。有关如何在Krug’s excellent book Don’t make me think: a common sense guide to web usability中执行可用性测试的详细说明。他的大多数建议同样适用于测试桌面应用程序。

答案 63 :(得分:0)

为什么某些开发人员的UI设计如此困难?

这有点像问为什么篮球对于足球运动员来说很难。

答案 64 :(得分:0)

易。

开发人员不是设计师。他们没有训练或试图学习设计,那么他们为什么要擅长UI设计呢?它几乎与说“为什么对一些开发人员如此难以解决?”

UI设计本质上是设计和设计是规则的直观表示。善于设计意味着你理解为什么某些东西应该以某种方式看起来,行为和行为(例如为什么链接应该突出显示或为什么标题应该在页面的顶部)。

设计与开发是两种完全不同的野兽,但都需要背景知识和实际工作。如果你不愿意花时间研究其中一门课程,那么无论你把你的某个课程/网站搞得多么好看,你根本就不会很擅长它。