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

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


当前回答

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

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

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

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

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

其他回答

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

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

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

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

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

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

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

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

让我直接说:

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

大多数硬核开发人员对他们软件的用户几乎没有同情心。他们不知道用户如何思考,用户如何建立他们使用的软件模型,以及他们通常如何使用计算机。

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

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

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

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

用户并不关心。

真是个白痴。

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

事实并非如此。

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

Many software developers like movies. Well-done movies that spark their imagination. But they are not experts in producing movies, in producing visual effects or in writing good movie scripts. Most nerds are very, very, very bad at acting because it is all about displaying complex emotions and little about analytics. If a developer watches a bad film, he just notices that it is bad as a whole. Nerds have even built up IMDB to collect information about good and bad movies so they know which ones to watch and which to avoid. But they are not experts in creating movies. If a movie is bad, they'll not go to the movies (or not download it from BitTorrent ;)

所以归结起来就是:把普通用户当成专家来回避是一种无知。因为在那些他们不是专家的领域(有这么多),他们希望其他领域的专家已经考虑过使用他们产品或服务的普通人。

What can you do to remedy it? The more hardcore you are as a programmer, the less open you will be to normal user thinking. It will be alien and clueless to you. You will think: I can't imagine how people could ever use a computer with this lack of knowledge. But they can. For every UI element, think about: Is it necessary? Does it fit to the concept a user has of my tool? How can I make him understand? Please read up on usability for this, there are many good books. It's a whole area of science, too.

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

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

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

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

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