设计通用功能,提高方案输出效率
有一段时间,公司运营同事经常向我抱怨后台批量导入功能做的很差。为了解真实的情况,我把后台所有的导入功能都体验了一遍。不仅验证了运营反馈的导入慢、导入失败等问题,还发现不同模块的导入功能设计,无论是页面布局,还是交互设计,都差异很大,有些模块的导入功能体验几乎是不可用的状态。
事后分析原因,原来这些模块分别由不同的产品经理负责,每个人的经验和能力都不同,设计偏好也不一致,在设计原型时,大家都是独立完成,且后台需求并不经过设计师,直接交付开发。
最终就出现了不同模块的相同功能页面布局、交互设计差异大,部分甚至完全不可用的结果。这个问题,不仅出现在导入功能,在很多其他的功能中也同样存在。
重复设计带来的问题
同一个产品中,有一些功能会在很多个模块中出现,这种功能称之为“通用功能”。如图片上传、数据导出、图片预览、提示弹窗等。
一个产品中的不同模块,可能会由不同的产品经理负责。如果每当需要使用这些通用功能时,都重新设计和开发,必然会带来以下4个问题。
1.产品方案输出效率低
设计一个完整的功能,产品经理需要做需求调研、设计业务流程、设计功能结构、信息结构、绘制产品原型、撰写需求文档。每一个环节的工作,都意味着时间的耗费。
多个的产品经理独立设计同样的功能,意味着整个团队付出了更多的工作量,但成果并没有增加。从整体上看,团队的产品方案输出效率大幅降低。
一个团队中有5个模块,分别由5个产品经理负责,某个功能在5个模块中都有使用。如果每个产品经理独立设计该功能需要2天,那么团队就需要为该功能耗费10天。
一个原本只需要2天的任务,产品团队用了10天,这是效率的极大降低。
2.增加了不必要的开发成本
产品方案决定了研发人员的工作内容,产品方案不一样,代码肯定也不一样。如果多个模块分别由不同的研发人员负责,且他们互相之间不了解对方的工作内容,那意味着要“0代码复用”实现功能。
同样的功能,每次开发,都要独立编写代码,增加了不必要的开发成本。
3.产品质量存在风险
不同的产品经理,能力和经验是有差异的。面对同一个功能,不同的产品经理,可能会使用不同的方法,带着各自的习惯去设计产品方案。
有些产品经理能力强、经验丰富,自然能设计出优质的产品方案。反过来,因为能力和经验不足,有些产品经理可能会设计出一个不合理、甚至漏洞百出的产品方案。如果不能通过其他方式发现并修正,上线后必然会暴露出产品质量问题。
同样是数据导入功能,A负责的模块,经常会出现导入失败问题,而B负责的模块,每次都能顺利导入数据,这就是经验和能力差异带来的产品质量风险。
4.用户体验不一致
每个产品经理都有一些个人的偏好,这些偏好,也没有对错好坏之分。但当他们把自己的设计偏好融入到产品设计中后,同样的功能,必然会存在一些差异。功能开发上线后,就会出现同样或类似的功能,视觉和交互设计不一致的情况。
有些产品经理习惯使用模态弹窗来提示错误,有些产品经理更喜欢使用toast提示。有些产品经理认为“确认”按钮应该放左边,有些认为应该放右边······
对用户来说,同一个产品中的相同功能,页面设计和交互设计应该保持一致。一致的用户体验,才能让用户在学习和使用产品时,花费的成本更少。
通用功能设计的注意事项
通用功能设计,与常规的功能设计并没有什么太大差别。但通用功能要在不同的模块中重复使用,因此对普适性和独立性有特别的要求,并形成通用功能库。
1.穷举使用场景,增强普适性
常规的功能设计,只需要考虑模块的使用对象和使用场景。但通用功能要被用到多个模块中,而不同的模块,使用对象和场景都可能是不一样的。
通过穷举使用场景,抽象出统一的产品方案。在不同模块的通用功能说明中,进行备注说明,即可快速输出产品方案。
图片上传功能,可以用在广告管理和证据管理中,分别被运营和客服使用。
广告管理中的图片上传,往往是对图片尺寸有严格限制的,且每个广告位的广告图尺寸要求还不一致。但证据管理模块中,对图片的尺寸是没有限制的。
为了尽可能避免使用者犯错,就需要明确告知当前模块对图片尺寸限制,并在错误使用后,给出对应的错误提示。
因此,在图片上传功能的通用产品方案中,就可以设计一个“图片尺寸限制“的逻辑及对应的提示文案。广告管理模块的图片上传功能,备注该模块对应的具体内容,而证据管理模块的图片上传功能,备注无尺寸限制逻辑。
如果产品方案中,没有考虑不同场景的特殊要求,可能就会造成产品方案不具备通用性,无法被低成本的引用到其他模块。
2.降低耦合度,增强独立性
功能与所在模块的关联性越紧密,耦合度越高,独立性越差。耦合度高的产品方案,很难适用于其他模块。
在手机充电接口没有统一标准前,不同的厂家生产的硬件所使用的接口是不同的,如USB、lighting、type-c等。充电线和接口的关联性很紧密,耦合度很高。
这导致每个品牌的手机,大多只能使用特定的充电线。
在设计通用功能时,要尽可能降低通用功能与所在模块的耦合度。将逻辑尽可能放到通用功能中实现,而与之关联的模块,通过参数传递方式,实现逻辑调用,使之能低成本连接在一起。
图片上传功能中,对图片尺寸的限制功能,应该在图片上传通用功能中实现。不同模块在调用图片上传功能时,分别告知对图片尺寸的要求。
图片上传功能与所在模块的关系,仅仅是参数传递。
通过低耦合设计,大幅度增强了通用功能的独立性。
3.形成通用功能库,统一调用
产品规划者有必要将通用功能梳理出来,分别安排专人完成产品方案设计,形成通用功能库,供大家统一使用。
同时,还需要对团队成员进行宣导,让大家都认识到设计和开发通用功能、确保用户体验一致性的价值,在认知和执行上达成一致,确保通用功能库能顺利推进。
若无法达成一致,或未能传递到位,部分产品经理没有按要求执行,通用功能的设计就无法落地,最终回到原来的混乱局面。
通用功能设计的必要性
通用功能的本质,是单次高质量的产品方案设计和开发,重复使用。
有了通用功能,产品经理在输出产品方案时,只需要补充特定的备注说明,就完成了方案设计。于此同时,研发人员也只需要少量代码,引用通用功能,即可完成开发。
对团队来说,意味着更高的产出效率、更低的设计和开发成本。
与此同时,设计通用功能,产品经理需要更深度地挖掘用户需求,更广泛地穷举使用场景,从中抽象出通用的业务逻辑,体现到产品方案中。于此同时,还要考虑如何低成本的复用到另一个模块,甚至另一个项目当中。
产品经理个人的思考深度和广度,会在这个过程中得到很好的锻炼。
总结
在产品迭代过程中,在多个模块中重复使用的通用功能,不应该重复设计和开发,而应该设计成具备普适性和独立性的通用模块。每次需要使用时,只需要简单地备注说明,即可完成产品方案设计。从而实现更低成本、更高效率的产品设计和开发。
参考:
[设计通用功能,提高方案输出效率](https://coffee.pmcaff.com/article/KDLEzxW8Qx )]