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

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


当前回答

"其他人做了什么来消除他们的 这方面的不足?” ——克里斯·巴兰斯

与你能找到的最少的电脑储蓄终端用户一起工作。(一个从未见过你的软件的新手)。 从他们那里得到反馈,看看是什么让他们觉得糟糕。 解决这些问题,把它交给另一个不懂电脑的用户, 重复这个过程。

当有足够多的新用户可以使用你的产品时,你就知道你已经完成了你的工作。

(此外,你的软件可能看起来很像微软的,你可能不会喜欢使用它…)

但这不是重点!关键是最终用户可以使用它,并且喜欢使用它!

不是开发者!

同时阅读这篇文章,我发现它在这个领域很有帮助。它基本上是说你应该向用户的需求让步。

换句话说……

你必须看看用户已经在尝试做什么……

人行道和学生

在我上大学的那个校园里,有一条学生们在上下课时留下的小径。当学校注意到这条小道时,他们在人们已经走过的地方竖起了栅栏。学校做错了。你想在学生们已经步行的地方建一条人行道!

视频商店和Netflix

再举一个例子,想想最近的音像店历史:很久以前有很多音像店:Block Buster video等等……人们不喜欢那些音像店的什么地方?当然是滞纳金。所以Netflix出现了,取消了滞纳金,因为它更符合客户/最终用户的需求。

现在,“积木老兄”和其他收费音像店一样,都要破产了。

这个更难做吗?让你的大脑停止运转,给人们他们想要的?当然是……这是让你的意志屈从于他们……这总是比较困难,但最终实现的目标是为最终用户提供他们想要的东西。

其他回答

吃自己的狗粮实际上并不是最好的方式。缺乏对用户关注的关注,虽然这是事实,但也不是故事的全部。同样,随着您的专业知识的增长,您也会逐渐远离正常的用户关注点。我认识的大多数开发人员都想在开发解决问题的软件方面做得很好。

这种脱节发生在想象力的失败。我们人类没有能力思考所有的可能性和组合。当然,我们试图用“更好的”方法来克服这个问题。

我发现唯一有效的方法就是让自己置身于接收用户反馈的火线上。通过这种方式,我了解到我正在解决的问题,不仅仅是一次,而是在用户使用我的软件的过程中持续不断地进行。

这不是一个简单的解决方案。你不仅要成为一名优秀的程序员,还要擅长X,因为X是你试图解决的任何问题。通过擅长X,你可以获得必要的经验来理解可能性和局限性。你可以开始在你的代码中考虑到这一点,从而在你提供的功能和UI设计中产生更精致的软件。

这不是重新训练你的大脑,而是获得有效解决问题所需的经验。如果你要做的是像Stack Overflow这样的全新游戏,你就必须负责用户反馈才能获得游戏体验。

开发者不一定擅长UI设计,就像他们不一定擅长编织一样;这很难,需要练习,让别人先教你怎么做也无妨。

大多数开发人员(包括我)开始“设计”ui,因为这是编写软件的必要部分。除非一个开发人员努力去精通它,否则他/她是不会精通的。

一件容易的事。

开发人员不是设计师。他们没有接受过设计方面的培训或尝试学习,所以他们为什么要擅长UI设计之类的东西呢?这几乎等同于在说“为什么会计对某些开发者来说如此困难?”

UI设计本质上是设计,而设计是规则的视觉表现。擅长设计意味着你理解为什么某些东西应该以某种方式显示、运行和表现(例如,为什么链接应该突出显示,或者为什么标题应该在页面顶部)。

设计和开发是两种完全不同的东西,但都需要背景知识和实际工作。如果你不愿意花时间在其中一个科目上,那么你就不会很擅长它,不管你的一个程序/网站看起来有多好。

我知道,当我制作出一个糟糕的UI时,几乎总是因为我过于专注于它的特定部分。

在开发和测试一个特定功能的过程中,我几乎总是会多次使用它。

在我检查了十几次之后,我就处于这样一种心态:我确切地知道我要做什么,也确切地知道我需要做什么才能让程序按我想要的做。我也和观看这个特定的作品功能本身,一遍又一遍,直到它“完成”。当我在测试时,我会快速浏览应用程序/菜单/工作流/其他内容。

用户的情况完全不同。他们没有把软件的这一部分看作一个独立的“块”。他们并不总是经常这样做,当他们经常这样做的时候,他们肯定不会经常独自做。他们不会像开发人员那样“跳过”过程的其余部分,只专注于这一部分。

重要的是试着看UI,然后思考“我应该用它做什么?”如果不清楚,说明你做错了。我们所处的情况是,我们知道软件需要什么输入,我们只是想办法获得这些输入。用户所处的情况是他们想要某种结果,他们想知道他们必须做什么才能得到这个结果。

我认为部分原因是UI设计和程序设计的目标经常相互冲突。当我编程的时候,我经常会想“最简单的方法是什么?”在设计UI时,最简单的方法并不总是最友好的。如果你两者都做,你可能会倾向于选择最简单的实现,这对用户友好性有负面影响。

我还认为程序员太接近产品,无法从用户的角度来看待它。对编程人员来说非常容易和直观的东西对用户来说可能并不容易。获得用户的输入是必要的。

UI设计也不是总是正确或错误的。不同的人对UI的评价不同。例如,有些人讨厌Office中的新“Ribbon”UI,有些人喜欢它。有些人认为苹果的OSX UI很棒,有些人不喜欢它,觉得它很难使用。不管你设计出什么样的UI,总会有人不喜欢它。