从学生开始,老师教我们有什么问题?如何找到标准答案。然而,经过十多年的研究,大多数人仍然不明白问题的本质。正确定义问题是成功的开始,是一个成功架构师的必要条件。今天,阿里巴巴资深技术专家张荣华从问题的本质出发,用“高层次思维”解决问题,告诉我们创新的核心,给我们一个高效工作的方法。一、问题的本质我也曾多次提出一个问题:什么是问题?虽然我们每天都在谈论它,但没有人能给出更合理的答案。以前没有想过这个问题,很多人对这个问题的理解还是不一样的。有人认为问题是计划难,有人认为问题是现实与目标的差距。我认为这些解释不够准确。尝试定义无果后查了很多资料,终于找到了一个比较合理的定义。目前,我觉得毛主席的解释比较合理:“问题就是事物的矛盾,矛盾没有解决,哪里就有问题。”而高管经常会问:你要解决的问题是什么?这里问题的定义是什么?其实潜台词是在问,这里的事物之间的矛盾是什么(已经发生的矛盾,将来会发生的矛盾,可能潜在发生的矛盾)。这种矛盾如果不及早解决,可能会激化,带来非常严重的后果。其他例子:中国人的财富增加和国内产品质量差之间存在矛盾,这个矛盾就是问题(已经发生的矛盾)。因此,我们必须提倡中国品质制造。如何利用新技术帮助消费者最快速、最准确地找到他们需要的产品,提高他们的幸福感(未来会出现的矛盾,要在矛盾发生之前解决)。以上问题的定义都是社会层面的问题,都是公司层面正在解决的问题。我们技术同学的工作中应该存在各种问题,比如QPS太低,RT太高,不稳定,研发效率低等等,这些问题的定义比较通俗一点。基本上大家只需要解决问题,而不需要定义问题。2、准确定义问题是成功的开始。多年来,笔者审阅过很多技术方案,也经历过乱七八糟的模块设计。大多数糟糕的设计基本上都不知道自己要解决什么问题。我总觉得这个我要解决问题,我要解决那个问题,我也想解决不是问题的问题。然后设计了一个解决所有“问题”的解决方案。但实际情况是,有些问题根本不是问题,有些问题确实是问题但不是核心问题,有些问题是核心问题,但暂时不是核心问题。相信在review的时候很多类似的解决方案都被屏蔽了,但是应该推出的还是有很多的。如何将这方面的损失降到最低?即在开始阶段就准确地定义问题,这也是为什么那么多思想家提倡问题定义的原因。著名思想家杜威说:“问题定义明确,问题就解决了一半。”爱因斯坦说:“发布一个问题往往比解决一个问题更重要,因为解决一个问题可能只是一个数学或实验室问题。但提出新问题、新可能性、从新角度看旧问题需要创造性的想象和标记科学的真正进步。”那么到底应该考虑什么问题呢?维度呢?我粗略的列了一张表,仅代表我自己的理解,不一定正确,也不全面。大家要批判性的看:这应该是三维图,有时间维度,主要维度和次要维度,紧急情况,紧急情况维度。你熟悉这个主次吗,紧急不紧急?是的,在很多方面都有类似的方法来高效地工作,把要做的事情分摊分为重要和紧急,重要和不紧急,不重要和紧急,不重要和不紧急。其实我不赞成把事情分成重要和不重要,紧急和不紧急。我建议你把问题分开你要把手头的事情解决成重要的不重要的,紧急的不紧急的,因为事情只是一种解决办法或者手段。分清问题本身的重要性和紧迫性就是思维的来源(包括升级问题)。填写这个表格,必须结合自己对业务和产品的理解,尤其是对业务的理解。没有业务理解,很难准确描述问题。但是这个问题的重要性是什么?我也想了半天,终于想出了一些比较自洽的解释。3.问题的严重性3.1问题严重性的定义当我们明确定义问题时,我们要设定解决问题的目标,但现状是残酷的,我们的目标与实际目标之间可能存在巨大的差距现状。差距的大小就是问题的严重程度,所以说:问题的严重程度就是希望(目标)与现实的差距!有的书或文章这样定义问题:问题=目标-现状,这个定义很模糊,因为目标-现状和这张图一样,往往显示差距,而差距往往让人联想到差距。用差距来描述问题是模棱两可的,让人很难一下子明白问题的本质。我们以性能问题为例。我们的目标是RT<1秒的请求比例大于98%。目前的状态是RT<1秒的请求比例是80%,所以这里的差距是98%-80%=18%,这个18%是问题的严重程度,但是这个18%绝对不是问题本身,这18%是问题的严重程度。3.2衡量问题严重性的挑战区分问题严重性的挑战有两个:现状:对现状的准确理解。比如这个例子,某系统80%的请求RT<1秒。Expectation(目标):对问题解决后的状态有清晰的描述。比如本例中RT<1秒的系统请求比例大于98%。对于数值的现状,我们很容易算出数值。只需从现状值中减去您的目标值即可得出问题的严重程度。对于难以量化的现状,需要找出问题的严重性。可能需要一些案例和统计数据。比如现在结构不合理,就是问题。这个问题严重到什么程度?你可以计算出最近六个月的需求在执行过程中,花费了多少工时,如果结构合理的话,可以节省多少工时。或者当前架构上迭代需求失败和bug的情况如何,评估重构后失败率和bug率会降低多少。只要其中一个现状和目标不明确,我们就很难判断问题的严重性。FBI警告:如果您不确定问题的严重程度(当前或未来),请不要轻举妄动,不要沉迷于解决方案的设计。不定义问题,不评估问题的严重性,往往是很多工程师普遍的思维习惯,大家可以坐下。4.问题分类基本上看这三类问题的字面意思就可以知道这三类问题的区别:修复类:本来应该是这样的,现在不是了,比如,原来的轮胎应该是充满了空气的,但是现在里面有一根钉子,所以我们要把轮胎找回来,这是一个恢复原状的问题。风险防范型:问题可能会发生也可能不会发生,但是一旦发生,危害是巨大的,所以我们不得不花费大量的精力去阻止这种潜在问题的发生。当谈到安全性和可用性时,很多工作都是规避风险的。这里比较尴尬的是,数字指标做了可能不会有什么提升,但如果不做,可能会出现特别严重的事故,带来极其负面的影响。追求理想型:知道未来会发生的矛盾是什么,提前解决未来必然会发生的矛盾。如果将这三个问题映射到架构上,那么应该描述如下:1)在架构上解决未来会遇到的问题:未来的业务问题已经明确预见,可以转化为未来的架构问题。提前做好架构准备(功能性和非功能性)。按照我的理解,我把它们分为两类:目标很明确,可以用数字来衡量:比如一个性能问题可以准确定义一个指标来衡量这个问题当前的具体量化值,多少RT应该减少多少毫秒,QPS应该增加多少,稳定性应该增加多少个9等等。基本上,非功能模块可以用数字来衡量。比如我们系统中数据移动的功能,目标明确,可以用数字衡量。或者,比如系统的可扩展性应该达到什么程度,是否满足95%以上的需求,不需要进行大量的重构。目标不明确:比如未来要往哪个方向走,做什么样的技术准备,很多类似的场景很难直接评价一个指标。愿景和使命可能只有一个。根据这个愿景和使命,我们可以分解问题,然后我们可以设置通往这个理想问题的路径。探索这个理想问题的过程相当复杂,需要考虑的因素太多。只能说我对这东西实在是经验不多,只能尽量用自己所学从上到下推导,以我现在的技术真的很难保证结果的正确性.2)解决架构中的当前问题:架构中的问题已经发生,应该识别、定义和解决架构中的当前问题(功能性&非功能性)。3)解决当前架构合理迭代的问题:我们对架构进行了大量的迭代,在迭代过程中往往很容易在架构上挖坑。我们应该尽量避免这种情况(功能性和非功能性)。这三大问题正是各线任意粒度的架构师需要时刻关注和提醒团队的三大问题。如果你不能定义这三个大问题,那么这可能是这里最大的问题。这里还有一个问题:即使是未来的架构,我们还是有分类的,一个是你走在最前面,一个是你跟在别人后面,你怎么跟上别人。这里应该有一个决策分支,告诉我们遇到一个场景应该用什么样的思维方式,但这只是个人的总结。每个人的脑海里应该都有一个类似的方法,这个方法也在不断的突破和修正。五、问题定义中的常见问题1、误把方法/手段当成“问题”提问。案例一:鲧治水重在堵法,他一辈子都在想怎么堵得更好。师:这里问题的定义是什么?小明:这里的问题是怎么堵!师:其他同学也在这里讲一下问题的定义?小红:这里的问题是洪水与生命财产的矛盾!阻塞只是解决这个问题的方法或手段。师:如果问题的定义是,问题是洪水与生命财产的矛盾,堵住只是一种方法,那么还有什么方法可以解决这个问题呢?小王:也可以用梳理的方法控水。小白:我们也可以搬走躲避洪水。师:嗯,这也是一种思路。案例2:如果我问我们的客户他们想要什么,他们会告诉我他们需要一匹更快的马。-先生。亨利·福特:这里问题的定义是什么?小明:这里的问题是如何让马跑得更快!师:还有同学能告诉我这里问题的定义是什么吗?小红:问题来了问题定义是如何更快的到达目的地,马只是一种手段。师:对,如果马只是一种手段,而不是问题的定义,还有什么手段可以解决我们说的问题。小王:根据到目的地的远近,我们可以选择坐飞机、坐火车或自驾。小明:老师,我不知道我不知道。我不知道有汽车、火车和飞机。我只知道马,所以我想的是如何让马跑得更快。师:是的,我们的局限往往是我们的认识所局限的。这种情况是不可避免的。唯一的办法就是不断学习,提高我们的认知。案例三:如何防控资金?师:这里问题的定义是什么?肖明:这里的问题是资金怎么防控,怎么防,怎么控。师:这里还有同学可以说说问题的定义吗?肖红:这里定义的问题是如何避免企业的财务损失,防控只是手段。小白:资产流失防控的直接问题是避免企业资金和声誉的损失。这个问题的背后是社会信任的问题。师:小白,你的名字虽然叫小白,但你的思维根本不是小白。很明显,你在思考问题定义的时候使用了上升思维的方法,看到了问题背后的问题。小明:老师,为什么我每次想问题的时候总是想到解决问题的手段,却看不到问题的定义?师:那你可以试着自己问自己答。方法?给自己一个答案。如果答案是肯定的,那么问问自己:如果资金流失防控是一种手段,那么资金流失防控解决的是什么问题?通过这样的自问自答,基本上我们可以更准确地找到问题的定义小白:老师,我认为资产流失防控是社会信任的手段之一,但是手段不止一种解决社会信任问题。师:小白,你想问题用升序思维,想方案用升序思维。我给你32个赞。小白:谢谢老师,此时此刻我有点高兴。师:心定了,就能看到更多的东西。如果你失去了谦卑的态度,你就会达到自己的极限。小白:谢谢老师提醒,我会记住的。看完三个故事,总结一下,这三个故事的核心在于:准确区分自己要解决的手段和问题,这种情况很常见,我回顾的很多技术方案之所以有问题,基本上是那就是问题没有定义想通了,所以解决方案不符合需求。思考问题背后的问题时要用升序思维,思考问题中包含的子问题时要用升序思维。提升思维之后,之前的问题可能会变成手段/方法。比如用堵解决生命财产问题,堵就是方法。思维升级后,生命财产问题背后的问题是民生问题,此时保护生命财产就是解决民生问题的手段/方法。当然,当我们不能准确区分问题时,我们可以继续缩短描述问题的句子,比如提炼主谓宾。如果描述的还不是很清楚,那就在这几个词中找出最关键的词,尤其是主语或宾语中的词汇很重要,可能是重点,但我们无情地忽略了。把手段或解决方案当成问题,或者把技术解决方案中的挑战当成问题,是很多同学遇到的问题。2.把挑战误认为是“问题”明确了问题之后,我们开始从一个上升的维度去思考解决方案,可以从各个角度给出解决方案。这些解决方案就是我们前面提到的手段/方法。例子:如果快速到达目的地是目标,马、汽车、飞机、火车只是手段/方法,那么如何让马跑得更快,如何让汽车跑得更快,如何让飞机飞得更快,如何使火车更快地移动成为一个挑战。这时候如果说“让马跑得快也是一个问题”,确实可以从广义上理解,但是我不建议这样做,因为我很容易把问题和手段/方法。所以在这里我尝试给他们下一个定义,明确他们出现的场景:问题:事物在一定时期内的矛盾,特别是本文的语境是指企业的客户与某一事物,趋势矛盾.挑战:解决矛盾中最难的地方。下面,我们再回到上述案例,看看其中存在的问题和挑战:回到以堵治水的案例:问题定义:洪水与人民生命财产安全的矛盾。手段/方法:堵水。挑战:获取利益土壤来建造三仁高堤是一种手段/方法的挑战。回到福特的案例:问题定义:如何让人们更快地到达目的地。手段/方法:制造汽车让人们更快地到达目的地。挑战:设计更高扭矩、更高功率的发动机、更平顺、更智能的变速箱等。这样,我们在交流的时候,可以清楚地知道对方是在生成客户的问题定义,还是在解释解决方案中的困难和挑战。3、思考问题没有时间维度。单个问题的严重程度在时间轴上的不同时期是不同的。比如在公元1500-1700年没有大问题,但是300年后的1800年,隐居的弊端开始显现。当然,我们都是事后诸葛亮。所以任何问题的严重性都有一个时间线,也许过了某个时间点,问题就不再是问题了。比如外卖兴起后,如何更好地制作一包方便面来满足用户的口味需求,就不是问题。时间维度是一个极其重要的维度。理论上,凡事都要考虑对时间维度的影响,所以即使从定义上来说,时间维度也是一个不容忽视的维度。这就是为什么需要路线图,标明在不同阶段要解决的问题。6、升级思维和维度思维我们不能用问题发生时的同一个层次的思维去解决问题。——byEinstein爱因斯坦对思维层次现象进行了阐述,在此我表达另一种观点:我们不能只局限于问题本身,还需要看到问题背后的问题,然后才能找到更容易的解决方案。我将这种方法称为问题的升序思维,我将其简称为升序思维。我在网上搜了一下,之前没有人提到过这个词,所以这个词的版权目前是我的。如果你想说服任何需要使用这种思维方式的人,不妨将这篇文章发给他。当问题在更高层次上考虑时,之前的问题就会变成手段/方法。比如洪水与人民生命财产之间的矛盾背后的问题是社会稳定的问题(1和2是站在更高层次上思考的),而在更高层次上思考洪水与人民生命财产安全的冲突时,property,你会发现用梳理控水或者搬走都是解决办法(3在考虑升级维度)。这就是提升思维层次的问题,提升思维维度的手段/方法。但是这个图中每个问题的严重性还没有量化,但是我们在工作,我们想把严重性量化,放到时间轴上去量化,因为有些问题目前可能不严重,但是可以几个月后成为一个大问题。值得注意的是,这里思维的提升取决于认知的升级。就像小孩子一样,他的思维或许也可以升级,但是认知的程度决定了他能思考的层次。因此,历史、社会科学、哲学也是我们的必修课,帮助我们认识更高层次的存在。当问题的层次不断上升时,往往归结为社会问题和人性问题。重要的是说三遍:没有上升思维的维度思维是自上而下的不完整;没有上升思维的维度思维是不完整的自上而下的;没有上升思维的维度思维是不完整的。完成自上而下。下面我就拿网上一些横向思维的案例,通过升维思维和维度提升思维,得出相应的解决方案:例1:游客有时会从雅典帕特农神庙的古柱上剪下一些碎片当局很关注关于这一点,虽然这种行为是违法的,但这些游客还是把它带走了留作纪念。当局如何才能阻止这一行动?问题定义:如何为客户提供纪念品?高架思维:客户需要纪念品的背后,到底想解决什么问题?是为了解决客户对旅游纪念品的需求。思考背后的问题:有没有其他的方式可以满足客户的旅游纪念需求?明信片:明信片也可以作为一种纪念方式。有了星卡作为纪念,游客敲石柱的比例可能会降低。现场拍照:可以安排现场拍照的摄影师,可以选择特殊的角度,为这些想留念的顾客拍摄特殊的照片,游客敲石柱的比例可能会降低。帕特农神庙模型:可制作各种帕特农神庙模型供客户购买,满足客户的纪念需求,游客敲打石柱的比例可能会降低。思考升级原题:把大理石碎片撒在地上:让顾客以为这是帕台农神庙的大理石,顾客会捡起地上的大理石碎片带回去留作纪念(这是网上标准答案)。入庙时存放各种金属物件:用户不能用金属切割古柱子,缺点是成本高效率低,需要排队检测金属物件围住柱子,让用户只能在远处观看一米远:用户摸不到柱子,自然也就砍不到柱子,成本比较低,也比较容易实现。写标语,入口处,门票上,明确指出破坏文物是违法行为,将受到法律制裁等。网上的标准答案是在柱子旁边撒大理石屑(其他都是根据我的想象,用上升思维和维度思维,你也可以想出很多)。让游人以为这是寺庙已有的残片。但是,这种方案经不起逻辑思维的推敲。比如,开了这么多年,地上的碎石怎么还没有捡起来?然后游客才知道这是人为洒在上面的,所以会有游客继续破坏石柱。我想说的是,这里的层次思维和不同层次的层次思维会给我们带来很多的解决方案。如果集齐整个团队的力量,我们甚至可以想出越来越多的点子。例2:在美国的一个城市,经常有人在地铁里偷灯泡。小偷经常拧开灯泡,这会导致安全问题。接管这件事的工程师不能改变灯泡的位置,也没有预算供他使用。工程师应该做什么?问题定义:如何防止小偷拧开灯泡??就是解决预算不足的问题。想一想背后的问题:预算不足还有其他解决办法吗?增加预算?筹集善款?防止小偷拧开灯泡。从更高维度思考原问题:可以考虑哪些维度来防止小偷拧开灯泡?焊接:缺点是灯泡坏了很难更换。反螺纹(小偷拧开的时候实际上是在拧灯泡):缺点是小偷只要用反向思维就能破解(反螺纹是网上的标准答案)。特殊螺纹(特殊螺纹使得小偷无法在其他地方使用灯泡):缺点是需要定制,成本高。摄像头:缺点是增加了设备,需要更多的投资。把灯装在高处:小偷要用梯子偷灯泡,要看线路是否支持印在灯泡上的地铁专用标志:这种灯泡别人不敢买,小偷也不能买卖赃物。缺点是多了一道工序。灯泡的成本变得更高。这种情况下,逆向线程是标准答案,缺点是盗贼只要用逆向思维就可以破解。其他的都是我自己通过层次思维和维度思维想出来的。其实你也可以想出很多,这和逻辑无关。我想说的是,通过升级思维和维度思维,我们会找到很多种创新的答案。而不是记下某个答案。这两个例子都是关于横向思维(类似于增维思维),但是我们会发现,如果加上向上层次的思维,然后在每个层次上进行增维思维,就会得到很多创新的想法。如果我们让整个团队都使用这种思维方式,我们就能得到更多的想法。7.解决老问题是新问题还是新技术?我们做架构的时候,通常是根据当前流行的技术趋势来解决问题。这些流行的技术趋势实际上是更新的手段,而不是问题的更新。尤其是一些社会问题和人性问题,几千年来问题都没有改变,但是新的技术手段可以更好的解决这些问题。例如,人类有沟通需求。几百年前,是通过信件,然后是电报,然后是电话(音频),然后是视频。都是为了更好地解决存在的问题而进行的技术创新。这就需要我们随时关注新技术,并与当前手头的工作有一定的关联。不同物体之间的联想能力在这一刻变得异常重要。当然,在一些问题特别明显的领域,比如数据库领域,要解决的问题基本没变,只是问题转化出来的索引的价值一直在增加。比如支持的数据量越来越大,插入速度越来越快。越来越快,查询速度也越来越快。比如最近很多基于AI的自动调优、AI指标优化都属于这个专栏。类似的例子还有很多。比如移动端流行的时候,消息的实时性更高,是各种消息渠道转型的契机,会催生出新的产品,比如微博、微信等等。获取到地理位置后,出现了一堆新的应用来改造老产品。所以我对自己提出一个要求,任何一个新技术,哪怕是一个小新技术,都应该想一想它对现在的工作,对现在产业链的上下游可能有什么帮助。不只是个人去做,而是带动团队讨论。目前提到的新技术包括AI、区块链、IOT、5G等,这些可能和我们的业务有关联。可以组织团队以发散思维。但是我自己做的这件事情很一般,想多多向大牛们学习。8.总结区分手段和问题清晰的问题定义对问题背后的问题进行升级思考对问题的分解进行维度思考他在思考如何阻塞,所以他从阻塞的上层向下思考。如果你把挡的层次再想一想,你会发现除了挡水之外,还可以用梳理的方法,还可以移开等等。因此,创新的关键在于升级和升级思维。【本文为专栏作者《阿里巴巴官方技术》原创稿件,转载请联系原作者】点此查看作者更多好文
