面向对象的产品观(5):具象化
编辑导语:产品设计的过程,大多是一个抽象的过程,即根据用户调查和市场调查等获取的数据,设计一款产品的功能等。而在完成抽象化的过程之后,就要进入具象化的过程,即产品真正可以面向用户的过程,在这个过程中我们需要注意些什么呢?
终于,我们登上了产品构建的最后一层:具象层。
具象层的工作就是将产品可视化,也就是让产品变成大家手机里,电脑上看到的样子。具象的目的是让用户能够直观的感受到产品,并且可以快速使用产品去解决他的问题。
具象是产品构建的最后一层,也是和用户直接打交道的一个层次,用户对产品的观感和情感都由具象层直接决定。所以这一层的工作重点就是细节,细节,还是细节。
具象层的工作主要分为如下两个部分:交互设计和信息架构。实际上还有一个视觉设计,只是视觉设计属于设计师领域,基本不属于产品经理的工作,所以这一块就暂时剔除在外。
一、交互设计:用户如何使用
交互设计定义了用户使用产品的方式。计算机时代的交互设计,是为了减少计算机系统与现实世界的认知摩擦而产生的一种新型学科。
交互设计的目的,是降低大家从现实时间的实体产品转换到使用软件产品时的学习成本。
一个人,在初次使用软件产品时都会产生不适应感,只是程度或多或少而已。而好的交互设计可以将这种不适应感降到最低,让用户适应的时间缩到最短。
那么如何做到一个好的交互设计?
在巨著《交互设计之路》中说过,一个好的交互设计需要做到以下几点:
尽可能的模拟现实世界,让用户可以将自己在现实世界中的经验可以很轻松地移植到软件产品上; 产品要足够的简单,让人可以在极短的时间内学会并使用。没有人会喜欢复杂的产品,因为复杂的产品会让人觉得自己很愚蠢,没有人会愿意承认自己愚蠢; 每一次操作都要有即时的反馈。因为在现实中我做的每一件事情都可以即时收到反馈,我敲桌子就能听到响声,我拿起冰就可以感受到冰冷。如果一个产品可以做到以上几点,那么基本上就可以判断他是一个成功的交互设计。
二、交互设计的要点
交互设计要点其实就是三个词:明确、及时、步骤少,展开来说就是明确的功能布局与层次,及时的操作反馈,尽量少的操作步骤。
做到这些就需要如下四个准则:突出重要的、弱化次要的、聚合有关联的、隐藏不重要的。
交互设计已经是一门经过了几十年发展的显学,在这里我一篇文章也不可能说明白所有的要素。所以,今天我就说到这里,权当抛砖引玉,如果读者们还有兴趣,可以自行查阅相关的文献,我就不在多啰嗦了。
三、信息架构:我们想告知用户什么
与交互设计对应的就是信息架构,他与交互设计相辅相成,共同构成了产品的具象层。
信息架构这个名词听着生僻,我本人也被弄晕了很久,找到的各种书籍也是各种绕圈子,感觉把一件简单的事情给弄得极其复杂,看下来的感觉就是完全不知所云。
所以,我索性根据自己多年的工作经验和思考的心得,自己给信息架构给出了一个定义:信息架构就是内容的组合方式。信息架构的目标是让用户在最短时间里的明白你的产品是做什么的,能够给他们带来什么样的价值。
信息架构的要点是:层次结构清晰,聚合相关联信息,信息尽量平铺展示。
其实信息架构在实际产品的设计过程中不需要过多关注,很多人读书读到走火入魔,做产品之前一定要按照书本上的说法分出多少个层次的信息架构,做出什么样的架构系统。
实际上在你设计产品原型的过程中,信息架构会自然而然的出现在你的脑子里,压根不需要专门去研究信息架构的层次与结构。
四、制作原型
原型是一个产品开发的依据和标准。制作原型是所有的产品经理的必备技能,你可以不会写文档,但是你一定要会画原型。
面向对象思想在制作原型的阶段可以被发挥的淋漓尽致,下面由我来慢慢道来。
五、模块化设计
在软件功能领域,有一个非常流行的概念:模块化编程。
这种编程的方法就是讲程序分成一个个小的模块,模块之间互不关联,之后程序里面需要用到哪个个模块就把哪个模块加上去。
这种编程的好处就是同一个模块可以应用到多个地方,极大的提成了程序的可复用性。在原型制作的时候,也可以借鉴这种模块化的思想,我称其为模块化设计。
六、模块化设计的要点
模块化编程之所以可以实现,主要依赖于“万物皆对象”的法则以及面向对象的三大特性:封装、继承、多态。
万物皆对象:世间所有的食物都是对象,不论是真实的物品,还是一段话、一个场景都可以作为一个对象。这个对象是封闭且独立的; 封装:将某样事物封闭成为一个对象,可能是一段代码,也可能是一个设计好的界面; 继承:一个对象可以获得另一个对象的属性和方法,就像中国人就继承了所有人类共有的特点。被继承的对象一般称之为基类,而那个继承它的对象就称之为子类; 多态:每一个子类的实际属性和方法都会有一些不同,就像中国人是人类的子类,中国人既有全部人类都有的特点,又有独属于自己的特点。这些特性如何又是如何运用于原型设计中的呢?
七、善用封装
在我们实际设计的过程中经常会碰到多个页面都会出现相同的元素,如多种不同状态的订单列表。这时候按照常规的做法,大家都会使用复制粘贴将同样的订单信息复制到多个不同的列表页面。
这种做法当然没有问题,但是呢:如果期间我要对订单信息进行修改怎么办呢?
我每一条订单信息都要重新修改一次,这种做法就会导致大量的时间都用来修改同样的数据上。而且如果页面太多还很有可能造成错漏的情况。
这个时候我们可以将重复的元素封装为一个独立的模板,所有关联的页面都统一使用这个模板,下次如果要修改时,直接修改模板即可同时修改所有关联的页面。
这样做的好处是让原型的模板可复用性大大增强,而且可以避免大量的错漏问题。
同时如果一个产品特别庞大,需要一个专门的产品设计团队在进行设计的话,封装模板可以提升团队合作时的效率,毕竟已经封装好的模板可以直接拿来使用,避免了重新造轮子的工作,大大提升了团队工作的效率。
现在市面上主流的原型设计工具如Axure,墨刀等都有一个“母版”功能,该功能就可以非常方面的做到封装对象。
或许Axure的创始人在最初设计产品的时候就已经考虑到了页面复用的问题,所以他一开始就设计了“母版”这样出色的功能。不愧大师手笔,我等凡人只能膜拜。
八、模板的继承
模板的继承实际上是封装基础上衍生出的新特性,在制作原型的过程中会出现几个关联页面框架相同,但是框架中的元素不一样的情况。
这时候可以将大家都一样的元素封装为一个模板,这个模板作为所有页面的基类,所有的页面都是用这个模板,在这个模板上添加元素。
这样的好处也是显而易见的,这样可以统一相关页面的交互,尤其是在团队协作的过程中规避每一个人都设计出不同风格页面。在实际工作中同样可以使用“母版”来进行基类的设计。
九、多态
如上文所述,设置好了基类模板并且让相关联的页面都“继承”了该模板之后,需要根据每一个页面的特点添加不同的元素,这个实际就是面向对象的多态特性。
每一个继承了同样基类的子类,都有各自不同的特点。而一旦基类发生了改变,所有的页面同样的也会改变。
最后,引用一下Python之禅的内容,来总结我对于具象层的认知:
优美胜于丑陋; 明了胜于晦涩; 简洁胜于复杂; 复杂胜于凌乱; 扁平胜于嵌套; 间隔胜于紧凑; 可读性很重要; 即便假借特例的实用性之名,也不可违背这些规则; 不要包容所有错误,除非你确定需要这样做; 当存在多种可能,不要尝试去猜测; 而是尽量找一种,最好是唯一一种明显的解决方案; 虽然这并不容易,因为你不是 Python 之父; 做也许好过不做,但不假思索就动手还不如不做; 如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然。以上就是我对于具象层的理解,这一篇有一半的篇幅其实都是在介绍实际工作如何开展,纯理论的东西并不多。
因为具象是一个非常复杂非常长期的过程,短时间内提升是不可能,只有在实际工作中不断的磨练,才能不断精进,真正成为独挡一面的高手。
终于讲完了面向对象产品观的五层次,依据这五个层次步步为营的演进,相信你也可以做出令人满意的产品。
但是构建产品是一个不断迭代,不断优化的过程,一个刚刚设计出的产品,只是一颗种子,后续还要经过不断的改善才能长成一个参天大树。接下来,我们一起去了解产品如何《向上生长》。
本文由 @木道人 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议