产品设计——一见复杂先分层
分层是一种重要的思考和解决问题的方法。它可以帮助我们从宏观上把握问题,分阶段设定目标,再通过分解来具体实施。无论是组织架构设计,还是软件开发,分层都发挥着重要作用。掌握分层思维,可以让我们更从容地面对复杂问题,迈出解决问题的第一步。
我们要谈一个同行们都会遇到的问题,面对复杂需求时,如何迈出第一步?这里不卖关子,豆芽君的解法就是对问题进行分层。
我们先回答一个问题:分层和分解有什么区别?
一、分层和分解有何区别?
学习过金字塔原理、结构化思维、软件开发设计的朋友,对分解都不陌生。它是一种结构主义,假设了要完成一件复杂的事,通过逐层分解,最终是可以分解成一个个具体的动作。
比如美食博主们要做一份蒜香虾,他能把这份美食的材料组成、烹饪过程都分解得一清二楚。屏幕前的我们,仿佛看完后,自己已经预演操作了一遍。
那么我们今天要说的分层又是什么?分层相比分解,它更抽象。同样举个我们常见的例子来感受下分层。
公司定了一个产品目标,要向市场推出一套新的办公系统。如果你是一名产品经理,你会如何制定这个产品开发计划?这件事有标准做法吗?
有的产品经理会采用先调研内部高层的目标,再寻找市面的竞品,最后再来梳理产品的用户群、功能定位、差异化。而有的产品经理则会先开展外部调研,了解外部客户的需求,再回来和公司高层分享市场信息,最后再来考虑自己的产品设计。
我们能说哪种做法更正确吗?这很难说。他们的差异更多是取决于他们所在组织的工作文化和产品经理的工作方式偏好。
但你认真对比下这两种做法,能抽象出它们有什么共性吗?
建议你想一想,再往下看
简单地理解,两种做法的背后都是先调研、分析,再定目标。虽然它们的具体步骤是不同的,但有一点是相同的:先规划(规划层),再行动(执行层)。
认真观察我们周围,不少人接到一项任务,习惯性就开始采用【分解】的做法,他们相比那些想都不想,直接开干的人已经上了一个台阶。但大家具体一聊的话,会发现他们常常面临诸多问题,不知道怎么分解才是对的。原因是他们把不同层次的问题都夹杂在一起考虑,导致无从开始做分解。
这也是我们今天分享【分层】这个主题的意义所在。
二、分层到底能解决什么问题?
我们先看看分层的一些典型应用:
从公司的职务来看,至少分为高层、中层、执行层。大家有没认真想过不同职务层的人他们如果参与到同一件事,他们各自的工作是什么吗?这里就是我们要讲的分层最通俗的应用。
一般来说高层解决定目标的事,中层处理定流程、规范的事,执行层干类似搬砖的事(没有贬低任何一方得事,高层和中层可能也不会搬砖了,各司其职而已)。
那么为什么要对组织架构进行分层?其实这种分层对应着组织在开展业务过程中所需的分工、协作。有资源、有行业经验的高层,他们负责制定业务的战略、目标;有管理经验、能力强的中层,他们则负责梳理业务开展的规范、分工;有专业能力的执行层,负责落地具体的分工任务。
大家有继续想一个更复杂的问题?这三者分工的事,最终能像胶水粘出一件像样的成品吗?不然这就是各说各话,各做各事,最后干的结果可想而知。
好,我们重点介绍下在软件的分层设计,这种工程领域,它们是如何分层以及连接?(以下内容部分来自AI,豆芽君根据我们读者的背景知识进行调整)。
三层架构是一种经典的软件设计模式,将应用程序划分为三个逻辑上的层次,分别是表示层、业务逻辑层、数据访问层。
下面是每层的具体分工以及它们之间的协作方式:
1)表示层: 系统与用户交互的界面,负责展示数据和接收用户输入。它处理图形用户界面的显示逻辑、用户输入验证以及用户操作响应,但不包含业务处理逻辑。
2)业务逻辑层: 系统的核心,封装了所有的业务规则和逻辑处理。它接收来自表示层的请求,进行必要的业务处理(如计算、事务处理、逻辑判断等),并可能调用数据访问层来获取或更新数据,最后将处理结果返回给表示层。
3)数据访问层: 负责与持久化数据存储(如数据库、文件系统)进行交互,包括数据的读取、写入、更新和删除操作。它的主要目的是为业务逻辑层提供一个抽象层,隐藏数据存储的具体细节。
层与层之间的工作衔接:
- 表示层向业务逻辑层请求数据或服务,当用户在界面上执行操作时,表示层收集用户输入,将其封装成请求或参数,然后调用业务逻辑层的接口或方法。
- 业务逻辑层接收到表示层的请求后,执行相应的业务逻辑处理,如果需要访问数据库,它会调用数据访问层的方法来完成数据的CRUD(创建、读取、更新、删除)操作。
- 数据访问层处理与数据库的通信,执行SQL查询或其他数据访问操作,并将查询结果返回给业务逻辑层。
- 业务逻辑层根据从数据访问层获得的数据,进一步处理(如格式转换、逻辑运算等),然后将最终结果封装好,通过接口返回给表示层。
- 最后,表示层接收到来自业务逻辑层的结果,更新用户界面,展示所需的信息或处理结果,完成与用户的交互循环。
相信具备点计算机基础的你,是可以看出表示层、业务逻辑层、数据访问层是通过一种自上而下请求,然后自底向上返回的方式来完成三者的连接的。
不知道好奇的你,会不会进一步追问,难道不分层不行吗?
答案是:真不行。理由是一方面人员的术业有专攻,很少有工程师同时掌握前后端的所有开发技术;另一方面业务的发展、变化,如果系统不分层,会造成每一个调整都牵一发动全身,影响业务的正常开展。
所以说分层是为专业化、复杂性而生的。
讲到这,你回过头来想想,为什么要先分层?再考虑分解?
分层的目的是考虑不同阶段所要达成的目标,而分解是对每个层次目标的具体工作分解。如果跳过分层,直接进入分解,就容易扩大问题范围,造成问题失焦。
三、如果我想了解分层,怎么入门?
听起来分层好像很厉害,但又很抽象。如果我想用下【分层】这种做法,可以怎么样上手?
豆芽君又偷懒用了下,用AI查了分层的一些应用工具。你可以网上去看看三个工具:分层直方图、分层排列图和层次分析法,和它们的具体应用案例。
相信看完后,你就不会觉得这个概念太玄乎,动手去分析一个复杂问题的分层吧。比如说时下最火的AI,你能分析下它的组成是什么吗?普通人如果想进入这个领域去做些副业,可以怎么开始?欢迎你来一起讨论。
本文由人人都是产品经理作者【豆芽悟】,微信公众号:【豆芽悟】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议。
- 目前还没评论,等你发挥!