阿里妹导读:对事物的归类分组是咱们人类的天性,咱们的大脑会自动将发现的全部事物以某种持续组织起来。但如何组织才能帮助咱们解决工做和生活中出现的各类复杂问题?今天,咱们请阿里高级技术专家张建飞分享他的黄金三步法。
咱们常常说软件开发中,没有银弹。的确,单看软件领域,不多有什么方法论是普适的。然而再拔高一些,跳出软件的范畴,有一些东西是普适的。微信
最近,我有一个新发现:我发现“归类分组”在咱们解决问题中起着巨大的做用。而这里的“问题”不只仅限于软件设计,从平常生活、产品设计到公司战略、生物分类。都有它的身影。架构
这是为何呢?究其缘由可能有两个:框架
1.归类分组是抽象的重要方法,解决复杂问题咱们离不开抽象。
2.归类分组是结构化的重要步骤,结构化的表达离不开归类分组。dom
固然,归类分组要先有素材能够“归类”才行。所以,完整的方法论是这样的,我给他起了一个好听的名字——解决问题黄金三步:定义问题——分解问题——归类分组。工具
这三步的详细操做以下:spa
如上图所示,经过黄金三步之后,咱们就能够获得一个形同“金字塔”的结构,也就是咱们常常说的金字塔结构。根据问题的复杂程度,这个金字塔结构多是两层,也多是三层和多层。架构设计
看似简单的三步操做会有那么大的做用吗?废话很少说,直接上案例。设计
你出门买报纸,你老婆说家里冰箱空了,顺便带点东西回来吧。她给你列了一个清单,里面有葡萄、橘子、咸鸭蛋、土豆、鸡蛋。你说就这么多了吗?她说苹果和胡萝卜也能够买一点。当你准备出门的时候,她说家里的牛奶和酸奶也没有了,最好也买一点回来。3d
你以为你能把老婆交代的东西都买齐吗?我看很难,由于咱们的大脑短时间记忆没法一次容纳7个以上的记忆项目,超过5个时,咱们就会开始将不一样的项目归类到不一样的逻辑范畴,以便于记忆。blog
若是咱们将葡萄、橘子、牛奶、咸鸭蛋、土豆、鸡蛋、胡萝、苹果、酸奶。按照逻辑关系,进行下归类分组,好比把葡萄、橘子、苹果归为水果类,把土豆、胡萝卜归为蔬菜类,即可以大大帮助咱们提升记忆效率。
注意这里分类的做用不仅是将一组9个概念,分红每组各有4个、3个和2个概念的3组概念,由于这样仍是9个概念,你所要作的是提升一个抽象层次,将大脑须要处理的9个项目变成3个项目。
若是你已经这么作了,恭喜你,你已经在实践黄金三步了:
这就是结构化思惟,下次你再接到老婆这样的“需求”,记得把这个方法论用上,她必定会对你另眼相看。
定义问题
“小张,客户对销售报告和库存报告不满意,你去看一下什么缘由。” 面对这种典型的工做问题,你打算怎么处理呢?
分解问题
首先,你确定要去调研客户不满意的缘由,通过调查你发现,客户不满意主要有如下缘由形成的:
虽然你作了大量的工做,调查也很充分。可是,若是你要是把这8个缘由直接给老板汇报,估计效果不会太好。你能够本身作个试验,仔细阅读上面的列表3分钟,你能从中得到什么?一样的,你老板看到这样的罗列也会是一脸懵逼,不知道重点在哪。
归类分组
因此咱们有必要加上第三步,对问题进行进一步的归类分组,咱们能够将8个问题归纳为3组:
进行分组以后,咱们就能够获得以下的金字塔结构:
这种结构化的表达,很明显让问题的表述更加清晰。领导也能够很快抓住问题的要点,并做出相应的决策。固然,这里是为了着重介绍归类分组,真正的汇报你还要提供对应的解决方案,而后让老板作“选择题”。
你遇到一个至关复杂的业务场景,在这个业务操做中,涉及到大量的校验和执行操做。这种代码,若是没有必定的策略,很容易写成大泥球。
定义问题
例如,在咱们的业务中有一个商品上架的操做,是一个很是复杂的业务操做。
分解问题
对这种业务问题的分解,一般是产品经理的职责,可是做为工程师也不能彻底依赖PRD。由于产品视角和工程视角仍是有差异的。
针对“商品上架”,咱们作了以下的功能分解:
归类分组
一样,在分解以后,咱们须要有一个归类分组的过程。不然,这些步骤的平铺会让代码显得凌乱,不方便记忆和维护。经过分析,咱们能够把分解后的步骤分红三个阶段:
经过黄金三步,咱们能够获得以下的金字塔结构:
最后,咱们按照这个结构去组织咱们的代码,整个代码结构会更加清晰,代码的可维护性也会好不少。
应用架构主要解决的是模块、组件定义和模块、组件关系的问题。
从宏观层面来讲,架构设计也是遵循这三个步骤的。好比,咱们的架构要如何分层,分模块、分组件就是在作问题分解。而后,模块和组件要归属在哪一个层次,要如何命名,就是在作抽象,在作分类归组。
在综合考虑功能属性+质量属性,而后经过黄金三步,就能获得咱们想要的架构设计。例如,咱们的COLA 2.0架构也是在这个方法论的指导下完成的。
定义问题
“小张,为了作新零售,咱们打算作一款智能互联网POS机,你先作一下产品设计。”
分解问题
经过调研你发现,做为POS机,其核心功能是收银和经营管理。因此至少须要包含收银的功能、服务核销的功能、商品管理的功能、库存管理的功能等等。
但若是仅仅是知足这些功能,和传统的POS并无多大的区别,为了知足“智能”和“互联网”的要求,你去深刻百度了一下智能POS应该具有的功能,大体包含如下功能:
在问题分解阶段,咱们应该尽可能多的收集信息,多发散,多头脑风暴。
归类分组
发散完,咱们仍是要收回来。在收敛以前,咱们先看一下产品框架应该包含哪些东西,一般,一个产品架构至少要包含三个层次:
在这三个层次的基础上,咱们再对每一个层次内的模块进行分组。例如在功能模块层,咱们要对功能进行分类,让分散的功能点内聚成更大的产品模块(体如今用户界面上,每每是一级菜单和子菜单的关系)。
好比对于POS的收银产品模块,咱们能够提供如下的产品功能:
经过层次划分,模块划分咱们就能够获得一个相对清晰的产品架构,以智能POS为例,咱们能够画出以下的产品架构:
经过上面的案例,我想你已经领会到黄金三步:定义问题——分解问题——归类分组的要义了。其中前两步相对比较直观,而第三步每每是不容易作好,也容易被忽略的关键步骤。
实际上,对事物的归类分组是咱们人类的天性。人类大脑会自动将发现的全部事物以某种持续组织起来。基本上,大脑会认为同时发生的任何事物之间都存在某种关联,而且会将这些事物按某种逻辑模式组织起来。
好比,下面这张图片:
不管是谁,乍一看到上面的六个黑点,都会认为共有两组墨点,每组三个。形成这种印象的缘由主要是有些黑点之间的距离比另外一些黑点之间的距离大。
空间是一个相对比较直观的逻辑关系,然而,并非全部的逻辑关系都是如此的显性化。实际上,不少的概念会在多个维度进行交叉耦合,这就给咱们的归类分组带来了很大的挑战。
生物分类学
生物分类学一般直接称分类学(Taxonomy),是一门研究生物类群间的异同以及异同程度,阐明生物间的亲缘关系、基因遗传、物种进化过程和发展规律的基础科学。
最流行的分类是五界系统。一般包括七个主要级别:界(Kingdom)、门(Phylum)、纲(Class)、目(Order)、科(Family)、属(Genus)、种(Species)。种(物种)是基本单元,近缘的种归合为属,近缘的属归合为科,科隶于目,目隶于纲,纲隶于门,门隶于界。
不过度类学到不是一门很严谨的“科学”。就像比尔.布莱森在《万物简史》里说的:
分类学有时候被描述成一门科学,有时候被描述成一种艺术,但实际上那是一个战场。即便到了今天,那个体系比许多人认为的还要混乱。以描述生物基本结构的门的划分为例。许多生物学家坚持认为总数30个门,但有的认为20来个门,而爱德华在《生命的多样性》一书里提出的数字高达使人吃惊的89门。
因而可知,分类并不像咱们想的那么简单。咱们观察事物的视角不一样,对问题的认知程度不一样,得出来的分类极可能也彻底不一样。
特别是当概念之间有交叉状况,分类就会变得更加棘手。好比,在你的笔记本中,有“读书笔记”和“哲学笔记”两个平级的分类,此时你阅读了一本哲学书籍,那么你会把这本书的读书笔记放在哪一个分类里呢?
分类的原则
分类的基本原则是MECE法则。透过结构看世界,说的就是MECE法则。
MECE法则即mutually exclusive collectively exhaustive的缩写,是麦肯锡咨询顾问芭芭拉·明托在《金字塔原理》中提出的一个思考工具,意思是“相互独立,彻底穷尽”,也常被称为“不重叠,不遗漏”。
MECE原则的思想精髓,就是全维度的去分析一件事情,不要有遗漏和重复的部分。
咱们能够借助已有的结构化思惟模型(分类的框架)来分析问题,确保每一层要素之间“不重复、不遗漏”。
分类的思惟模型
实际上,在上文中咱们已经提到了一些分类的思惟模型。好比,在应用架构中,咱们一般有展示层、控制层、应用层、领域层和基础实施层;在产品架构中,有用户感知层、功能模块层、数据层。这些框架能够有效的指导咱们在各自领域中开展工做。
相似于这样的分类思考模型还有不少,好比:
1.制定市场营销策略的“4P”模型,即产品策略(Product Strategy)、价格策略(Price Strategy)、渠道策略(Place Strategy)、促销策略(Promotion Strategy)。
2.分析问题的“5W2H"模型,即Why、What、Who、When、Where、How和How much。
3.思考组织战略的“7S”模型,即经营策略(Srategy)、组织结构(Structure)、运营系统(System)、经营风格(Style)、职员(Staff)、组织技能(Skill)和共享价值观(Shared value)。
4.分析竞争力的SWOT模型,SWOT分析表明分析企业优点(Strengths)、劣势(Weakness)、机会(Opportunity)和威胁(Threats)。
5.制定目标的SMART模型,即制定目标要知足肯定性(Specific) 、可度量性(Measurable)、可实现性(Attainable)、相关性(Relevant)和时效性(Time-based)。
这些思惟模型都是宝贵的经验总结,至关于已经帮咱们作好了第三步“归类分组”的工做,咱们只须要按照模型制定的框架往里面填充要素便可。
所以擅用模型,活用框架。能够极大的提高咱们解决问题的效率,同时帮助咱们作更加全面的、更加结构化的思考,作了“无遗漏,不重复”。
本文做者:从码农到工匠
本文来自云栖社区合做伙伴“阿里技术”,如需转载请联系原做者。