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

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


当前回答

原因有很多。

(1)开发者不能站在用户的角度看问题。这是通常的怀疑:缺乏同理心。但这通常不是真的,因为开发人员并不像人们想象的那样陌生。

(2)另一个更常见的原因是,开发人员太接近自己的东西,在他的东西上呆了这么长时间,没有意识到其他人可能并不那么熟悉他的东西(这是一个比直觉更好的术语)。

(3)还有一个原因是开发人员缺乏技术。

我的最大主张:阅读任何UI,人类交互设计,原型书。例如:设计显而易见的:一种Web应用程序设计的常识方法,不要让我思考:一种Web可用性的常识方法,设计时刻,等等。

他们如何讨论任务流程?他们如何描述决策点?也就是说,在任何用例中,至少有3条路径:成功、失败/异常、替代。

因此,从点A,你可以去A.1, A.2, A.3。 从点A.1,你可以得到A.1.1, A.1.2, A.1.3,等等。

他们如何显示这种向下钻取的任务流程? 他们没有。他们只是掩饰它。

因为即使是UI专家也不具备技术,所以开发者也没有机会。 他认为这在他的头脑中是清楚的。但它甚至在纸上都不清楚,更不用说在软件实现中了。

我必须用我自己的手工制作技术。

其他回答

“好的UI设计”其实是两个问题:

获得正确的设计 正确的设计

两者都是难题。以我的经验来看,这两件事应该并行进行,这样才能避免在项目后期出现糟糕的惊喜(“为什么我们在IE8中拖放的速度非常慢??”你说它无法修复是什么意思??”)

为了得到正确的设计,你必须探索各种可能性。书籍可以引导你尝试对你的情况最有意义的事情-经验当然更好。此外,你绝对需要来自真实用户的反馈——否则你怎么才能发现设计已经是正确的呢?)你当然看不出来。继续阅读!)

“使设计正确”是下一个问题,因为这意味着必须执行你认为合适的设计。

那些“用户体验/图形用户界面”的事情是如此困难,因为找到正确的答案包括理解人类想要什么——他们不能客观地告诉你,而你也不能从“外部”找到。这意味着(经验)引导的试错方法是唯一可行的方法。


为了更清楚地回答你的问题:

为什么优秀的UI设计对某些人来说如此困难 重击

对于硬核开发人员来说,一个大问题是,他们对软件如何工作的理解与用户认为它如何工作的理解是非常不同的(例如,URL“www.stackoverflow.com”应该写成“com.stackoverflow.com”,如果你知道DNS如何工作的话。但试着销售一个浏览器,它期望url:))。

作为旁注:我建议你着眼于“体验设计”而不是“用户界面设计”,但这是另一个故事。

我认为主要的问题与不同的才能或技能无关。主要的问题是,作为一名开发人员,您对应用程序是做什么的以及它是如何做的了解太多,并且您自动地从具有这些知识的人的角度来设计您的UI。

而用户通常一开始对应用程序一无所知,也不需要了解它的内部工作原理。

不使用你拥有的知识是非常困难的,几乎是不可能的——这就是为什么UI不应该由开发它背后应用程序的人来设计。

归根结底,这真的是关于同理心——你能站在用户的角度考虑问题吗?

当然,有一件事是有帮助的,那就是“吃你自己的狗粮”——以真正的用户身份使用你的应用程序,看看什么是令人讨厌的。

另一个好主意是找到一种方法来观察使用应用程序的真实用户,这可能是一个复杂的可用性实验室,有单向反射镜、屏幕视频捕捉、用户身上的摄像机等,也可能是简单的纸上原型,使用下一个碰巧走过大厅的人。

如果所有这些都失败了,请记住,UI过于简单总是比过于复杂要好。我们很容易说“哦,我知道如何解决这个问题,我只要添加一个复选框,这样用户就可以决定他们喜欢哪种模式”。很快你的UI就太复杂了。选择一个默认模式,并使首选项设置为高级配置选项。或者干脆不提。

如果你读了很多关于设计的书,你很容易就会被阴影和圆角等问题所困扰。那不是重要的东西。简单性和可发现性非常重要。

这一切都是关于练习,一些训练和回顾。但是大多数后端开发人员工作的环境中,优秀的ui设计并不真正受到管理层的重视。

在阅读了一些关于UI设计的文献之后,组织一些关于UI设计的代码dojo。

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