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

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


当前回答

阅读苹果人机界面指南。

其他回答

为什么UI设计对某些开发者来说如此困难?

这有点像问为什么篮球对足球运动员来说很难。

左脑对右脑。有些人没有艺术感。

我敢打赌,通过学习和勤奋,任何人都可以在界面设计方面做得更好。这并不意味着你会成为一流的美工或设计师。

我认为改进总是有可能的。

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

我认为他们的技能非常不同。优秀的设计师了解人类行为、颜色和字体的心理等。我认为这就像同时做营销人员和开发人员一样。非常有挑战性,但也不是不可能。

我会试着找一些用户界面专家,看看他们的学习建议是什么。除非你设计的是像谷歌这样极简主义的东西,否则如果这是一个重要的项目,你最好雇佣那些研究过UI艺术的人。

也就是说,如果你正在设计一款非常实用的应用,我认为你可以试着专注于界面的简单性和清晰度——我认为这至少是谷歌成功(以及堆栈溢出)的一半关键——即它是直观的,使用起来很愉快。

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

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

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

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

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