池建强的公开课

讲讲咱互联网行业自己的故事

个人成长,观点,认知, 软技能

池建强 极客时间创始人、墨问西东创始人

第412期|为什么说“提出问题”是架构师功力的体现?

讲述:李佳 大小:5.45MB 时长:00:05:41
00:00
1.0×

你好,这里是卖桃者说。我是极客时间专栏主编李佳,今天想跟你聊聊架构师的基本功,提出问题的能力。

成为一个优秀的架构师可以说是很多程序员心向往之的目标了,外界对于架构师有很多不同维度的定义,我之前看到一个很有意思的说法是,架构师是一个识别并定义问题,然后创建、选择或调整架构,从而找到最优的方案,最终解决问题的职位。

这也是架构师做事的一般套路,从定义问题到确定架构,再到提出方案,最终落地拿结果。其中,越是前面的步骤,越是重要,也越是抽象,难度也越大,当然也越能体现架构师的功力。

从中可以看到,架构师就是一个与各种不确定性的问题相伴的职业,如果你想成为架构师,那就要先学会与问题相伴,而其中,提出问题的能力排在最前,难度和重要性也都是最高的。

那如果我想成为架构师,具体该怎么培养自己提出问题的能力呢?

之前汇量科技的蔡超在极客时间的公开课里分享了他做架构十年的感悟,其中关于提出问题的观点非常有意思,也很值得借鉴。我也在这里分享给你。

当你是程序员的时候,你可能习惯于针对具体的问题给出具体的解决方案,做一个问答题的解决者。但是,如果你想往架构师发展,就要努力做一个问题的提出者。

比如团队里最典型的矛盾就是产品团队和研发团队的矛盾,估计你时不时会吐槽产品经理不懂技术,提的需求不合理。但其实在工作中,你可以试着把视角往前挪一点,去看看用户到底有哪些困惑,然后提出一个合理的需求去解决它;或者自己去体验一下用户所处的场景,然后提出一个潜在的问题并解决它。

这样,你就会慢慢的开始往问题提出者的身份转变。当然,这并不是一件容易的事,提出一个好问题的前提是无数次的深度思考,需要你在工作中不断的主动思考,我的系统到底应该解决什么样的问题,什么样的需求才能够让产品领先。

这样的感觉不仅仅是我们有,很多伟大的科学家也会有这样的困惑和感悟。比如爱因斯坦就有一个著名的观点:“我们解决一个问题的时候,常常只需要用到一些数学以及实验的能力就可以了,但提出一个新的问题,以一种新的角度去看待旧的问题,是需要用到我们的创造力才能够做到的,而这恰恰是真正推动科学进步的一部分。”

不仅仅是爱因斯坦,《人月神话》的作者布鲁克斯(Frederick P. Brooks Jr.)在他讲设计原理的新书《The Design of Design(设计原本)》里也谈到,“The hardest part of design is deciding what to design”,大概意思就是,设计最难的部分就是去决定我们要设计什么。

架构师也是如此,相比解决问题,提出问题的能力要更重要,也更难培养。如果说前者考验的是架构师的技术实力,是他在程序员阶段的技术积累,那么后者,提出问题,考验的就是他对行业的理解和积累。

而这种理解和积累只能来自他之前的实践和经验,对工作中所遇到各类问题的复盘,对业务及其背后逻辑的思考,是认真工作、聪明工作才会有的回报。

因此,如果你以架构师为职业目标,就一定要开始注重自己看问题、理解问题、分析问题、定义问题的能力。就像之前提到的,要把重心向前挪,去理解代码背后的业务逻辑,理解代码背后的设计理念,主动去思考这些务虚的问题。

还有一点非常重要的是,面对同一个业务,我们可以提炼出诸多不同的问题,衍生出不同的解决方案,但对架构师来说,定义对业务价值最大化的问题,排除干扰项,决定“不要什么”比“要做什么”才是最重要的。

聊到这里,我想起了乔布斯谈专注的那段名言:人们认为专注意味着对你需要专注的事情说Yes,但并非如此,专注意味着你要对其他100个好主意说No,你必须谨慎选择。创新就是对 1000 件事情说No。

专注是这样,创新是这样,架构师面对问题也是这样,取舍与平衡,是架构师一辈子要修炼的基本功。

当然这也是非常困难的,毕竟人性的本质是贪婪的,我们在做项目或架构的时候,常常是什么都想要,什么需求都想解决。

一个可行的手段就是,在设计架构的时候,不断反问自己,我的架构解决了什么问题,这个问题是不是当下最主要的问题,这个问题的上层和下级分别是什么,不断拷问自己,直到发掘跟业务相关的本质问题

好,今天的话题就先聊到这儿。如果你有意向成为架构师,希望今天的内容能对你有用。

卖桃者说,明天见。

(策划:成敏;编辑:夏天)