面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

欢迎你们关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思惟、职场分享、产品思考等等,同时欢迎你们加我我的微信「java_front」一块儿交流学习前端

0 文章概述

你们想想工做中有没有遇到如下状况:一位同事用了很长时间罗列了不少事实和数据向你说明一件事情,可是你听完根本不知道他想要说什么。另外一位同事用了大量笔墨编写了技术方案,不只有文字还有图表,可是你看完也不知道这个方案到底要解决什么问题以及如何落地。java

上述状况的出现大几率是由于表述者没有使用结构化方法进行阐释,信息看似很是丰富可是杂乱无章,让人很难抓住重点,因此咱们须要引入结构化思惟方法论。面试

金字塔原理就是一个由芭芭拉·明托女士提出的结构化思惟方法论,风靡世界五十年并在各个行业都取得过很好的效果。本文咱们就运用金字塔原理分析一个技术系统优化方案,并看看如何落地执行,最终总结出一个闭环工具。数据库

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

1 怎么样提好一个问题

咱们在工做中作的全部事情,本质上都是为问题提供解决方案。不管咱们是提出一个方案,仍是优化一种场景,或者是自己就是在解决问题,因此想要阐释清楚咱们在作什么,第一步明确咱们正在解决什么问题很是关键。设计模式

那么应该如何阐释清楚问题呢?咱们可使用金字塔原理提出的结构化表达SCQA工具,这四个字母分别表明背景、冲突、疑问、回答。缓存

背景(Situation)是这个问题出现的环境,咱们对环境的描述必须是真实和朴素的,你们对这个描述都是承认的,甚至是能够产生共鸣的。微信

冲突(Complication)是在上述背景下出现了哪些矛盾,常见的类型有三种:哪些预期未达标、哪些流程不畅、哪些隐患还存在。架构

疑问(Question)是根据背景和冲突天然而然提出的问题,常见的类型有四种:应该作什么、应该如何作、是否应该作、为何会发生。框架

回答(Answer)是针对上述四类问题给出的答案,而回答就是金字塔结构的中心思想。运维

假设如今你想要向同事说明白技术方案应该如何实施,那么第一步就应该阐释清楚究竟是在解决什么问题,等到你们对问题达成必定共识以后再谈技术方案:

背景:业务数据量愈来愈大

冲突:响应常常超时现有系统难以支撑

疑问:应该作什么才可以支撑后续业务

回答:咱们应该优化系统

此时技术方案准备解决什么问题就清楚了,而对这个问题的回答就是金字塔结构的中心思想。下面咱们就要对这个中心思想使用金字塔原理进行结构化组织。

 

2 结构化方式组织回答

金字塔原理的核心思想并不复杂:一件事情能够总结出一个中心思想,这个中心思想能够由三至七个论点支持,每一个论点再能够由三至七个论据支持,基本结构以下:

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

对于金字塔原理仅仅分析到这里是不够的,咱们还应该进一步去分析金字塔原理的内在结构,而内在结构能够从纵向和横向两个维度分析:纵向结构体现告终论先行和以上统下两个原则,横向结构体现了归类分组和逻辑递进两个原则。

 

2.1 纵向结构

2.1.1 结论先行

结论先行是指开宗明义地展现中心思想,让听众一开始就明白沟通主旨,而若是把中心思想隐藏在沟经过程中,听众可能由于走神或者沟通讯息太多而失焦,根本不知道你在说什么。结论先行具体有如下六个方面:

先重要后次要

先框架后细节

先整体后细分

先论点后论据

先结论后缘由

先结果后过程

假设一个同事代码发布上线后致使系统故障,若是不使用结构化方法是这么表述的:

我看监控发现数据库负载升高,多是没有加索引致使的。我又发现频繁收到重复消息,是否是消息中间件有什么问题?监控还显示建立了大量线程,是否是线程池使用不当致使的?问题排查很难短期获得结论,咱们仍是先回滚代码至上一个版本吧

这位同事中心思想是问题缘由比较难排查,应该先回滚代码再分析问题,可是他把最重要的观点放在最后,不听到最后不知道他要作什么,而若是结论先行应该怎么表述呢?

咱们应当即当回滚代码,由于问题排查比较复杂,仍是先恢复系统再排查问题。可能的问题分三类:第一多是索引使用不当致使的数据库问题,第二多是中间件问题致使大量重复接收消息,第三多是线程池使用不当致使线程大量被建立。等到恢复正常以后咱们依次排查这些问题

咱们比较两段表述不难发现,第二段表述结构清晰不少,信息传达效率显著提高,这就是结论先行的优点所在。

 

2.1.2 以上统下

以上统下是指任何一个层的思想必须是其下一层思想的总结归纳,咱们分析一个例子进行说明:小王今天须要买牛肉、鸡蛋、萝卜、果汁、白菜、牛奶、青菜、鸡肉、酸奶,但这么多菜品他记不住,请你想办法帮助小王。

第一步咱们要对菜品自下而上进行聚合概括,这是一个找规律的过程。第二步再以上统下进行结构化表达从而帮助记忆。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

自下而上聚合咱们不难发现,牛肉、鸡肉、鸡蛋属于肉蛋类,白菜、青菜、萝卜属于蔬菜类,牛奶、果汁、酸奶属于饮品类,这样聚合以后咱们再以上统下进行结构化表达。

上述实例比较简单,由于元素之间的关联性比较容易寻找,可是真实场景是不会这么简单的,元素之间关联性并不容易创建,那么咱们应该如何从中心思想展开至第二层?

金字塔原理推荐使用疑问-回答式对话,经过设问的方式向下展开结构。那么应该问哪几个问题从而涵盖中心思想的要点?咱们能够参考5W2H分析法,尽可能作到要点不缺失:

What:是什么、作什么

Why:为何、什么缘由

Where:在哪里、从哪开始

When:开始结束时间、里程碑

Who:谁负责、谁来作、谁验收

How:怎么作、什么方法、从哪切入

How Much:作多少、各项指标是多少

在这个模型基础上咱们能够进行简化从而减小要素数量,这样更加有利于结构化表达和记忆。咱们通常选取What、Why、How这三个核心要素组成2W1H模型。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

2.1.3 实际应用

咱们看看结论先行和以上统下的实际应用。根据第一章节咱们使用SCQA工具获得了回答,这个回答就是金字塔结构中心思想,根据结论先行原则在金字塔顶端就要开门见山地展现中心思想。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

咱们再用2W1H模型组织论点,划分为何、为何和怎么作三个维度,这样金字塔的纵向结构就已经搭建完成。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

2.2 横向结构

2.2.1 归类分组

(1) 概括推理

咱们通常用概括推理和演绎推理两种方法进行归类分组,咱们先看概括推理。

概括推理是指把观察到的事实、规律概括总结为理论。这种推理方法是不严谨的,由于只要观察事实和信息是有限的,那么概括推理出来的结论就不必定是正确的。这就是逻辑错误中常见的一种:错误归因。

欧洲人看到的天鹅都是白色的,那么他们就概括总结说全部的天鹅都是白色的。当一只黑天鹅出现时,这个结论就被证实是错误的,这就是黑天鹅事件。

固然咱们不可能观察到全部事实,收集到全部信息,而通常是为了解决某个具体问题,咱们会收集侧重于某个角度的信息,创建特定模型去分析解决问题,这也不失为一种有效方法。

金字塔原理概括推理通常有如下四种维度:时间维度、结构维度、程度维度、经验维度。时间维度是根据自然时间线进行概括,结构维度根据组织结构进行概括,程度维度是根据程度级别进行概括,经验维度是根据已有经验进行概括。咱们分别来看上述四种维度的几种常见类型:

(1) 时间维度

事前、事中、过后

短时间、中期、长期

(2) 结构维度

信息部、行政部、人力部

开发组、测试组、运维组

(3) 程度维度

高级、中级、初级

重要、次要、不要

(4) 经验维度

市场战略3C理论

市场决策4P理论

高扩展、高可用、高性能

咱们选取时间维度和结构维度分析一个实例:怎样减小代码上线故障。从时间维度分析:事前须要作好代码测试,事中须要监控关键指标,过后须要进行分析复盘。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

从结构维度分析:开发人员须要完备单元测试,测试人员须要作好边界测试,运维人员须要完善监控平台。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

(2) 演绎推理

演绎推理是指根据公理、定理或者本身相信的观念,作出推理或者判断,获得结论。

这种方法从逻辑上来讲是严谨的。命题A是真的,推理出命题B也是真的,那是由于命题B的真实性包含在命题A中。

须要注意在逻辑上严谨,不是说结论必定是正确的。例如本身相信的观念最终被证实是错误的,那么获得结论也就是错误的。

这是一种自上而下的推理方法,由已知的公理、定理或者观念向下推理。使用这种方法,须要在出现问题的领域有必定的经验和积累。

标准式演绎推理分为大前提、小前提和结论:全部小鸟都会飞,这是一只小鸟,因此它会飞。

演绎推理还能够分为现象、缘由和解决方案三个要素:现象是开发代码质量不高,缘由是没有统一代码规约,解决方案是制定统一代码规约。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

2.2.2 逻辑递进

逻辑递进是指每种思想须要按照必定顺序进行排列,时间维度按照事前、事中、过后进行排列,程度级别按照高级、中级、初级进行排列。例如时间维度咱们还能够继续使用怎样减小代码上线故障案例,按照事前、事中、过后时间线进行排列,这种顺序更加符合理解和记忆习惯。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

3 综合实例

前面章节咱们介绍了SCQA和金字塔原理,本章节咱们用一个实例将结构化思惟方法论落地,并总结出一个闭环工具。

 

3.1 提出问题

咱们仍是以系统优化案例进行说明,第一步是使用SCQA提出问题从而引出回答。背景是业务数据量愈来愈大,冲突是响应常常超时现有系统难以支撑,疑问是应该作什么才可以支撑后续业务,回答是咱们应该优化系统,而回答就是金字塔结构的中心思想。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

3.2 给出回答

第二步是使用金字塔原理组织回答,在纵向结构上咱们经过设问的方式提出2W1H三个问题。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

在横向结构上咱们按照必定维度去组织论据,我选取了经验维度,在怎么作优化这个问题上选取3H理论指导优化工做,这个理论包含高扩展、高可用、高性能三个维度。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

高扩展强调系统可扩展性,包含划分清晰的领域边界,使用合适的设计模式,进行合理的组件抽象,遵照统一的代码规约。

高可用强调对系统的保护,面对大流量可能带来的非线性压力,咱们要作好降级、延时、隔离、冗余、告警和响应防止系统崩溃。

高性能强调系统的性能表现,咱们首先经过分析时延、负载、压测表现等指标了解系统能力,再从数据层、缓存、服务、WEB、前端、客户端、代理等层级思考优化方案。

由于须要组织和表达信息较多,咱们能够选择将金字塔旋转90度,这样作只是为了展现信息更加方便,在逻辑上并不改变金字塔结构。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

3.3 落地执行

咱们已经将回答进行告终构化表达,如今须要思考如何将回答落地执行,我认为能够从如下四个方面思考。

团队(Team):有多少人能够投入这个项目,人员构成是什么,例若有几个服务端和几个前端,人力的投入直接影响执行节奏。

切点(Pointcut):从哪里入手这是须要明确的,例如咱们作系统优化,能够先从一个耗时最长,性能最差的接口入手,用这个接口验证技术方案的可行性。

节奏(Rhythm):受限于开发人数和项目排期等因素,系统优化很难一步到位,因此咱们能够设置多个里程碑节点,规划短时间、中期、长期目标,这样大目标就被拆成几个小目标逐一实现。

结果(Result):系统优化的结果怎么样,投入了这么多时间和精力到底产出是什么,这是必需要回答和面对的问题。咱们能够把哪些预期未达标、哪些流程不畅、哪些隐患还存在等问题拿出来逐一检视。

咱们把SCQA和上述四个维度进行合并,组成SCQATPRR闭环工具,这个工具能够帮助设计方案减小缺失环节从而造成闭环。

面试官问金字塔思惟如何应用在技术系统,咱们聊了三十分钟

 

4 文章总结

本文首先分析了SCQA结构化工具,提好一个问题是解决问题的第一步。在初步给出答案后咱们能够进行第二步使用金字塔结构组织答案,纵向结构要符合结论先行、以上统下原则,横向结构要符合概括分组、逻辑递进原则。第三步在落地执行层面,咱们提出团队、切点、节奏和结果这四个维度,结合SCQA工具进而组成闭环工具。

须要说明的是结构化思考工具只是一个工具,解决问题的关键仍是咱们要在本专业领域钻研和精进,也要在平时注意将零散的专业知识进行概括整理,这样专业知识和工具相结合才会发挥更大的做用,但愿本文对你们有所帮助。

欢迎你们关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思惟、职场分享、产品思考等等,同时欢迎你们加我我的微信「java_front」一块儿交流学习

相关文章
相关标签/搜索