为什么优秀的UI设计对某些开发者来说如此困难?

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

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

53064 次浏览

我坚持的主要经验法则是,永远不要同时做两件事。如果我正在处理后端代码,我将完成这一工作,休息一下,然后带着我的UI帽子返回。如果你在编写代码时尝试使用它,你将以错误的心态处理它,结果会得到一些糟糕的界面。

我认为同时成为一个优秀的后端开发人员和一个优秀的UI设计师是绝对可能的,你只需要在这方面工作,做一些关于这个主题的阅读和研究(从Miller的#7到Nielsen的档案),并确保你理解为什么 UI设计是最重要的。

我不认为这是一个需要创造性的案例,而是像后端开发一样,这是一个非常有方法,非常结构化的事情,需要学习。正是人们对ui的“创造性”创造了一些最大的可用性怪物……我的意思是,首先看看100%使用Flash的网站……

Krug的书真的很好…一定要读一读,特别是如果你要为网络设计的话。

我尽量与设计相关的网站和文本保持联系。我还发现罗宾·威廉姆斯的书非设计师的设计书在这些研究中非常有趣。

我相信设计和可用性是软件工程中非常重要的一部分,我们应该更多地学习这方面的知识,不要再为我们不应该做设计找借口了。

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

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

我敢打赌,通过学习和勤奋,任何人都可以在界面设计方面做得更好。这并不意味着你会成为一流的美工或设计师。

我认为改进总是有可能的。

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

当你看到别人第一次使用你的软件时,你会惊奇地发现

许多开发人员认为,因为他们会写代码,他们就可以做所有的事情。设计界面是一种完全不同的技能,在我上大学的时候根本没有教过这门技能。这不是与生俱来的。

另一本好书是唐纳德·诺曼的日常事物的设计

归根结底,这真的是关于同理心——你能站在用户的角度考虑问题吗?

当然,有一件事是有帮助的,那就是“吃你自己的狗粮”——以真正的用户身份使用你的应用程序,看看什么是令人讨厌的。

另一个好主意是找到一种方法来观察使用应用程序的真实用户,这可能是一个复杂的可用性实验室,有单向反射镜、屏幕视频捕捉、用户身上的摄像机等,也可能是简单的纸上原型,使用下一个碰巧走过大厅的人。

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

如果你读了很多关于设计的书,你很容易就会被阴影和圆角等问题所困扰。那不是重要的东西。简单性和可发现性非常重要。

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

  • 通信模型。UI是向用户解释心智模型的叙述。这个模型可以是一个业务对象,一组关系,等等。视觉突出、空间布置和工作流程顺序都在与用户交流这个模型中起作用。例如,某种类型的列表与另一种列表意味着不同的东西,以及列表中内容与模型其余部分的关系。一般来说,我发现最好一次只传达一个模型。程序员经常尝试在同一个UI空间中交流多个模型,或者多个模型的一部分。

  • <强> < / >强一致性。重用流行的UI比喻有很大帮助。内部一致性也非常重要。

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

  • 了解你的听众。如果你的用户会反复做同样的活动,他们很快就会成为这些任务的高级用户,并对降低初始门槛的尝试感到沮丧。如果你的用户不频繁地做许多不同类型的活动,最好确保UI一直在帮助他们。

设计和美学之间有着巨大的差异,它们经常被混淆。

一个漂亮的UI需要艺术或至少是美学技能,包括我自己在内的许多人都无法做到这一点。不幸的是,就像我们在许多重量级的基于flash的api中看到的那样,这是不够的,并且不能使UI可用。

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

我们中的许多人也是“核心程序员”,倾向于将ui视为外观,而不是可以成就或破坏项目成功的因素。

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

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

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

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

我知道微软和他们自己的指导方针不太一致,但我发现阅读他们的Windows设计指导方针真的对我有帮助。我在我的网站在这里上有一份,只要向下滚动一点Vista用户体验指南。它在颜色、间距、布局等方面帮助了我。

duffymo提醒了我为什么:许多程序员认为“*设计”=“美术”。

好的UI设计绝对不具有艺术性。它遵循坚实的原则,如果你有时间做研究,可以用数据来支持。

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

我认为主要的问题与不同的才能或技能无关。主要的问题是,作为一名开发人员,您对应用程序是做什么的以及它是如何做的了解太多,并且您自动地从具有这些知识的人的角度来设计您的UI。

而用户通常一开始对应用程序一无所知,也不需要了解它的内部工作原理。

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

让我直接说:

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

大多数硬核开发人员实际上对他们软件的用户有同理心。他们有不知道用户如何思考,用户如何建立他们使用的软件模型,以及他们一般如何使用计算机。

这是一个典型的问题,当一个专家与一个外行碰撞:一个正常人怎么会如此愚蠢的不理解专家10年前理解的东西?

首先要承认的一个事实是,几乎所有有经验的开发者都难以掌握:

正常人对软件的概念和你有很大的不同。他们完全不懂编程。一个也没有。零。他们根本不在乎。他们甚至不认为他们需要关心。如果你强迫他们,他们会删除你的程序。

这对开发者来说是难以置信的残酷。他为自己生产的软件感到自豪。他喜欢每一个特征。他可以告诉你它背后的代码是如何工作的。也许他甚至发明了一种令人难以置信的聪明算法,使它比以前快了50%。

用户并不关心。

真是个白痴。

许多开发人员无法忍受与普通用户一起工作。他们因为缺乏技术知识而感到沮丧。这就是为什么大多数开发人员回避,认为用户一定是白痴。

事实并非如此。

如果一个软件开发人员买了一辆车,他希望它能平稳运行。他通常不关心轮胎压力,机械微调是重要的,使它运行那样。解析:句意:他是专家。如果他买了一辆没有微调功能的车,他就会把它退回去,再买一辆他想要的。

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

因为在那些他们不是专家的领域(有这么多),他们期望其他领域的专家已经考虑过使用他们产品或服务的普通人。

你能做些什么来补救呢?作为一名程序员,你越是硬核,你就越不容易接受普通用户的想法。它对你来说是陌生的,毫无头绪。你会想:我无法想象人们如何在缺乏知识的情况下使用计算机。但是他们可以。对于每个UI元素,都要考虑:它是必要的吗?它是否符合用户对我的工具的概念?我怎样才能让他明白呢?请阅读可用性方面的书籍,有很多好书。这也是一个完整的科学领域。

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

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

考虑以下几点;优秀的后端设计是基于任何优秀开发者都熟悉的原则和元素:

  • 低耦合

  • 高内聚

  • 架构模式

  • 行业最佳实践

好的后端设计通常是通过一系列交互产生的,基于测试或实际使用期间获得的可测量反馈,初始蓝图会逐渐改进。有时候,你需要对后端较小的方面进行原型设计,然后单独进行测试等等。

优秀的UI设计是基于以下合理的原则:

  • 可见性

  • 功能可见性

  • 反馈

  • 宽容

  • 简单

  • 一致性

  • 结构

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

设计UI所需的技能与设计后端是完全不同的,因此不要指望不先学习就能做出好的UI。然而,这两种活动的共同之处是设计过程。我相信只要花点时间学习,任何能设计好软件的人都有能力设计好UI。

我建议你选一门人机交互的课程,比如在MIT和耶鲁的网站上找一些在线资料:

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

优秀的前面作者:Thorsten79提出了软件开发专家和用户的话题,以及他们对软件的理解是如何不同的。人类学习专家区分了功能思维模式和结构思维模式。找到去朋友家的路是两者区别的一个很好的例子:

  • 第一种方法包括一套详细的指示:从高速公路的第一个出口,然后在100码后左转等。这是功能模型的一个例子:实现某个目标所需的具体步骤列表。函数模型易于使用,它们不需要太多思考,只需直接执行即可。显然,简单的做法是有代价的:它可能不是最有效的路线,任何例外情况(即交通改道)都很容易导致彻底失败。

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

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

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

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

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

无论如何,我仍然强烈建议参加一个正式的HCI课程。其中涉及到很多东西,比如启发式,源自格式塔心理学的原则,人类学习的方式等。

登陆Slashdot,阅读任何与苹果有关的文章的评论。你会发现很多人都在谈论苹果的产品没有什么特别之处,把iPod和iPhone的成功归因于人们想要赶时髦。他们通常会浏览功能列表,并指出他们所做的一切都是早期MP3播放器或智能手机所没有的。

还有一些人喜欢iPod和iPhone,因为它们可以简单、轻松地满足用户的需求,而不需要参考使用手册。它的界面非常直观、容易记忆和发现。我对MacOSX的用户界面不像以前的版本那么喜欢,我认为它们已经放弃了一些有用的东西,而倾向于浮夸,但iPod和iPhone是卓越设计的例子。

如果你属于第一个阵营,你不像一般人那样思考,因此你很可能会做出糟糕的用户界面,因为你分不清它们是好是坏。这并不是说你没有希望,而是说你必须明确地学习良好的界面设计原则,以及如何识别良好的UI(就像亚斯伯格症患者可能需要明确地学习社交技能一样)。显然,仅仅拥有一个好的UI并不意味着你就能够创造出一个优秀的UI;例如,我对文学的欣赏似乎没有延伸到(目前)写可出版的故事的能力。

所以,试着培养一种好的UI设计的感觉。这不仅仅延伸到软件领域。唐·诺曼的《日常事物的设计》是一本经典,还有其他的书。获取一些成功的UI设计的例子,并充分利用它们来感受其中的不同之处。认识到你可能不得不学习一种新的思考问题的方式,并享受它。

程序员通常不擅长UI设计。有些设计师专门从事可用性和UI设计,当涉及到开发商业软件/网站/娱乐等时,他们应该受到尊重。

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

最好的UI设计原则之一是始终将界面设计为简单且易于目标用户访问。

一个简单的例子就是电梯。一般来说,你按下按钮来打开/关闭门,以及穿越建筑物的楼层。你能想象如果你有旋钮和开关,你必须从一楼到二楼吗?如果你必须向后滑动一个面板来访问三个按键开关,你必须以特定的顺序转动三个彩色按键才能到达特定的楼层,那会怎么样呢?

你很快就会发现一个糟糕的界面是多么的困难,而一个好的界面是多么的简单和可用。

“从屏幕的两面进行设计”是程序员发现UI设计困难的一个非常简单但深刻的原因:程序员被训练成从边缘情况考虑问题,而UI设计师则被训练成从常见情况或用法考虑问题。

因此,从一个世界到另一个世界当然是困难的,如果其中一个的默认训练是完全相反的。

你提到了别让我想书。我强烈推荐你阅读这篇文章。

我相信所有CS程序员都有能力做出好的可用性设计,因为可用性设计要求开发人员按照特定的路径和规则进行思考。然而,对于一些程序员来说,开发一个好的“有吸引力的”设计几乎是不可能的。这并不意味着两者是不可避免地联系在一起的。这就像莫扎特能写出美妙的音乐,却不擅长足球。

我做了什么才能在UI设计方面做得更好?< br > 注意!< / >强

这就像当你在新闻上看到图表或电子公交标志时,你会想‘他们是怎么得到这些数据的?他们是用原始sql还是用LINQ?(或者你也可以在这里加入自己的极客好奇心)。

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

但是就像学习一门新的语言一样,如果你不全身心地投入进去,你就永远学不会它。

另一个答案我写:

学会观察,真正地观察你周围的世界。为什么我喜欢那个UI而讨厌这个UI ?为什么在这家餐厅的菜单上很难找到面食?我还没看那牌子上的字就知道是什么意思了。为什么呢?那本书的封面怎么这么难看?学会花时间思考为什么你会对各种视觉元素做出这样的反应,然后把它应用到你的工作中。

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

这是因为你忽略了UI设计的一部分。人类的大脑。为了理解如何设计UI,你必须理解人的思想如何与机器交互。我在明尼苏达大学上过一门关于这个话题的很棒的课程,是一位心理学教授教的。它被命名为“人机交互”。这描述了UI设计如此复杂的许多原因。

因为心理学是基于相关性而不是因果关系,你永远无法证明UI设计方法总是适用于任何给定的情况。你可以认为许多用户会发现某个特定的UI设计很吸引人或高效,但你不能证明它总是具有普遍性。

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

有几本关于这个主题的好书和课程可供选择(比如Bill Buxton的描绘用户体验和Edwin Hutchins的野外认知)。许多大学都开设了人机交互的研究生课程。

这个问题的总体答案在于如何教授个人计算机科学。这一切都是基于数学和逻辑,而不是基于用户体验。要做到这一点,你需要的不仅仅是一个普通的4年计算机科学学位(除非你的4年计算机科学学位副修心理学,并强调人机交互)。

UI设计与其说是科学,不如说是艺术,它需要你对用户的理解和与他们感同身受的能力。

这和整天对着电脑说话是完全不同的。

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

这里有一个小小的自我测试:看一下FamFamFam丝绸图标。考虑一下在您编写的上一个应用程序中选择哪个图标来表示各种功能。如果花超过十分钟的时间来做这件事让你的眼睛开始呆滞,那么UI设计可能不适合你。

我建议你从现在做UI的方式开始,不要关注可用性之类的东西。

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

现在想想这个:

一个设计师知道他已经达到了完美,不是当没有什么可以添加的时候,而是当没有什么可以删除的时候。 ——圣艾修伯里< / p >

并应用到你的设计中。

让我们把你的问题转过来

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

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

艾伦·库珀的“囚犯们在经营精神病院”的观点是,我们不能成功地采取两种观点——我们可以学会戴一顶帽子,但我们不能只是换帽子。

这一切都是关于练习,一些训练和回顾。但是大多数后端开发人员工作的环境中,优秀的ui设计并不真正受到管理层的重视。

在阅读了一些关于UI设计的文献之后,组织一些关于UI设计的代码dojo。

我知道,当我制作出一个糟糕的UI时,几乎总是因为我过于专注于它的特定部分。

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

在我检查了十几次之后,我就处于这样一种心态:我确切地知道我要做什么,也确切地知道我需要做什么才能让程序按我想要的做。我也和观看这个特定的作品功能本身,一遍又一遍,直到它“完成”。当我在测试时,我会快速浏览应用程序/菜单/工作流/其他内容。

用户的情况完全不同。他们没有把软件的这一部分看作一个独立的“块”。他们并不总是经常这样做,当他们经常这样做的时候,他们肯定不会经常独自做。他们不会像开发人员那样“跳过”过程的其余部分,只专注于这一部分。

重要的是试着看UI,然后思考“我应该用它做什么?”如果不清楚,说明你做错了。我们所处的情况是,我们知道软件需要什么输入,我们只是想办法获得这些输入。用户所处的情况是他们想要某种结果,他们想知道他们必须做什么才能得到这个结果。

用户自上而下地思考,而程序员在开始创建UI时通常是自下而上地思考。

我们(程序员)正在努力地思考如何创建一个数据模型来完成这项工作,并保存所需的数据等等。我们创建UI来整齐地映射到底层模型。以至于我们经常忘记观察我们的用户如何处理相同的任务,而没有进入他们的流程和思维方式。

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

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

如何解决?我认为一种方法是在向(潜在的)用户展示任何东西之前,实际地询问他们期望程序如何工作。永远不要给他们任何关于我们将如何实现某个功能的提示。与他们一起在纸上创建UI原型,让他们告诉你他们的期望和需求。不要认为任何事情都是理所当然的。

掌机的设计更加自上而下:

在开始开发 飞行员,据说是霍金斯带的 一块木头,大小 潜在的飞行员,在他口袋里 的一周。(从本文中) < / p >

他会在木头上模拟要做什么,而不会考虑如何将其实现为代码。每次有了新想法,他就在那块木头上“试试”。

当然,你需要一些指导方针来处理你想到的一些想法,也许不是所有的想法都需要解决,即使我们技术上可以……

参见这里的要点1(消除选项)和要点3(承诺不足,超额交付)

关于用户反馈,如果你在Mac上,Silverback (http://silverbackapp.com/)是一个很好的工具。我建议创建一个要做的事情列表(找到这部电影,观看预告片,找到这个演员的这部电影,购买它,等等),让用户坐在那里,沿着列表走。

最重要的是不要告诉他们怎么做,而是看看他们如何完成任务(对于第二个场景,他们是按角色浏览还是按字母顺序查找场景?)你可以从你公司里不懂技术的人开始,然后到Craigslist网站或街上随便找个人来测试。

首先,我要说的是,我也有和问题中提到的相似的缺陷。然而,我认为人们做任何事情都很糟糕的唯一原因是:

  • 他们不理解,也从来没有研究过如何和为什么这样做的理论
  • 他们从来没有足够的练习成为专家

所以我的建议是,首先要找到你需要的描述这门学科的书籍和网页,然后学习它们。这里有很多很好的答案,我会把Tog On界面添加到列表中。还要看看那些被认为是伟大的的ui,比如Mac、IPhone和谷歌。

第二步是开始创建ui。这听起来很简单,但如果这不是你的工作描述的一部分,你可能需要在自己的时间做这件事。作为UI开发人员参与web开发项目。也许这是你自己的项目或别人的项目,但擅长创建网页可以给你你所需要的经验,不应该很难做到。好运!

"其他人做了什么来消除他们的 这方面的不足?“
-克里斯·巴兰斯

  1. 与你能找到的最少的电脑储蓄终端用户一起工作。
    (一个新的,从来没有见过你的软件).
  2. 从他们那里得到反馈,让他们知道是什么让他们觉得糟糕
  3. 解决这些问题,把它交给另一个不懂电脑的用户,
  4. 重复这个过程。

当有足够多的新用户可以使用你的产品时,你就知道你已经完成了你的工作。

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

但这不是重点!关键是最终用户可以使用它,并且喜欢使用它!


不是开发者!

< p >
也读这篇文章,我发现它在这个领域很有帮助。它基本上是说,你应该向用户似乎想要的东西让步

换句话说……

你必须看看用户已经尝试要做什么…

人行道和学生

在我上大学的那个校园里,有一条学生们在上下课时留下的小径。当学校注意到这条小道时,他们在人们已经走过的地方竖起了栅栏。学校做错了。你想在学生们已经步行的地方建一条人行道!

视频商店和Netflix

再举一个例子,想想最近的音像店历史:很久以前有很多音像店:Block Buster video等等……人们不喜欢那些音像店的什么地方?当然是滞纳金。所以Netflix出现了,取消了滞纳金,因为它更符合客户/最终用户的需求。

现在,“积木老兄”和其他收费音像店一样,都要破产了。

这个更难做吗?让你的大脑停止运转,给人们他们想要的?当然是……这是让你的意志屈从于他们……这总是比较困难,但最终实现的目标是为最终用户提供他们想要的东西。

我们是否可以做些什么来重新训练我们的大脑,使其更有效地设计出令人愉悦和有用的演示层?

是的。观察那些试图使用你的软件的用户,不要帮助他们。也被称为可用性测试。

可用性测试的基本思想是,你找一个与你的目标受众有相似背景的人,他们之前没有见过你的软件,然后让他们执行一系列典型的任务。理想情况下,他们应该试着大声说出他们的想法,让你更深入地了解他们的思维过程。然后你观察他们做什么。重要的是,你不帮助他们,无论多么不可抗拒的冲动。结果可能是相当令人惊讶和高度揭示。可用性测试可以使用单面镜、摄像机等,但这并不是获得大多数好处的必要条件。在Krug的《Don’t make me think》是一本关于网络可用性的常识指南中有一个关于如何进行可用性测试的很好的描述。他的大部分建议同样适用于测试桌面应用程序。

我认为我们不能设计ui的原因是因为我们是完美主义者,不能决定什么时候足够好才是足够好。我知道我个人无法忍受UI设计,因为我总是怀疑自己,说:“不,那还不够好。”

我认为这是因为一个好的UI是不符合逻辑的。好的UI是直观的。

软件开发人员通常在“直观”方面表现不佳

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

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

实际上,很难确定程序员认为界面交互是什么,而不是通信过程,但问题可能是它根本没有被认为是任何东西。

已经有很多好的评论了,所以我不确定还有什么可以补充的。 但仍然…< / p >
  • 为什么开发者希望能够设计出优秀的UI?
  • 他在那个领域受过多少训练?
  • 他读了多少书?
  • 他在这几年里设计了多少东西?
  • 他有机会看到用户的反应吗?
我们不期望一个随机的“水管工乔”能够写出好的代码。 那么,为什么我们要期望随机的“程序员乔”设计出优秀的UI呢?< / p >

移情有帮助。将UI设计和编程分离是有帮助的。可用性测试有帮助。

但是UI设计是一门需要学习和实践的手艺。

十年前,我在UI设计方面真的很在行。我想这些年来帮助我变得更好的是谦卑追求完美的健康组合。

底线:永远不要对你过去或现在的成就过于满足。从自己和他人的错误中学习。

UI设计

对于这个问题:

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

试着问相反的问题:

为什么编程对大多数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世界里。

这里有一些具体的事情你可以学习。不要什么都学。如果你了解以下所有内容,你就可以称自己为交互设计师或信息架构师。从清单顶部的事情开始。专注于特定的概念和技能。然后向下延伸。如果你真的喜欢这些东西,就把它当做职业道路吧。许多开发人员转向管理,但用户体验设计是另一种选择。

为什么UI设计很难

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

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

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

  • 开发人员使其发挥作用。他们在你的TiVo,你的iPhone,你最喜欢的网站等上实现功能。他们确保它确实做了它应该做的事情。他们的首要任务是让它发挥作用。
  • 设计师让人们love it。他们想出了如何与之交互,它应该是什么样子,以及它应该是什么感觉。他们设计使用应用程序、网站和设备的体验。他们的首要任务是让你爱上开发者所创造的内容。这就是用户体验的含义,它与品牌体验不同。

此外,编程和设计需要不同的心态,而不仅仅是不同的知识和不同的技能。优秀的UI设计需要两种心态、两种知识基础和两种技能。而掌握其中任何一种都需要数年时间。

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

没有人建议过,但对你有很大帮助的是参加人因工程学课程(通常是研究生水平)。如果你不想选这门课,至少去找课本读一遍。

我用的是我所谓的祖母测试。

  • 如果你亲爱的老祖母不会用它,那就有问题了。
  • 假设她知道这个程序是关于什么的,例如,知道如何做税务,并试图使用Quicken。

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

我会试着找一些用户界面专家,看看他们的学习建议是什么。除非你设计的是像谷歌这样极简主义的东西,否则如果这是一个重要的项目,你最好雇佣那些研究过UI艺术的人。

也就是说,如果你正在设计一款非常实用的应用,我认为你可以试着专注于界面的简单性和清晰度——我认为这至少是谷歌成功(以及堆栈溢出)的一半关键——即它是直观的,使用起来很愉快。

就像音乐: 有时人们在技术上可能是伟大的音乐家,但不是艺术家。我的经验法则是始终只向用户提供他们当时需要的UI。我注意到许多后端开发人员在制作UI时充斥着各种可以想象到的选项。虽然这些类型的人喜欢先了解所有的细节,然后慢慢忽略他们不需要的东西,但这对大多数最终用户来说并不适用

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

我还认为程序员太接近产品,无法从用户的角度来看待它。对编程人员来说非常容易和直观的东西对用户来说可能并不容易。获得用户的输入是必要的。

UI设计也不是总是正确或错误的。不同的人对UI的评价不同。例如,有些人讨厌Office中的新“Ribbon”UI,有些人喜欢它。有些人认为苹果的OSX UI很棒,有些人不喜欢它,觉得它很难使用。不管你设计出什么样的UI,总会有人不喜欢它。

一件容易的事。

开发人员不是设计师。他们没有接受过设计方面的培训或尝试学习,所以他们为什么要擅长UI设计之类的东西呢?这几乎等同于在说“为什么会计对某些开发者来说如此困难?”

UI设计本质上是设计,而设计是规则的视觉表现。擅长设计意味着你理解为什么某些东西应该以某种方式显示、运行和表现(例如,为什么链接应该突出显示,或者为什么标题应该在页面顶部)。

设计和开发是两种完全不同的东西,但都需要背景知识和实际工作。如果你不愿意花时间在其中一个科目上,那么你就不会很擅长它,不管你的一个程序/网站看起来有多好。

开发者不一定擅长UI设计,就像他们不一定擅长编织一样;这很难,需要练习,让别人先教你怎么做也无妨。

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

要改进,只要看看现有的网站。除了已经推荐的书之外,你可能还想看看Robin Williams的好书《the Non-designers Design book》(净化亚马逊链接)。

通过查看禅宗花园上的各种提交,看看在视觉设计中有什么可能。

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

但至少我们可以嘲笑他们的尝试。顺便说一句,感谢OK/Cancel的搞笑漫画,感谢Joel把它放在你的书“The Best Software Writing I”(净化亚马逊链接)中。

为什么UI设计对某些开发者来说如此困难?

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

Neal Stephenson的最初是命令行是一本好书,它提供了很多关于用户界面及其重要性的想法。不是每个人都需要GUI,只是很多人不编程。这就像迪士尼世界的动物王国和实际的亚马逊之间的区别。

用户界面不像一层薄薄的油漆,是事后才可以涂上去的。它需要从一开始就存在,并基于真正的研究。当然,有大量可用性研究可用。它不仅需要在一开始就存在,它还需要构成你制作软件的核心原因:世界上存在一些差距,一些问题,它需要变得更可用和更有效。

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

在编写每一行代码之前,您应该先检查界面的纸质版本,并在真人身上进行测试。这有点奇怪和愚蠢,它最适合孩子们,有人扮演“电脑”。

界面需要利用我们自然的认知能力。穴居人会怎么使用你的程序?例如,我们已经进化到非常擅长追踪移动的物体。这就是为什么使用物理模拟的界面,比如iphone,比即时发生变化的界面效果更好。

我们擅长某些类型的抽象,但不擅长其他类型的抽象。作为程序员,我们被训练做心理体操和后空翻来理解一些最奇怪的抽象概念。例如,我们知道一系列神秘的文本可以表示并被翻译成金属盘上的电磁状态模式,当被精心设计的设备遇到时,会在电子电路上以光速发生一系列看不见的事件,这些事件可以被引导产生有用的结果。这是一件非常不自然的事情。要知道,虽然这对我们来说是一个完全合理的解释,但在外界看来,这就像我们在写难以理解的咒语,召唤看不见的有知觉的灵魂来执行我们的命令。

普通人能理解的抽象概念包括地图、图表和符号。小心符号,因为符号是一种非常脆弱的人类概念,需要有意识的精神努力来解码,直到学会符号。

使用符号的诀窍在于,符号和它所代表的事物之间必须有明确的关系。它所代表的东西要么必须是一个名词,在这种情况下,符号应该看起来非常像它所代表的东西。如果一个符号代表一个更抽象的概念,那就必须事先解释清楚。在msword或photoshop的工具栏中看到不可思议的未标记的图标,以及它们所代表的抽象概念。必须知道photoshop中的裁剪工具图标的意思是裁剪工具。它甚至必须理解CROP的含义。这些是正确使用该软件的先决条件。这就引出了一个重要的问题,当心那些假定的知识。

我们大约在4岁左右才能获得理解地图的能力。我记得我曾经在什么地方读到过,黑猩猩在六七岁左右获得了理解地图的能力。

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

有很多书。我读过的两本,因此可以推荐给你,一本是唐纳德·诺曼的《日常事物的设计》,另一本是杰夫·拉斯金的《人机界面》。

我还推荐一门心理学课程。《The Design of Every day Things》也谈到了这点。许多界面的失败是因为开发者对心理学的“民间理解”。这类似于“民间物理学”。运动中的物体保持运动状态对大多数人来说没有任何意义。“你必须不断地推动它,才能让它保持运动!”物理学新手认为。用户测试对大多数开发人员来说没有意义。这位心理学新手认为:“你只要问用户他们想要什么,这就足够了!”

我推荐菲利普·津巴多主持的PBS系列纪录片《发现心理学》。如果做不到,那就找一本好的物理教科书。贵的那种。不是你在Borders书店里找到的低级小说自助废话,而是你只能在大学图书馆里找到的厚精装书。这是一个必要的基础。没有它,你也可以做出好的设计,但你只能凭直觉理解正在发生的事情。读一些好书会给你一个好的视角。

当开发人员考虑UI时,他们通常会想到他们可以用于这个或这个任务的完美小部件(这里的小部件指的是文本区域、组合框、交互式Ajax搜索字段……)UI,尤其是HCI,应该在较低的层次上考虑。将关于UI的反思分为4个步骤是很有趣的:

    任务和概念模型:从开发人员的角度来看,这是最难以理解的。你必须从反思中抽象出你对未来平台的所有想法,以及你可以使用的语言。[帕特诺97]是该域中的引用。将任务定义为树,其中任务有子任务。 下面是一个导出任务的例子

  • 然后定义抽象UI:这是关于将任务和子任务分组到工作空间。
  • 具体的UI:你现在可以决定使用哪个交互器。现在您应该考虑平台(大屏幕、PDA、移动电话……)。这是钥匙。您的任务模型和抽象UI可以在多个平台中分解。
  • 最后的UI,用选定的编程语言实现。

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

因为他们通常不是UI设计师。这是一种不同的技能。这是它。

因为这是一套< em > < / em >不同的技能。成为网页设计师所需要的技能与成为程序员所需要的技能是不一样的。是的,很少有技能可能是重叠的,比如HTML, CSS, Javascript,但本质上程序员不知道是什么让一个网页设计成为一个好的网页设计,反之亦然。

RWendi

UI设计是一种完全不同的技能。它与视觉艺术密切相关——能够欣赏和创造视觉对称和美。不管出于什么原因,通常程序员都不擅长视觉艺术。我知道有例外,但作为一般规则,这是成立的。

所以真的(除非你是这条奇怪规则的例外)——这应该像处理其他你没有天赋的领域一样。你应该评估一下自己是否能和现有的技能很好地相处——或者甚至可以在有机会的时候花点精力来改进。然而,你最好在自己擅长的领域发展,也许可以寻求在你所不擅长的领域与高手合作。

Marcus Buckingham写的《现在,发现你的优势》是一本很好的书。这本书很容易读。

UI设计和软件开发需要大脑的两个半球。这并不是说设计师在开发方面很糟糕,反之亦然,只是他们试图用错误的大脑来做。任何严肃的人都不会反对。

“好的ui设计”实际上是两个问题:

  1. 获得正确的设计
  2. 正确的设计

两者都是难题。根据我的经验,这两件事应该平行探索,以避免在项目后期得到丑陋的惊喜(“为什么我们性感的拖放在IE8中非常慢??”你说它无法修复是什么意思??”)

得到正确的设计你将不得不探索可能性。书籍可以引导你尝试对你的情况最有意义的事情-经验当然更好。而且你绝对需要来自真实用户的反馈——否则你怎么能发现设计已经是正确的?(当然不能说..继续阅读!)

“正确设计”然后是下一个问题,因为它意味着你发现合适的设计必须实现。

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


为了更清楚地回答你的问题:

为什么好的UI设计对某些人来说如此困难 猛击< / p >

对于硬核开发人员来说,一个大问题是,他们对软件如何工作的理解与用户认为它如何工作的理解是非常不同的(例如,URL“www.stackoverflow.com”应该写成“com.stackoverflow.com”,如果你知道DNS如何工作的话。但试着销售一个浏览器,它期望url:))。

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

如果你读过《为什么软件很糟糕》这本书,你就会看到Platt的答案,这是一个简单的答案:

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

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

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

吃自己的狗粮实际上并不是最好的方式。缺乏对用户关注的关注,虽然这是事实,但也不是故事的全部。同样,随着您的专业知识的增长,您也会逐渐远离正常的用户关注点。我认识的大多数开发人员都想在开发解决问题的软件方面做得很好。

这种脱节发生在想象力的失败。我们人类没有能力思考所有的可能性和组合。当然,我们试图用“更好的”方法来克服这个问题。

我发现唯一有效的方法就是让自己置身于接收用户反馈的火线上。通过这种方式,我了解到我正在解决的问题,不仅仅是一次,而是在用户使用我的软件的过程中持续不断地进行。

这不是一个简单的解决方案。你不仅要成为一名优秀的程序员,还要擅长X,因为X是你试图解决的任何问题。通过擅长X,你可以获得必要的经验来理解可能性和局限性。你可以开始在你的代码中考虑到这一点,从而在你提供的功能和UI设计中产生更精致的软件。

这不是重新训练你的大脑,而是获得有效解决问题所需的经验。如果你要做的是像Stack Overflow这样的全新游戏,你就必须负责用户反馈才能获得游戏体验。

为你的母亲设计。

部分原因在于,UI设计比看起来要难得多,就像编程比设计师看起来要难得多一样。这两个人对完全不同的事情的担忧程度大不相同,而这一点,除了所需的方法和技能明显不同之外,导致他们关注彼此看不见的问题。

我发现,在没有任何视觉工具的情况下,向别人描述我的应用程序以及如何使用它是很有帮助的。它帮助你专注于真正必要和重要的事情,并反馈给别人可以很快理解的东西。我甚至可以在我有一行代码之前就做到这一点,所以这是非常便宜的,不需要任何艺术技能。另一个好处是,用语言描述应用程序可以让我的大脑在编码时处于休眠状态的部分工作起来,我可以在说话时开始“看到”应用程序工作(或不工作)。

“我们能做些什么来重新训练我们的大脑,让它更有效地设计出令人愉悦、有用的展示层吗?”

是的——使用接口驱动的架构。然后基于用户流程设计你的编程逻辑和数据库。如果你将中间层和后端设计成服务前端的结构,那么你将拥有一个以用户为中心的应用程序。

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

我强烈推荐一些参考资料:

  • Joelonsoftware杰夫·拉斯金的“人性化界面”
  • 罗宾·威廉的《非设计师设计指南》
  • 大多数UI文章都在alistapart上
  • Jwz关于编程的博客
  • 苹果人机界面指南

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

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

原因有很多。

(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专家也没有技术,开发者也没有机会。 他认为这在他的头脑中是清楚的。但是它在纸上都不清楚,更不用说在软件实现中了

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

无论你怎么做(上面有一些很棒的观点),它真的帮助了我,一旦我接受了没有这样的事情作为直觉....

我能听到地平线上争论的隆隆声……我来解释一下。

直觉的:基于一种无意识的方法或感觉,使用自己感觉正确或真实的东西。

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

想想看:孩子们试图打开门,不是因为他们“知道”门把手是如何工作的,而是因为他们看过别人这样做……他们经常把旋钮转错方向,或者拉得太快。他们必须学会如何使用门把手。然后,这一知识被应用到不同但相似的例子中:打开窗户,打开抽屉,打开几乎任何有大把手的大东西。

即使是对我们来说很直观的简单事情,对来自其他文化的人来说也完全不是直观的。如果有人把他们的手臂伸出在他们面前,并放弃他们的手在手腕上,同时保持手臂静止....他们放弃你了吗?可能吧,除非你在日本。在那里,这个手势可以表示“过来”。那么谁是对的呢?当然,两者都有各自的背景。但如果你两个都去过,你就需要了解它们……UI设计。

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

看看苹果的iPhone吧。即使你讨厌它,你也必须尊重它所付出的心血。它完美吗?当然不是。随着时间的推移,物体感知的“直觉性”可能会增长,甚至完全消失。

为例。大多数人都知道,一条顶部和底部有两排孔的黑色带子看起来像一条薄膜带……真的是这样吗?

问问普通9岁或10岁的孩子,他们是怎么想的。你可能会感到惊讶,现在有多少孩子很难把它认出来是电影连环画,即使它仍然被用来代表好莱坞,或任何与电影有关的东西。过去20年里,大多数电影都是用数字技术拍摄的。我们最后一次拿着照片或胶片是什么时候?

所以,对我来说,这一切都归结为:了解你的受众,不断研究,以跟上“直观”事物的趋势和变化,瞄准你的主要用户,尽量不要为了支持高级用户而惩罚没有经验的用户,或者为了帮助新手而减慢高级用户的速度。

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

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

我只是瞄准钟形曲线中最胖的部分,并试图获得尽可能多的人,但意识到我永远不会取悦所有人....

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

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