功能设计:如何将复杂的功能抽象成简洁易用的设计?

10 评论 4262 浏览 38 收藏 12 分钟

本文深入探讨了如何通过功能抽象,提炼出核心问题并实现高效的设计解决方案。通过具体案例分析,我们揭示了在不同场景下进行班次设计和属性配置的有效方法。这不仅提升了设计的灵活性和扩展性,也优化了用户体验。

在上一篇文章《需求分析:如何从复杂的需求中抽象出核心问题?》中,我们深入探讨了如何从繁杂的用户需求中提炼出最核心的问题。这一过程是产品设计和开发的基础,但仅仅停留在需求分析阶段还不够。接下来,我们需要将这些核心需求转化为实际的功能设计,并保持设计的简洁性和易用性。

这就引出了我们今天的话题:功能设计中的抽象能力。如何将复杂的功能抽象成简洁易用的设计?在这篇文章中,我们将探讨功能抽象的重要性,以及如何在实际的产品设计中运用这一能力,创造出既满足用户需求又易于使用的功能。

一、案例1:如何对班次进行抽象设计,可既满足用户需求又易于扩展?

客户A是一家制造企业,实行白班和夜班双周交替的工作制度。

白班时间为早上8:00至晚上20:00,中间有两次休息时间(12:00-13:00与17:00-17:30);夜班时间为晚上20:00至次日8:00,也有两次休息时间(与白班类同)。

每个班次的班后2.5小时算作加班(即白班加班时间为17:30至20:00,夜班加班时间为次日5:30至8:00),加班工资为正常工资的1.5倍。

此外,休息日如需加班,安排夜班,加班工资为正常工资的2倍。

方案一:通过【是否安排加班】控制是否有班前、班后加班

  • 上班时间:允许添加多组,每组由上班时间跟下班时间组合成而成。同时,每组可至少内置添加3组休息时间;
  • 班前加班:开启后,根据上班时间,自动算班前加班时间;
  • 班后加班:开启后,根据下班时间,自动算班后加班时间。

方案二:抽象最底层时段,自由组合不同类型的时段。

  • 工作时段:抽象为一个对应的时段,可插入任意位置;
  • 休息时段:也抽象为一个时段,可插入任意位置(除了首尾);
  • 加班时段:同样抽象为一个时段,可插入任意位置(不仅仅是班前与班后)。

解析

方案二比方案一显然更抽象、更解耦。比如方案二休息时段、工作时段、加班时段是平级关系,而不是包含关系。同时,加班时段的位置与个数都更加灵活。

对应方案二所支持的场景,也更加丰富。

  • 比如下班后先休息30分钟(吃饭时间),然后才加班2.5小时;
  • 比如下班后必须先打卡,休息30分钟后,回来后需要再打卡才算开始加班以及结束后打卡;
  • 比如上班休息时间,生产任务重时,期望安排员工加班,也按1.5倍工资计算。

二、案例2:如何抽象设计班次属性,以满足更多需求场景?

案例1的抽象设计主要解决了工作日上班时的固定加班,却没有解决公休日/节假日安排加班的场景。即休息时,因生产任务过重,工厂需统一安排员工加班,按2倍加班费进行补偿。

方案1:单一属性标识班次属性与类别

即在现有班次的基础上,新增一个属性:班次属性(可选工作日、公休日、节假日)。

  • 如果配置成【工作日】,则表示当天是正常上班。即出勤后,正常计薪1天;
  • 如果配置成【公休日】,则表示当天是安排加班,且是按公休日进行补偿。即出勤后,计为加班,按公休日2倍进行补偿;
  • 如果配置成【节假日】,则也表示当天是安排加班,按按节假日进行补偿(一般是3倍工资)。

方案2:双重属性分别标识班次属性与类别

即在现有班次的基础上,新增两个属性:班次属性(可选工作日、公休日、节假日)、班次类别(可选加班班次、出勤班次)。

  • 如果配置成【工作日】,且是【出勤班次】,则表示当天是正常上班。即出勤后,正常计薪1天;
  • 如果配置成【工作日】,且是【出勤班次】,则表示当天是安排加班,且按工作日进行补偿(一般是1.5倍)
  • 如果配置成【公休日】,且是【出勤班次】,则表示当天是正常上班,但如果发生班前/班后自主申请加班时,按公休日进行补偿;
  • 如果配置成【公休日】,且是【加班班次】,则表示当天是安排加班,,且按公休日进行补偿。同时,如果发生班前/班后自主申请加班时,按公休日进行补偿;
  • 节假日与公休日类同,只是加班补偿有差异。

解析

相对方案一来说,方案二所支持的场景数与扩展性更强。即方案二可支持的场景数是:2 x 3 = 6个场景;方案一则是1 x 3 = 3个场景。

比如安排加班,但加班补偿按工作日1.5倍补偿,只有方案二支持;

比如公休日/节假日安排上班,计为正常上班。但如果班前/班后加班,则依然按公休日/节假日进行补偿,也只有方案二支持。

三、经验时刻

第一,产品抽象设计的前提是对需求本质的抽象。只有对需求的抽象到位,对不同需求场景的抽象,才有可能进行产品设计抽象。

比如案例1,对上班、加班、休息时段设计的抽象前提,是对制造业客户上班与加班需求场景的抽象。

相关案例可见:需求分析:如何从复杂的需求中抽象出核心问题?

第二,在功能抽象过程中,一个关键原则是确保每个属性只表达一个概念。这类似于一个人专注于单一任务时能更高效地完成。

例如,在案例2中,方案一使用【班次属性】来表达加班类型和是否安排加班,而方案二则将【加班类型】和【是否安排加班】分别用【班次属性】和【班次类别】来表达。这样的区分不仅提高了功能的清晰度,也使得用户更容易理解和操作。

相关案例可见:KISS原则:SaaS产品设计最重要的原则(中)

第三,你可以把一款产品想象为某个真实世界的投影,进行类比式思考与设计。

比如一款产品就像你的家,每个房间、每个窗户、每条路线的设计,都会影响客人对你家的整体感受。

一款产品的首页/工作台,就像你家里的客厅,客厅里的内容有吸引力、格局与路线清晰,你才能让客人更愿意逗留;

产品中的每个实体,就像你家里的每个房间,它有自己的场景定位,有自己的职责(比如睡觉、孩子学习或玩、书房灯),也必须与其他房间进行关联,完成动线设计;

每个房间如果进行多元场景化设计,让它可以自定义移动、拆装、组合灯(比如它的床可睡、可玩、可拆卸),那它对场景的支持将变得多元(比如你家的榻榻米屋,平常是孩子玩的地方,客人来了可以收拾当卧室等),这个过程就像你对某个实体的属性进行抽象设计的过程。

第四,善于利用工具,采用可视化的方式进行思考与设计。

我个人更偏好视觉性设计(空间想象力有限),所以在产品抽象设计时,喜欢用工具(如Axure)画图的方式进行思考与设。

比如像上述案例中,简单画一个不同方案的时段关系图(或直接画实体关系图),对比不同方案的优劣。

相关案例可见:KISS原则:SaaS产品设计最重要的原则(上)

第五,采用刻意练习的方式,复盘每次产品抽象设计的过程,形成肌肉记忆。

抽象设计确实比较抽象,就像对它的学习与掌握一样。所以唯一可分享的点就是建议你进行刻意练习。

比如上述案例就是我对自己设计的一次复盘,而写这篇文章的过程,就是一种刻意练习。

刻意练习是痛苦的(因为它需要调用你的脑力,让你的神经元之间进行强行交流),它也是畅快的(因为互不相识的神经元之间会产生火花,让你的大脑活跃,产生多巴胺)。

专栏作家

邢小作,微信公众号:邢小作之家,人人都是产品经理专栏作家。一枚在线教育的产品,关注互联网教育,喜欢研究用户心理。

本文原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自 Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
海报
评论
评论请登录
  1. 先码一下,明天有精神再看。思考实例的时候直觉就把实体(时间)跟业务剥离了,大体好像对得上,细节不确定,不知道会不会差之毫厘。明天回来看下解决方案具体是什么逻辑

    来自中国 回复
    1. 哈哈,欢迎回来看

      来自北京 回复
  2. 有具体案例进行分析,算是差不多搞明白功能设计了,作者讲的很有用,受教了。

    来自广东 回复
    1. 很开心对你有用

      来自北京 回复
  3. 班次属性和班次类比匹配那段,第二条是不是写错了?应该是在【工作日】和【加班班次】匹配

    来自北京 回复
    1. 我没太看出来具体你说的是哪里?加班班次本身是不局限于工作日的,可以是公休日或节假日

      来自北京 回复
  4. 邢老板的大作,每次都是反复读好几遍,学习了,感谢感谢。

    来自河南 回复
    1. 哈哈,一起探讨,一起学习

      来自北京 回复
  5. 这其实是很多高端科技下沉到市场的重要难题,科技与民用一直有代沟~~~

    来自北京 回复
    1. 没想到我这个分享,还可以上升到这么“高大上”的课题呢?意外之喜

      来自北京 回复