你好,我是郭东白,是一个做了 15 年架构师和 6 年 CTO 的人。
我先简单介绍一下自己。我从布朗大学(Brown University)获得博士学位后,在美国甲骨文、微软和亚马逊陆续工作了 15 年,做过研发、研发经理、 产品经理、数据架构师等等。2014 年,我回国加入阿里巴巴。
在阿里,我刚开始是 AliExpress 的首席架构师,后来成为 AliExpress 的 CTO。之后,我又到新加坡的 Lazada 担任集团 CTO。现在呢,我是车好多(即瓜子二手车母公司)集团的 CTO。
从我的“偶然成功”经历说起
看我的职业经历,你可能会觉得我很成功。不过,我一直认为自己是一个“偶然的架构师(Architect by chance)”。为什么这么说呢?我发现我性格上有一些成为优秀架构师的必要条件,比如自信和勇气。而我自己的人生经历又使我获取了一些机会,让我在架构师这个职业的发展上,比很多人要幸运那么一点。
我也开始反复思考,我这些所谓的“成功”,真的可以帮助到你吗?
在今天互联网行业这么内卷的大环境下,我过去的行为其实根本没办法保证我的成功可以复刻。但在梳理思路的过程中,我有一个想法越来越强烈:
假设我能有个时光机,回到二十多年前,把我今天写下来的架构方法论和成长建议给到那时的我,那我的人生肯定还会大有不同,绝对比现在幸运十倍甚至百倍。
事实上,我要写下的这些架构方法论并不是独特的发明创造。它们都很朴素、简单。它们在二十年前就已经存在,现在依然存在。它们在我身上适用,在我近距离观察到的其他优秀架构师身上也适用。
但如果不是我自己在一些事情上碰得头破血流,我就完全不会注意到,或者真正理解,更别说运用好这些原则了。这也是我下决心写这个专栏的原因。把我对这些原则思考的路径和推导的过程写出来,以提升你作为架构师的判断力和思考质量。
架构师不仅需要关注当下流行什么,要选择什么方案、用什么开源框架。一个以架构师为职业的人,更需要有战略意图和思考力,比如:
对这些问题的回答,可以让你在架构师的职业成长过程中有一个明确的方法论和取舍,让你对自己的职业成长有更清晰的路径规划,让你少走一些弯路,多一些成功机会。这就是我想交给 20 年前的自己的建议。
通过这门课,我期望能帮助你在架构师的成长这件事情上定义一个战略,提升你做架构师的成功概率。最终我期望达到的程度是:你能够设计出自己的职业成功(Architect career success by design),而不是靠运气得来的职业成功(Career success by chance)。我也希望把我这些年的经验总结分享给你,让你少走弯路,否则你靠运气赚来的架构机会,也必然会因为你的实力不济而败干净。
刚刚我提到了架构师的成长需要定义一个战略。我为什么这么说呢?为什么你不能像我一样成为一个“偶然的架构师”呢?
我有一个坚信的理念:要想在架构师这个职业上超越别人,你必须要尽早建立好你的架构师成长战略。
我喜欢读史书和人物传记。我在大量的阅读中发现有一类人的成功,比如亚历山大,平常人是无法复制的,因为我们在“拼爹”这个环节就已经失败了。但有一类人,像埃隆·马斯克(Elon Musk)、史蒂夫·乔布斯(Steve Jobs)和蔡志忠,他们的成功经验是有迹可循的,可以拿来学习实践的。
怎么学呢?我借用企管学者哈莫与帕哈拉德(Hamel & Prahalad)在Strategic Intent这篇文章里提到的一个概念:“过去 20 年中达到世界顶尖地位的公司,每一家都有战略意图(Strategic Intent)”。
所谓战略意图,就是拥有与其资源和能力极不相称的雄心壮志。你把公司换成马斯克、乔布斯和蔡志忠等人,或者你身上,这句话同样适用。每个想达到顶峰的人,都应该有自己的战略意图。
哈莫与帕哈拉德还特别提到,只有这种极度的不相称性,才会让一个公司愿意突破常规,为自己创造机会,成功挑战不可能。
我想这么来定位我的整个课程:“假设你有做一个全球顶尖架构师的战略意图,那么我可以帮你把这个战略意图设计得更完美一点儿。”注意,重点不是说我是全球顶尖的架构师,而是说假设你在我的思考之上开始你的架构师生涯,我相信你会比不具备这些思考的人更有优势。
在我看来,当前软件行业的大量人才供给和全球范围内的残酷竞争,导致人才胜出更加不易,这也使得战略意图对职业成长产生的价值越来越大。可以说,缺少战略意图,你将很难成长为一名优秀的架构师。
那么,该怎么培养自己作为架构师的战略意图呢?我先要给你一个我的答案:靠记忆和技能学习,是成不了一个好架构师的。真正的架构师成长,主要靠思考力的提升。所以,在这门课中,我不会也不能教你所谓的架构技能八法,给你现成的答案。而是会通过三种方法,来培养你的思考习惯,让你和我一起完成关于软件架构方法论和职业成长的思考。
课程里的很多知识听起来都是常识,似乎不需要推导,但我会花很长篇幅去解释背景、引用定律,最后推导出一个行为模式或架构法则。
虽然只学习最终推导出的结论,也可以帮助你成长。但更重要的是,我希望通过深度理解推导细节,锻炼你日常工作中运用演绎法来寻找规律的习惯。
这个过程就好像你和我一起去经历我 20 多年的架构生涯,然后在我的基础上,让你用更好的思考力来逼近真理,放大自己的价值。
需要特别说明的是,我会把我的全部推导逻辑描述出来,所以必然会显示出我思考中不完美的地方。这个时候,更期望你能指出我逻辑中的瑕疵,我们共同提升。因为在帮助我提升的过程中,也会引导你找到你自己的架构哲学和存在价值,就像尼采说的,Find your own way。
有两方面原因。首先是浅层次的考虑,架构师的日常工作,就是借助一些常见的思维工具来完成的。但我发现我周围很多架构师由于不思考这些工具背后的意图,很难使用正确。如果使用不当,别人看一眼你的图,下意识就会觉得你缺少架构素养,那么你作为一个架构师的信任度就会被大打折扣。
然后是更深层次的原因。我个人坚信一个理念,就是软件架构虽然需要深度思考,但它更是一门实践的科学,必须学以致用。
整门课看似是理论课,但更是一个架构建模的实战案例。我用架构建模的语言、工具和思维方式写一门教你怎么做架构师的课,输出我体系化的深度思考过程,而你也需要经过一段痛苦的逻辑锻炼,来应用你对架构的思考。这就是“我做你看(Teach by example)”。
之所以需要加工,是因为一个完整的真实案例,会有太多的支线信息。去掉这些,可以帮你理清主线。不过更关键的是,案例只是一种学习手段,启发思考才是学习的目的。案例始终是要服务于课程目标的。
因而当你看到一个似曾相识的案例时,请不要尖叫,也不要试图对号入座,更不要去猜测这个案例是不是跟某人或某公司相关。如有雷同,纯属巧合。
这个专栏分为四个模块,覆盖了架构师职业成长的四个不同维度。
生存法则,就是你作为架构师必须要尊重的一些原则。如果违背,你指导的架构活动可能会面临巨大的失误,而你作为一个架构师的生存也会受到威胁。
影响架构活动成败的因素,主要有六个,分别是:目标、输入、输出、商业和技术环境、文化环境以及架构活动本身。我根据这些因素,以及我多年的架构实战,提炼出了六条生存法则,帮助你提升架构成功的概率,以及你作为架构师的增量价值。
生存法则的主要内容,如下图所示:
价值创造指的是,从大型架构项目实施层面上考虑,你作为架构师必须要关注和干预一些重要的节点,然后在这个过程中去创造自己的增量价值。
我把架构活动分成八个节点:环境搭建、目标确认、可行性探索、架构规划、项目启动、阶段交付、全面上线和复盘。在每个节点中,你的每一步行动,包括进入条件、准备工作、应对办法等,都会影响架构活动的成功率。这就是你给架构活动带来的真实贡献。
所以我期望通过这个模块的学习,帮助你增长具体的风险识别和应对能力,提升你项目成功的概率。除此之外,也能帮助你学会怎么通过真实的贡献让自己变得不可或缺(Make yourself indispensable by contributing honestly)。我认为,这不只是做架构师的王道,也是做人的王道。
我把架构师的成长分解成五种能力,分别是:单个模块的设计能力、解决横向问题的能力、解决跨领域冲突的能力、全局性技术决策的能力,以及通过技术带来生存优势的能力。这是一个架构师职业生涯中几个最重要的能力跨越,也代表了你在不同阶段要面临不同的挑战,解决不同复杂度的问题。所以想要跨越到更高的阶段,意味着你要先跨越一个能力障碍,建立全新的能力维度,而不是把现有能力做得更极致。同时,我也把架构师的成长角色分为四种,分别是兼职架构师、跨域架构师、总架构师和 CTO。我会结合自己在这些角色中的经历和观察总结,提出助你突破障碍、完成能力跃迁的具体建议。
你可能会问:为什么我这么早就要了解那些 CTO 才要面临的障碍呢?答案还是之前那句话:做架构师,战略意图很重要!
这是一个接近于手把手传授技能的环节。思考力,在我看来这是一个架构师生存最核心的能力,甚至可以说是未来任何职业的核心能力。怎么提高思考力呢?我也没有标准答案。我只能提供一些我和团队提升思考质量的方法,包括逻辑思维、批判思维、逆向工程、反思、跨越边界和数据分析。这些概念比较抽象,所以我会通过大大小小的案例来示范我常用的思考路径,提高你的认知。此外,我们也会讨论中台等热词,带你从宏观视角去审视一个复杂事件,让你拨云见日,看清本质。
之前在 QCon 做晚场演讲时,我问在场的人为什么想做架构师。不少人给我的答案是架构师挣钱多、有权力。在我看来这种动机是不太对的,因为你可能会想着该怎么通过学习课程来速成,来通过面试。我想强调的是:架构师没有速成班,架构师的成功主要靠思考力的提升。所谓的致富速成班是让分享致富秘密的人迅速致富,来收智商税的。就像一些短视频网站收割国人的智商一样,他致富了而你却还在贫穷中幻想着。这门课不是讲编程或设计工具,你在这里也找不到任何现成的答案。我期望你学习这门课时,先放弃速成的心态,静下心,认认真真地学习一下思维方式和架构原则,只有这样,才能提升你在未知环境中判断和取舍的质量,最终通过架构设计为你所在的团队或企业带来竞争优势。我认为这才是架构师成长中最重要的条件,是架构师的“渔”。事实上,在写专栏的过程中我也研究了极客时间其他不少专栏的作者,如果说他们只有一个共同点的话,那就是他们都具备优秀的思考力。这也是我期望你能从我的专栏里获得的能力。哪怕你不做架构师,这种能力对你的职业成长也是很有帮助的!