我们中的一些人只是在UI设计的软方面遇到了困难(尤其是我自己)。“后端编码器”注定只设计业务逻辑和数据层吗?我们是否可以做些什么来重新训练我们的大脑,使其更有效地设计出令人愉悦和有用的演示层?
同事们给我推荐了《网站设计》、《不要让我思考》、《为什么软件很糟糕》等几本书,但我想知道其他人在这方面做了什么来弥补他们的不足?
我们中的一些人只是在UI设计的软方面遇到了困难(尤其是我自己)。“后端编码器”注定只设计业务逻辑和数据层吗?我们是否可以做些什么来重新训练我们的大脑,使其更有效地设计出令人愉悦和有用的演示层?
同事们给我推荐了《网站设计》、《不要让我思考》、《为什么软件很糟糕》等几本书,但我想知道其他人在这方面做了什么来弥补他们的不足?
当前回答
“我们能做些什么来重新训练我们的大脑,让它更有效地设计出令人愉悦、有用的展示层吗?”
是的——使用接口驱动的架构。首先根据业务需求设计用户流程——然后根据用户流程设计编程逻辑和数据库。如果你将中间层和后端设计成服务前端的结构,那么你将拥有一个以用户为中心的应用程序。
其他回答
我们是否可以做些什么来重新训练我们的大脑,使其更有效地设计出令人愉悦和有用的演示层?
是的。观察那些试图使用你的软件的用户,不要帮助他们。也被称为可用性测试。
The basic idea of usability testing is that you take someone with a similar background to your target audience, who hasn’t seen your software before and ask them to perform a typical series of tasks. Ideally they should try to speak out loud what they are thinking to give you more insight into their thought processes. You then watch what they do. Critically, you do not assist them, no matter how irresistible the urge. The results can be quite surprising and highly revealing. Usability testing can be very fancy with one way mirrors, video cameras etc, but that really isn’t necessary to get most of the benefits. There is a good description of how to carry out usability tests in Krug’s excellent book Don’t make me think: a common sense guide to web usability. Most of his advice is equally applicable to testing desktop applications.
在进行UI设计时,以下是我始终牢记的一些事情(到目前为止还不是一个完整的列表):
Communicating a model. The UI is a narrative that explains a mental model to the user. This model may be a business object, a set of relationships, what have you. The visual prominence, spatial placement, and workflow ordering all play a part in communicating this model to the user. For example, a certain kind of list vs another implies different things, as well as the relationship of what's in the list to the rest of the model. In general I find it best to make sure only one model is communicated at a time. Programmers frequently try to communicate more than one model, or parts of several, in the same UI space. Consistency. Re-using popular UI metaphors helps a lot. Internal consistency is also very important. Grouping of tasks. Users should not have to move the mouse all the way across the screen to verify or complete a related sequence of commands. Modal dialogs and flyout-menus can be especially bad in this area. Knowing your audience. If your users will be doing the same activities over and over, they will quickly become power users at those tasks and be frustrated by attempts to lower the initial entry barrier. If your users do many different kinds of activities infrequently, it's best to ensure the UI holds their hand the whole time.
让我直接说:
改善这一点并不是从指导方针开始的。首先要重新定义对软件的看法。
大多数硬核开发人员对他们软件的用户几乎没有同情心。他们不知道用户如何思考,用户如何建立他们使用的软件模型,以及他们通常如何使用计算机。
当专家和外行发生冲突时,这是一个典型的问题:一个正常人怎么会如此愚蠢,不明白专家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帽子返回。如果你在编写代码时尝试使用它,你将以错误的心态处理它,结果会得到一些糟糕的界面。
我认为同时成为一名优秀的后端开发人员和一名优秀的UI设计师是完全可能的,你只需要努力工作,阅读和研究相关主题(从Miller的#7到Nielsen的档案),并确保你理解UI设计的重要性。
我不认为这是一个需要创造性的案例,而是像后端开发一样,这是一个非常有方法,非常结构化的事情,需要学习。正是人们对ui的“创造性”创造了一些最大的可用性怪物……我的意思是,首先看看100%使用Flash的网站……
编辑:克鲁格的书真的很好……一定要读一读,特别是如果你要为网络设计的话。
我认为我们不能设计ui的原因是因为我们是完美主义者,不能决定什么时候足够好才是足够好。我知道我个人无法忍受UI设计,因为我总是怀疑自己,说:“不,那还不够好。”