141 lines
12 KiB
Markdown
141 lines
12 KiB
Markdown
# 26 | 你解决问题的能力有多强?
|
||
|
||
专栏读到现在,你有没有想过,公司招人的目的是什么?你可能说,是为了完成工作任务。是的,进一步说,是为了解决问题。这里的问题,可能是技术问题,也可能是业务或者管理问题。工作,就是一个问题跟着一个问题,面试官考查你的经验、技能、潜力、动机,归根到底,就是考查你解决问题的能力。
|
||
|
||
作为“贯通篇”的最后一篇文章,我们综合看一下:解决问题的能力究竟体现在什么地方,怎么培养解决问题的能力,以及怎样在面试过程中展现你解决问题的能力。
|
||
|
||
## 什么是解决问题的能力
|
||
|
||
说到解决问题的能力,我们先要定义什么叫“问题”。我在这里把它划分为三层含义:错误、提高、未知的机会。
|
||
|
||
* **错误。**需要找到问题原因,进行修复。
|
||
|
||
* **提高。**当前状况不错,但还有上升空间,可以进一步提高。比如,提高吞吐量。
|
||
|
||
* **未知的机会。**新的尝试,和拓展到一个新的领域。比如,研究一个新的课题。
|
||
|
||
|
||
这三层内容其实本质是一样的:改变现有的工作。我将它们笼统地称为“问题”。说到这里,你是否对“工作就是一个问题跟着一个问题”有了新的理解呢?
|
||
|
||
说回到解决问题的能力,它体现在**找到问题**、**找到解决方案**、**复盘问题**三个步骤上。这需要很强的逻辑思维和抽象能力,你可以遵循一套通用的方法或者模式来解决问题,从而让自己更加专注在问题的解决方案上,以此为基础探索不同的选项,然后基于目标和项目经验对适用选项进行决策。
|
||
|
||
#### 1\. 找到问题
|
||
|
||
**这是指发现、分析和定位问题,包括看到问题的“症状”,通过分析调查,找到问题发生的原因。**
|
||
|
||
对于错误,作为工程师,有时会在“症状”未暴露时,发现代码、配置或者数据错误,直接更正,避免损失。这种“由内而外”发现问题的方式,是损失最小、最省力省时的做法。
|
||
|
||
但是很遗憾,很多“雷”都是在事后通过“症状”发作,甚至形成“综合症”后才被发现的。这种“由表及里”的逆推调查方式,难度大,压力也大,损失也大。也正因为如此,你需要更强的逻辑思维能力,以及拨开现象看本质的能力。所以,我们经常嘉奖那些力挽狂澜的救火队员。可是,那些一开始就把质量做好,无声无响把问题消灭于无形的人,不是更应该奖励和给予认可么?
|
||
|
||
**对于提高和机会,无论是技术的、业务的,还是管理的,首先要能够识别出来。我们很容易识别错误,但是很难在平庸中想清楚怎么提高。**
|
||
|
||
面试中,我常问应聘者:“这个项目有什么待提高的?” 答案大体可归为以下几类:
|
||
|
||
* “项目质量很好,没什么特别要提高的。” 这类回答可能是怕暴露问题惹火烧身,也可能是真的没看到什么提高项。
|
||
|
||
* “因为工期紧,有些技术债,需要提高下。” 这类回答提出了一些不痛不痒的普遍问题,不能展示应聘者的独到见解。
|
||
|
||
* “这个社区产品用户活跃度半年不见增长,调研后发现是讨论区缺少级联回复,这个功能的实现难点在于XX。” 这样的回答,很明显一针见血地指出了问题所在, 可以展现应聘者的深度思考。
|
||
|
||
|
||
**在发现提高和机会之后,你需要将之界定成结构清晰的问题,包括目标、边界和验收标准,从杂乱的工作中抽离出低耦合、高内聚的工作块,以便于团队协作,各个击破。而问题定义的效果,依赖于你对工作细节的认知深度,还有你的项目经验和洞察力。**
|
||
|
||
分析问题方面,菜鸟和高手的区别就在于:前者在分析问题时流于问题表象,无法直接触及问题本质;而高手正好相反,他能够直达问题本质,并且能够快速分析和定位问题。因此,你重点需要培养:从问题表象(比如日志、系统错误、后台数据等提取出相关信息),直接映射到技术或者业务上导致产生这种表象的问题本质。然而,这并非易事,这要求你在技术和业务领域日积月累,拥有良好的技术感知力,并且注意业务上不断精进,才有机会做到从问题表象中抓取指向问题症结的重要信息。
|
||
|
||
在分析问题的基础上,项目中产生的信息都值得你深入挖掘,这个信息意味着什么,为什么是那么回事,对你会有什么样的直接或者间接影响,任何时候你都要有批判性思维,对自己也不丝毫吝啬。因为,快速定位问题的能力取决于你所提取的信息以及这些信息间的关联,有些重要信息可能就是你脑中闪现过的,有些重要信息或许就隐藏在某位同事不经意的聊天中,有些重要信息甚至需要从以前解决的问题中推导出来 …… 在此我不一一列举。
|
||
|
||
#### 2\. 妥善解决问题
|
||
|
||
当你找到了问题的原因之后,可以遵循下面的步骤来解决问题:
|
||
|
||
* 探索多种解决方案;
|
||
|
||
* 比较和决策;
|
||
|
||
* 实施解决方案。
|
||
|
||
|
||
**首先,来看如何探索方案。**解决方案并不唯一,它可能是:
|
||
|
||
* 技术层面,比如修正编码或数据问题、自动化控制、引入监控工具;
|
||
|
||
* 流程层面,比如加强代码评审流程、改变上线审批控制、增强沟通、把线下改为线上操作等;
|
||
|
||
* 组织层面,比如加强人员培训、调整角色分工等。
|
||
|
||
|
||
因此,探索解决方案是一个思维发散的过程,要发掘出多个方案,你不能局限于惯性思维,而应该相信总有不同或更好的解决方法,从而积极探索。这里也恰恰体现了你的学习能力和创新能力。
|
||
|
||
**其次,再来说决策。**既然有不同的解决方案,如何确定哪个最优?什么叫“最优”呢?这需要你充分了解问题的上下文(包括技术上或者业务上的约束、组织的策略导向,甚者可能是团队政治因素等),问题的解决一定脱离不了这些上下文的制约,你需要综合考虑这些约束从而优中选优,而不是寄希望于某方面最佳。如果只放眼在最完美的技术上,解决效果不一定好。
|
||
|
||
说到技术方案的决策,顺便提一下,我会考查应聘者对比多个技术方案的方法、维度,以及衡量标准。如何评估方案的合理性、易用性,资源消耗,次生问题,用户和团队的接受度等,这些方面都是决策中需要考虑的。
|
||
|
||
**最后,来谈谈实施方案。**根据问题的影响面和复杂度,解决方案可以分步实施:
|
||
|
||
* 快速修复,先止血;
|
||
|
||
* 长期修复,为使类似的问题将来不再发生,从根本上解决问题。
|
||
|
||
|
||
当同时处理多个问题时,一定要分清轻重缓急,明确主要问题和紧急问题,着重于解决那些有最大价值的方面;也一定要保持开放的头脑,勇于采用新的手段,以及探索不同的解决方案;同时,需要把问题从大化小,从复杂化简单,运用分治的思想,这有利于团队成员一起更高效地协作。
|
||
|
||
面试的很多问题都和解决方案相关。对于技术问题的解决,这是考查应聘者是否“扎根技术、着眼业务、懂得管理”的好时机:
|
||
|
||
* 通过回答中对技术选型的介绍,可以看出你的技术能力;
|
||
|
||
* 通过结果验证,可以看出你对业务问题的关心程度;
|
||
|
||
* 通过对组织流程层面的理解,可以看出你的管理意识。
|
||
|
||
|
||
这部分是面试中项目展示的重头戏,你一定要慎重对待。
|
||
|
||
#### 3\. 验证和复盘
|
||
|
||
也就是说,你需要验证结果是否达到了预期。通过持续监控修复后产品的运行状态和结果,以及用户反馈,来看问题解决的满意程度。
|
||
|
||
问题的解决或许迫于时间或者投入产出比的考量,采用的并不是最优的解决方案,没关系,上面说到问题上下文的限制,因为它的存在,我们在决策时设定了对解决结果的容忍度。只要在容忍范围内,就是可以接受的。
|
||
|
||
对结果的验证和满意度的衡量,可以触发我们对解决这个问题的整体复盘。我们除了要知道这个问题是怎么解决的,还要知道为什么那么解决,以及如果用其他解决方案会怎样,这往往需要你进一步深究下问题涉及的技术或者业务,积累的经验对于你解决新问题会非常有益。
|
||
|
||
而且,在解决问题时的忙碌中,我们容易“当局者迷”;在事后,你终于可以冷静下来,跳出局限,从客观的角度,审视自己是否思路正确,有没有考虑不周全的地方,更容易做到“旁观者清”,这就是复盘的好处。
|
||
|
||
## 修正错误的效果
|
||
|
||
**评价一个人解决问题能力的强弱,除了看以上解决问题的过程,还要看最终效果。**对于修正错误类的问题,我把效果分成以下四个层次。
|
||
|
||
1. **只消除了当前影响。**这种修复大多只是解决了表面问题,去除了症状,所谓“头疼医头,脚痛医脚”。比如,某种不可重现的订单金额出错,只去数据库里把金额改成正确的数值,而不去分析订单计算逻辑。这种“打补丁”的方法,只是在止血的情况下使用,而事后,你一定要找到问题根源彻底修正,否则问题还会反复发生。
|
||
|
||
2. **彻底根除了错误。**这是我们希望的长效解决方案。这要求分析足够深入,触及内部逻辑,进行有意义的修复,避免以后此类错误再次发生。
|
||
|
||
3. **变问题为机会。**这是指当我们解决问题时,发现机会,扭转局势,取得收获。举个例子,我们这个专栏的文章,有一次发现被某个公众号不合规地抄袭。极客时间的小分队在与公众号主人交涉后,不但顺利使对方撤掉不合规的文章,还和对方谈成了合作伙伴。
|
||
|
||
4. **分享方法,教导他人。**在对问题复盘的过程中,把经验教训的总结文档化,分享给相关的人和团队,供将来出现问题时参考,教导他人不要再犯同样的问题。这样一来,你的经验和能力使整个团队都受益,也是你影响力和领导力的展现。
|
||
|
||
|
||
以上是逐层上升的关系,希望你在解决问题过程中,尽量利用自己的技能,力所能及地做到最好。这样,面试时你才会更自信地展示自己解决问题的能力。
|
||
|
||
## 解决问题能力的培养
|
||
|
||
要系统地讲解决问题能力的培养,这样短的篇幅是很难讲清的,在此我只希望能够为你提供一些方法和思路,并用一个尽量简单的表格形式呈现,以供你参考对照。其中,你可以从左边对问题的把握入手,着重于要解决的问题的方方面面,不断培养分析问题和解决问题的能力。篇幅所限,这里我就不再展开细说了。
|
||
|
||
![](https://static001.geekbang.org/resource/image/32/9c/32312e6b7a33e930063e4ed71369279c.png)
|
||
|
||
## 总结
|
||
|
||
总结一下今天的内容。我们讨论了解决问题能力的体现:在识别问题和定义问题时,既要识别错误,也要能明确怎么提高;在解决问题时,要尽量探索多个方案,周全地考虑问题上下文的约束,分阶段地实施方案;最后,别忘了验证结果和复盘。
|
||
|
||
我还谈到了解决问题的四个层次:只消除当前影响、彻底根除错误、变问题为机会,以及分享和教导他人。期望你在面试时有针对性地运用好前面讨论的方法和技巧,力争更立体地把你解决问题的能力呈现给面试官。
|
||
|
||
解决问题的过程中,要把“贯通篇”的几篇文章所讲的学习能力、精益能力、协作能力、领导力综合运用到实际工作中,追求预期结果。想一想你在其中,是解决问题的主导者、中流砥柱,还是救火者?每一个角色都有它存在的价值,但我希望你至少是个辅助者,不要总做旁观者,千万不要成为阻碍者。
|
||
|
||
## 思考时间
|
||
|
||
结合你的工作经历,请思考下面的问题:
|
||
|
||
* 你主导解决过哪个问题,第一次失败了?后面经过怎么样的纠正,才成功的?
|
||
|
||
欢迎你在留言区留言,一起讨论。如果今天的文章让你有所收获,也欢迎你把它分享给你的朋友。
|
||
|
||
![](https://static001.geekbang.org/resource/image/10/54/10e37c40fe7cfac5b0ca0710439ecf54.jpg)
|
||
|