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

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


当前回答

Neal Stephenson所著的《In the Beginning was the Commandline》是一本关于用户界面及其重要性的好书。不是每个人都需要GUI,只是很多人不编程。这就像迪士尼世界的动物王国和实际的亚马逊之间的区别。

其他回答

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

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

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

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

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

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

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

在进行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.

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

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

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设计方面做了什么? 注意!

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

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

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

从另一个答案中我写道:

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