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

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


当前回答

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

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

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

其他回答

十年前,我的UI设计真的很糟糕……我想这些年来帮助我变得更好的是谦逊和追求完美的健康结合。

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

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

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

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

让我直接说:

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

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

当专家和外行发生冲突时,这是一个典型的问题:一个正常人怎么会如此愚蠢,不明白专家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.

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

我在UI设计方面做了什么? 注意!

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

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

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

从另一个答案中我写道:

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

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

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