iSpiik快记:产品问题剖析及文档缺失的思考与应对

从产品感知层见底层资源构建;

从产品设计方案见一代产品经理心路历程;

就差告诉程序员怎么写代码了!!!

一个没有人敢动手的线上问题

2023年8月的一个工作日 ,被一个产品(支撑供应链采购业务的算法系统)线上问题闹得哭笑不得。

五手开发说自己没有改过,还说看过这里的代码逻辑复杂,说程序逻辑存在现状本就会导致问题。可是,就是不知道问题出在哪里?(搁谁身上不来气就算你赢)

消失的产品设计/技术文档

怀念一手开发、一手测试,可惜走的走、散的散,就连产品团队自己也不清楚了。另外一个现状就是,作为算法产品,其实有很多逻辑构建+数据构建的模型存在,这两部分从领域划分上其实要算到开发、技术团队,但是开发/技术团队向来不喜欢做文档沉淀的,而这个过程产品团队没有同步参与对齐,自然在产品相关的过程文档中也看不到丝毫的踪迹。最重要的结果就是,现在已经没有人能够说得清楚当时的逻辑到底是什么,也没有文档可以翻出来查看。

看清产品:由表及里,从里至外

无奈作为这个产品的四手产品经理(1.0版本已经是四五年前的事情了,负责的产品经理换了好几个),只好从产品的感知层开始(看交互界面的信息结构设计、往下再看结构层的业务逻辑)一层一层往下推测勾勒数据结构,然后和数据库进行假设验证(拿到数据库的查询权限,在测试环境验证上层的逻辑和数据的过程对应),确保推演逻辑没问题。费老大力气,终于勾勒出来产品核心对象的大致数据结构和关联,几个关键对象怎么构建、更新,自然也就标定出来了问题点对象。

但是面对五手开发,程序员自己对代码逻辑毕竟不熟悉,结果依然是:不敢动!

好在又翻到历史一次上线记录出来,以前不是动过这里一次嘛!(上一次改动这个地方是这个程序员改的)轻车熟路,再来一次。这下开发有了信心,搞定✌️

为什么重要的东西却不见了?

往往面对上述这种历史问题,处理过程中是非常依赖到过去的文档的,但正如上文所说,文档往往也稀释掉了很多冰山下内容:比如核心对象的核心数据如何构建?比如关联对象间的数据关联和更新逻辑?等等。虽然偏技术范畴,但个人认为和产品设计文档能够结合在一起的话,对于一个敏捷团队来说绝对是功在千秋、利在当代。

至于为什么会出现产品技术文档、设计文档的内容缺失,个人认为有两个方面可以去尝试思考:

第一点是个人习惯问题,不排除负责某个产品的产品经理和开发者,包括测试大家对所有细节都了然于胸,但是却没有人愿意去把这些内容用文字、用流程图,甚至用一个简单的图形的方式沉淀记录下来;

第二点就是作为产品文档的维护者、设计者可能根本没有意识到、没有参与到、或者说没有思考到当然也不会介入到产品底层的数据和关键对象的构建逻辑。这就一定会为未来产品也在维护过程中埋下隐患,造成业务团队、产品团队和开发团队之间的脱节。这种脱节往往会可能直接影响到业务,打破敏捷的这种开发节奏,增加大家的沟通、协作成本,影响到其他项目项目的一些正常进度,更为可怕的是,打击产品相关人员的信心,导致没有人愿意或者敢去介入动这个产品,包括未来的升级,那么所有人都会倾向于找到时机,重新投入资源去重构这个产品,可我们明明知道 这无疑就是资源的浪费。

如何正确对待产品文档管理?

关于文档的管理可以参考之前两部分的分享:

1、明白文档的用户有哪些:产品设计实例,谁说产品经理只为用户负责?

2、文档的日常管理技巧:产品经理文档操刀技巧:让文档内容活起来

—————-(手动分割线)—————-

题外话,往往我们透过文档,看一份文档的写作风格、逻辑表述、与关键技术实现互为支撑的要求与预留,其实也窥探一二文档创作者当时的心路历程,妙不可言。

MECE:产品经理的高效思维利器

作为产品经理,在日常工作中难免需要处理各种复杂问题,提升工作效率和质量。在这一过程中,MECE原则绝对是一个不可或缺的得力助手。MECE原则,即Mutually Exclusive Collectively Exhaustive,意为“相互独立,完全穷尽”,可以帮助产品经理在产品设计、产品迭代和产品问题分析等多个环节中保持清晰的思路和高效的行动。

一、MECE原则简介及其应用场景

MECE原则由麦肯锡咨询顾问巴巴拉·明托提出,是一种用于对问题进行结构化分析和解决的思维方式。这一原则要求我们在分析问题时,将问题分解为若干个相互独立且完全穷尽的子问题,从而实现对问题的全面把握和深入解决。

在产品设计、产品迭代和产品问题分析等场景中,MECE原则的应用能够帮助我们更加系统地思考问题,避免遗漏和重复,提高工作效率。

二、产品实战案例一则

2023年在某次库存管理链路优化的迭代中,在ERP对商品入库节点增加了A信息校验,并且支持在特定情况下自动创建B数据信息,以确保库存数据的正常入库,使得业务不会因为库存数据入库失败导致的后续系统操作阻断。

基于团队集体共识,也就是大家的知识图谱最大边界,识别判断出来调用范围如下:a、b、c外部系统,系统内部1、2、3点,随即coding,test,preproduct,上线发布。结果第二天下午,突然接到服务台的反馈,全国零散出现书店门店库存查询故障,导致零售系统无法下单、盘点系统也无法正常使用。

上述是对零售现场的影响,最为直接。关联的还有周边多系统受到关联影响,比如订单中心。一时间无人能定位到原因,只能119式救急救火,结果反反复复,下午频现流量高峰。据说开发者当天晚上搞到10点多终于找到根因解决。

次日早上开发leader跑到工位和我摆根因,回忆说昨天是因为另外同事无意提到新门店开业的业务场景可能会有大量数据操作,随即展开了排查,果真是那个场景导致。而关联的就是前面上线的功能,原来在根因的业务场景中也使用到了新功能的数据逻辑判断,而那里的查询逻辑导致巨量数据查询,直接造成流量高峰,数据拥堵,几近拉跨库存中心数据库。

这一问题的出现,让团队也意识到在产品设计过程中,对问题的分析还不够深入,未能充分考虑到所有可能的场景,也让我们更加深刻地认识到MECE原则在产品设计中的重要性。

三、消防事件后,从个人角度总结几点:

如何有效规避由于信息不对称导致的质量问题?

  1. 【文档沉淀、知识管理很重要】
    根因业务场景存在对于**信息的查询调用,这个是在目之所及的文档上没有任何痕迹的,团队知识图谱里面、以我当时在团队2年多的时长,竟然无人提及过的。知识丢失,导致前期范围识别的缺失;
  2. 【摸底排查必须有】
    产品设计过程、coding过程中,测试用例设计过程中,也许就是个不能再普通的ctrl+f,但它的意义和战略地位却是非常有必要的。大胆的使用计算机的能力进行逻辑点自查,辅助产品、开发者、测试者信息的获取和识别;
  3. 【feature生命周期管理】
    总有一些feature具有自己历史约束条件下的使命,完成使命之后,就毫无意义。产品经理也好、开发者也好,对自己的产品规划、代码规划,都需要做好必要的生命周期管理,描述清楚产生的环境约束是什么?当下承担的使命是什么?演进和消亡的条件又是什么?过渡承接取而代之的又是什么?
  4. 【把MECE带到思考的方式里】
    完全独立,互不相关,多么美妙的划分啊!这座灯塔的指引下,构建自己的信息框架、思维框架,支撑具象的产品和feature以及日常的功能优化。虽然很难,但这也是指导的原则,将意识贯穿到团队成员的思维和日常工作才是可以落地的抓手,最终为改善和保障质量服务。

回头发现,上述几点竟然都不约而同的符合MECE原则(见本文第一部分内容释义),对于一个产品经理来说,应用得当,也将会大大支撑其以下能力属性值的提升:问题分析与解决、需求分析与挖掘、团队协作与沟通。

四、总结与展望

通过这次实战案例的反思与总结,深刻体会到MECE原则在产品设计、产品迭代和产品问题分析等环节中的重要作用。作为一名产品经理(其实是任何职场同胞们),希望将MECE原则融入日常工作中,不断提升自己的思考能力和解决问题的能力,努力让世界变得更加美好!

产品设计的前奏,哪里是流程设计啊!

流程设计可以代替产品设计吗?当然不可以!

为什么有了流程设计,就能直入产品实现主题了?大逆不道啊!

作为内部定义的高P、高PM,根据流程设计草案,就直接给业务部门讲数据表,给业务部门直接讲按钮交互…讲数据变动的系统逻辑…😯如果你是业务人员,是不是也要醉了…

业务听的、看的懵逼一头,心里os大概率是:能不能说人话?!

不事先锚定业务的核心诉求和目标,结果上来一通实现描绘:数据实现、功能实现、系统逻辑,谁不懵逼啊,换做自己是用户代表,就不信你的心不慌。就想问,“这一堆东西怎么和我的实际工作产生了联系,任督二脉何在?如何就打通了呢?”

以上这种场景,引发我们思考,有流程小组的团队协作中,产品方案沟通、设计到底应该如何开展?

【产品方案沟通的路径是需要规划的】:

a·用户想要,当然也需要先明确表达自己,发出自己的声音,并且希望被听到、关注到

b·用户想要确认自己的表达被理解,渴望对齐信息背景

c·P们需要抽象提炼核心诉求和场景进行确认

流程设计是基于业务价值流的考量,进行的主要业务价值链构建。产品设计当然不能直接基于流程设计,产品建构需要从业务中/市场中找到业务模型或者叫做交易模型,同时也需要从“用户”群体中挖掘出来用户模型。这时候你发现,流程设计在哪里?其实是交易模型中的一部分。

这件事回到正轨,用户是先有了期望后产生于需求,表现为用户的诉求/实现YY。哪里是上来有了流程设计,就单相思的认为我们非常清楚。用户的诉求和实现yy,哪里是产品需求啊。

用户可以表达,但别参与设计,因为通常的用户都是一个个的个体,个体根本不是我们的用户,如果要做用户角色,那一定不是某一个人。除非我们绝对为一个人做产品实现。

再说一遍:

一个人 ≠ 用户

流程设计 ≠ 产品设计原则