有些人在UI设计的柔性方面(尤其是我自己)遇到了困难。 "后端编码员"注定只能设计业务逻辑和数据层吗? 有没有什么方法可以让我们"重新训练大脑",以设计出更令人愉悦和有用的表现层?
同事们向我推荐了一些书,包括《网站设计》、《别让我思考》和《为什么软件糟糕》,但我想知道其他人在这个领域中如何消除他们的不足之处?
有些人在UI设计的柔性方面(尤其是我自己)遇到了困难。 "后端编码员"注定只能设计业务逻辑和数据层吗? 有没有什么方法可以让我们"重新训练大脑",以设计出更令人愉悦和有用的表现层?
同事们向我推荐了一些书,包括《网站设计》、《别让我思考》和《为什么软件糟糕》,但我想知道其他人在这个领域中如何消除他们的不足之处?
让我直接说吧:
改进并不是从制定指南开始,而是要转变您对软件思考的方式。
大多数技术专家实际上对使用他们软件的用户几乎没有任何同理心。他们毫不知情用户如何思考,用户如何建立他们使用的软件模型以及他们如何一般使用电脑。
当专家和普通人发生冲突时,这是典型的问题:普通人怎么会傻到无法理解专家十年前所理解的内容呢?
第一个需要承认的事实是,几乎所有经验丰富的开发者难以理解的是:
普通人对软件有着与你截然不同的概念。他们对编程一窍不通。没有。零。而且他们甚至不在意。他们甚至认为自己不必关心。如果你逼他们去关注,他们会删掉你的程序。
对于开发人员来说,这太残酷了。他为自己所制作的软件感到骄傲。他喜欢每一个功能。他可以告诉你代码背后的原理。也许他甚至发明了一个令人难以置信的聪明算法,使它的运行速度比以前快50%。
但用户并不在意。
多么蠢啊。
许多开发人员无法与普通用户一起工作。他们对用户技术知识的缺乏感到沮丧。这就是为什么大多数开发人员回避并认为用户必须是白痴的原因。
他们不是。
如果软件开发人员购买汽车,他期望它能平稳运行。通常,他不关心轮胎压力,机械微调对使它以那种方式运行很重要。在这里他不是专家。如果他购买的汽车没有进行过精细调整,他会退回去并购买符合他需求的那款。
许多软件开发人员喜欢电影,那些能激发他们想象力的好电影。但是他们并不擅长制作电影、制作视觉效果或编写好的电影剧本。大多数极客在表演方面非常糟糕,因为这涉及到展示复杂情绪,很少涉及分析。如果开发人员看了一部烂片,他就会注意到整体上的糟糕。极客甚至建立了IMDB来收集有关好电影和烂电影的信息,以便知道哪些值得看,哪些要避免。但是他们并不是电影制作的专家。如果一部电影烂,他们不会去看电影(或从BitTorrent下载)。关于这个问题:
为什么大多数开发者觉得UI设计很难?
试着问反向的问题:
为什么大多数UI设计师觉得编程很难?
编写UI和设计UI需要不同的技能和思维方式。UI设计对于大多数开发者来说很难,而不是只有一些开发者,就像编写代码对于大多数设计师来说很难,而不是只有一些设计师。
编写代码很难,设计也很难。很少有人两者都做得好。优秀的UI设计师很少编写代码。他们甚至可能不知道如何编写代码,但他们仍然是优秀的设计师。那么为什么好的开发者感到有责任负责UI设计呢?
了解更多UI设计方面的知识会让你成为更好的开发者,但这并不意味着你应该负责UI设计。对于设计师来说,反之亦然:了解如何编写代码会让他们成为更好的设计师,但这并不意味着他们应该负责编写UI的代码。
对于想要提高UI设计水平的开发者,我有三条基本建议:
这里有一些具体的东西可以学习。 不要试图学习所有内容。如果你知道下面的所有内容,你就可以称自己为交互设计师或信息架构师了。 从列表顶部附近开始学习。专注于特定的概念和技能。然后向下移动并拓展。如果你真的喜欢这些东西,考虑将它作为一个职业发展方向。许多开发人员转向管理,但UX设计是另一个选择。
好的UI设计很难,因为它涉及到两种非常不同的技能:
这就是这两个群体之间的根本区别——开发人员和设计师之间的区别:
此外,编程和设计需要不同的思维方式,不仅仅是不同的知识和技能。好的UI设计需要两种思维方式、两种知识基础和两种技能组合。而且要想掌握其中任意一种都需要多年时间。
开发人员应该预计UI设计很难,就像UI设计师应该预计编写代码很难一样。
真正帮助我改进我的设计的是找一个开发人员、质量保证员、项目经理或者任何路过的人来尝试特定的小部件或屏幕。
当你看别人第一次使用你的软件时,你会感到惊奇。
归根结底,这确实涉及到共情——你能否站在用户的角度考虑问题?
当然,有一件事可以帮助你,就是“吃自己的狗粮”——像一个真正的用户一样使用你的应用程序,并看看哪些地方令人烦恼。
另一个好主意是找到一种方法来观察一个真正的用户使用你的应用程序,这可能是像一个单向镜子的可用性实验室、屏幕录像捕获、用户视频相机等一样复杂,也可以像使用下一个经过走廊的人进行纸张原型设计一样简单。
如果其他所有方法都失败了,请记住,UI过于简单通常总比过于复杂要好。很容易就会想“哦,我知道如何解决这个问题,我只需添加一个复选框,让用户决定他们喜欢哪种模式。”结果你的UI变得过于复杂。选择一个默认模式,并将偏好设置作为高级配置选项。或者干脆不要添加它。
如果你阅读了很多关于设计的文章,你很容易被各种视觉效果所吸引,例如阴影和圆角等。但这不是重要的东西。简单和易发现才是重要的东西。
第一种方法包括一组详细的指令:走高速公路的第一个出口,然后在100码后左转等。这是一个功能模型的例子:列出实现某个目标所需的具体步骤。功能模型易于使用,不需要太多思考,只需直接执行。显然,简单性会带来一些代价:可能不是最有效的路线,任何异常情况(如交通改道)都可能导致完全失败。
应对任务的另一种方式是建立结构性的心理模型。在我们的例子中,这将是一个传达“任务对象”内部结构大量信息的地图。通过理解地图和我们和朋友家的相对位置,我们可以推断出功能模型(路线)。显然,这需要更多的努力,但是完成任务的可靠性要高得多,尽管可能会有偏差。
在UI中传达功能或结构模型(例如,向导与高级模式)之间的选择并不像从Thorsten79的帖子中看起来那么简单。高级和经常使用者可能会更喜欢结构模型,而偶尔或经验较少的用户则更喜欢功能模型。
谷歌地图就是一个很好的例子:他们包括功能和结构模型,许多卫星导航系统也是如此。
问题的另一个维度是,通过UI呈现的结构模型不应映射到软件的结构,而应自然地映射到手头任务或涉及的任务对象的结构。
这里的难点在于,许多开发人员将具有软件内部良好的结构模型,但只有用户任务的功能模型可以帮助软件完成。要构建良好的UI,需要理解任务/任务对象结构并将UI映射到该结构。
无论如何,我仍然强烈推荐参加正式的HCI课程。涉及到很多东西,例如启发式算法, 从格式塔心理学中得出的原则,人类学习的方式等。
我建议你先按照目前的方式完成所有UI,不要关注可用性和其他方面的内容。
alt文本 http://www.stricken.org/uploaded_images/WordToolbars-718376.jpg
现在想象一下:
设计师知道他已经达到完美状态,而不是没有可以添加的东西,而是没有可以拿走的东西。 — 圣埃克苏佩里
并将此应用于您的设计。
许多开发人员认为,因为他们能编写代码,所以能够胜任所有工作。设计界面是完全不同的技能,我在大学时根本没有学到。这不是一件自然而然发生的事情。
另一本好书是唐纳德·诺曼(Donald Norman)所著的《日常物品的设计》。
设计和美学有着巨大的差别,它们常常被混淆。一个漂亮的用户界面需要艺术技能或者至少需要具备审美能力,但这对于许多人(包括我自己)来说是无法达到的。然而,这并不足够,也不能让用户界面变得易用,正如我们在许多基于Flash的重量级API中所看到的。
要制作出易用的用户界面,需要理解人类如何与计算机交互,掌握一些心理学问题(例如Fitt定律、Hick定律)等其他主题。很少有计算机科学专业培养这方面的能力,我认识的很少有开发人员会选择阅读用户测试书籍而不是JUnit书籍等。
我们中的许多人也是“核心程序员”,倾向于将用户界面看做是外在的而不是可以决定我们项目成败的因素。
此外,大多数UI开发经验都非常令人沮丧。我们可以使用像旧版VB这样的玩具GUI构建器,但必须处理丑陋的胶水代码,或者使用让我们感到非常沮丧的API,比如试图在Swing中解决布局问题。
前往Slashdot,阅读任何与苹果有关的文章的评论。你会发现许多人谈论苹果产品并不特别,并将iPod和iPhone的成功归因于人们试图变得时尚或潮流。他们通常会列出功能清单,并指出它们做的事情早期MP3播放器或智能手机已经做过了。
然后还有一些人喜欢iPod和iPhone,因为它们可以简单易行地满足用户的需求,而无需参考手册。这些界面是极为直观、容易记忆和发现的。我不像之前版本那样喜欢MacOSX上的用户界面,我认为他们在追求华丽效果的同时放弃了一些实用性,但iPod和iPhone是出色设计的例子。
如果您属于第一类,您的思维方式不同于普通人,因此您可能会开发出糟糕的用户界面,因为您无法区分好的和坏的用户界面。这并不意味着您毫无希望,而是需要明确学习良好的界面设计原则以及如何识别好的用户界面(就像患有亚斯伯格综合症的人需要明确学习社交技巧一样)。显然,仅凭对良好用户界面的感觉并不能制作出好的用户界面;例如,我对文学的欣赏并不意味着我有能力(目前)写一篇值得发表的故事。
因此,尝试培养对良好用户界面设计的感觉。这扩展到不仅仅是软件。唐诺曼的《日常物品的设计》是一部经典之作,还有其他书籍可供选择。获取成功的用户界面设计示例,并通过演练,掌握它们的差异。认识到您可能需要学习一种新的思考方式,并享受它。
我坚持的主要原则是,永远不要同时尝试做两件事。如果我正在编写后端代码,我会完成这个任务,然后休息一下,再开始处理UI设计。如果你同时进行这两项工作,你会使用错误的心态来处理UI设计,结果可能会导致一些可怕的界面。
我认为成为一个优秀的后端开发人员和优秀的UI设计师是有可能的,但你需要努力学习并研究这个领域(从Miller #7到Nielsen的档案),并确保你理解为什么UI设计非常重要。
我认为这不是需要创意的问题,而是像后端开发一样,需要学习的一种非常有方法论和结构性的东西。正是因为人们在UI上过于“创意”,才会出现一些最大的可用性怪胎...例如100%使用Flash制作的网站...
编辑:Krug的书非常好...特别是如果你将要为Web进行设计,请务必阅读它。