10年架构师和CTO经验总结:从程序员到CTO

news2025/1/18 17:17:04

在这个不断变化的技术环境中,软件架构的重要性愈发凸显。然而作为一个职业,软 件架构师的地位却不断受到业内外的挑战。在20世纪90年代互联网技术发展初期,软件架 构师是备受推崇的职位。在相对简单的技术诉求下,他们的决策直接决定了系统的性能和 扩展性。技术的快速发展导致一个软件系统变得越来越庞大和复杂,涉及的技术领域和组 件也越来越多,这些都使成为一个成功的软件架构师的门槛变得越来越高。与此同时,敏 捷和快速迭代的开发模式强调快速交付功能,因而长期的架构规划有时会被忽视。但是, 我们不能忽视软件架构师的价值。技术不断发展,需要经验丰富的软件架构师来引导系统 的设计和发展。他们在技术选择、性能优化、安全性、可维护性和业务目标的实现等方面 发挥着至关重要的作用。

制定自己的架构师成长战略

为什么我认为架构师的成长需要一个战略呢?为什么你不能像我一样成为一个“偶然 的架构师”呢?

我读博士用了 5 年,但从系统地学习架构理论到成为一位真正的架构师花了 10 年。 这个过程让我有了一个坚信的理念:要想在架构师这个职业上超越别人,必须尽早制定自 己的架构师成长战略。

我喜欢读史书和人物传记,我在大量的阅读中发现,有一类人(如亚历山大)的成功 平常人是无法复制的,但有一类人(如埃隆 ·马斯克、史蒂夫 ·乔布斯和马云)的成功还 是有迹可循的,他们的经验是可以学习的。

怎么学呢?阅读这本《架构思维:从程序员到CTO》吧。

架构思维:从程序员到CTO

架构设计不只是技术维度的广泛认知,更是商业维度的全局把控。

本书是Coupang副总裁郭东白10多年架构师和CTO工作的经验总结。在本书中,你可以了解互联网行业进化的本质,架构师的工作内容、所需能力等,你熟知的每一个互联网案例背后的架构设计原则和逻辑。

阅读本书,你将掌握:

  • 架构思维,架构设计的3种思维定式和4种思维模式;
  • 生存法则,影响架构活动成败的6个要素及对应的生存法则;
  • 实践挑战,架构活动中必然或可能遇到的技术/场景挑战及应对思路;
  • 成长规划,从程序员到CTO的职业能力跃迁。


当你学完本书时,你将了解行业发展脉络,理解架构师工作的底层逻辑,掌握架构设计的思维原则,从而梳理出自己的清晰的成长地图,实现职业角色的跃迁。

推荐理由:这不是一本架构师速成书,本书中除了有对架构设计中的技术选型的分析,还有对架构活动中的环境、人性、经济等的洞察。在这个不断变化的环境中,郭东白老师从自己亲身经历的诸多案例出发,将丰富的经验和开阔的视野提炼出一名优异的架构师应有的能力和战略目标,本书对所有IT从业人员都有益,尤其适合想成为架构师的研发人员和想提升自己架构能力的架构师。

内容简介:

本书以架构师工作中的痛点问题为导向,结合大量真实、复杂的案例,帮助架构师提高架构设计能力,规划职业成长路径。本书共4部分,第一部分“架构师的思维模式”介绍3种架构师的思维定式和4种架构活动中常见的思维模式;第二部分“架构师的生存法则”介绍影响架构活动成败的6个要素,以及由其引出的架构师的6条生存法则;第三部分“架构活动中的挑战、根因和应对”介绍架构师在整个架构活动中持续发挥的作用以及架构活动不同阶段常见的问题;第四部分“架构师的职业规划和能力成长”介绍架构师的成长地图和对应角色的关键能力,以及提升思考力的方法。

本书的整体结构

本书共分 4 部分,每部分都有独立的主题和目标, 并且全书的内容组织也有一定的特色。

第一部分 架构师的思维模式

计算机行业经历了 40 多年的高速迭代, 目前还没有慢下来的迹象。这个过程中硬件 和软件技术也经历了革命性的变化。

在这么大的跨越过程中,架构师是否有一组可以持续践行的思考原则呢?我认为是有 的,就是第 2 章中介绍的架构师的思维定式,这些思维定式也是贯穿架构师整个职业生涯 的思维方式。

这些思维方式起源于整个计算机行业一些没有变化的性质:

● 软件企业追求商业成功这个事实没有发生变化;

● 架构师作为一个独立的专业决策者这个角色没有发生变化;

● 整个计算机行业持续高速发展这个事实没有发生变化。

这 3 个现象分别对应本书所倡导的架构师的 3 种思维定式,即价值思维、实证思维和 成长思维。

我在第 2 章中把思维假设表述出来,因为我在思考和处理问题的时候,会引入一些隐 含的假设作为起点,这些假设的差异最终带来了决策的差异。我的目的是像几何学一样, 从一组公理开始所有的证明,而在此之后的原则和结论都是基于逻辑的推导。

这么做可能会让你觉得第一部分读起来有些枯燥。如果是这样,你可以只阅读这一部 分中每章的小结,然后从第二部分开始阅读。读完其他部分之后,再回过头来阅读第一部 分的内容。这也是我的极客时间专栏“郭东白的架构课”的组织顺序。

第一部分的最后一章介绍了架构活动中的思维模式。架构师作为一个大型软件项目的 组织者和设计者,必须为软件系统带来结构性的提升。在这个工作目标不变的情况下,架 构师会在大型架构活动中重复遇到相似的决策挑战,这些挑战的性质相同,因此应对这些 挑战有一系列有效的思维模式,这就引出了架构师的 4 种常见的思维模式,即全方位思维、 批判思维、实用主义思维和分析思维。

这些思维定式和思维模式是贯穿全书的思考起点,也是本书书名用“架构思维”的 原因。

第二部分 架构师的生存法则

第二部分主要讲的是架构师必须尊重的一些原则—架构师的生存法则。如果架构师 违背了这些生存法则,他指导的架构活动就可能会面临巨大的失误,他的职业生存也会受 到威胁。这就是我最想用时光机带给年轻时的我的内容,也是我的专栏“郭东白的架构课” 中最受欢迎、读者留言评论最多的内容。

第 4 章是对这些生存法则的整体介绍,从第 5 章到第 10 章,每章介绍一条生存法则。 这 6 条生存法则分别对应影响架构活动成败的 6 个要素,分别是目标、人、经济价值、环 境、过程控制和文化。

这 6 条生存法则分别代表了我在这 6 个要素上观察到的最常见的共性问题。针对每种 问题,我试图挖掘其中的本质,然后针对问题的根因提出解决方案。

举个例子,第 5 章解释架构师的第一条生存法则—有唯一且正确的目标。这是架构 活动成功的前提,但架构师经常要面对那些“既要……也要……还要……”的决策者,让 架构师在一组相互制约且缺乏理性的目标下变得手足无措。我在这一章里先找到产生这个 问题的真正根因,即决策者放弃了他的取舍权,然后介绍一系列手段帮助架构师在这种情 况下为企业做出最优的决策。

这就是我认为这些生存法则可以帮到年轻时候的我的原因:它们能帮我理解架构活动 中出现的问题背后的本质。有了这些知识,年轻的我肯定会有不同的经历。因此, 用来引 出生存法则的具体案例对决策的指导价值反倒不大了,但这些抽象的生存法则依然能帮我 看清问题的本质,那么年轻的我就能在理解根因的基础上想出新的解决方案,从而为企业 创造更大的价值。

这就是生存法则的价值。

第三部分 架构活动中的挑战、根因和应对

具体到一个复杂的架构活动,如果架构师想要为这个架构活动带来更大的成功概率, 他就必须在架构活动的不同生命周期关注当时可能出现的问题,从而在正确的时间点上对 未来可能出现的问题做有效的防范和充分的准备。

这一部分主要介绍架构师的这些关键防范或准备动作。虽然都是介绍动作,甚至动作 的内容都有一定的相似性,但是本书和其他架构方面的书有一个巨大的差异:我不是仅解 释具体动作,而是从架构师在架构活动中必然遇到的挑战谈起。这些挑战背后有一个或者 多个根因,只有知道了准确的根因,才能发现最有效的应对动作。

事实上,只讲动作让架构师很难实践,因为计算机行业中每家企业几乎都在寻求创新 突破,所以每个架构师遇到的问题和对应的解决方法都是独一无二的。在激烈竞争的互联 网时代,架构师的每个动作更不能有多余。因此, 架构师必须清楚地知道自己为架构活动的每个生命周期节点要创造的价值,才有可能判断自己打算做出的动作是否有效。有了价 值目标,架构师才能想办法度量自己的动作的效果、发现问题,未来再尝试新的动作。这 也是贯穿全书的价值思维和实证思维的思考方式。

这一部分介绍的动作只是我有限的工作经历中得到的最佳实践。我不是想让年轻时的 我记住这些动作,而是我想让年轻时的我看到可能面临的挑战。这些挑战来自计算机行业 一直增长的竞争压力、时间压力、人才供给压力和长期不确定性。不同时代的架构师面临 的是这些根因的不同展现形式。

通过这一部分内容的学习,你能快速识别一个挑战,由此迅速联系到它的根因,从本 书中提到的应对思路获得启发。这样你就可以根据自己所在的企业、场景和竞争压力情况 灵活设计自己的应对动作。

第 11 章介绍架构师在整个架构活动中持续发挥的作用:建立共识、控制风险和注入 理性思考。第 12 章到第 18 章分别介绍架构活动的 7 个阶段中最常见的问题,并一一提出 相应的干预动作。这种干预动作涵盖了很多架构师的共同困惑。

● 如何通过价值创造让自己变得不可或缺?

● 从架构师的工作内容来看一个架构活动中有哪些完全不同的阶段?

● 在架构活动的每个阶段架构师会遇到什么样的挑战?

● 哪些挑战会大幅影响整个架构活动的成功概率和价值产出?

● 这些挑战背后的根因是什么?

● 在不同阶段架构师应该采用什么手段去预防这个阶段或者未来可能出现的问题?

● 如何在各种资源条件的制约下最大限度地保障架构目标的实现?

当阅读第三部分的时候,跟随我的推导逻辑很重要,因为只有这样你才能学到发现问 题根因的办法和应对思路。

第四部分 架构师的职业规划和能力成长

前面提到在当今激烈竞争下架构师必须有一个职业成长的战略意图。有了与自身实力 极不相称的战略意图,成长之路必然坎坷。但是, 如果有人能给你一张成长地图,在遇到 困境的时候你可能就没有那么慌张了。

第四部分就是架构师的成长地图,这部分主要描述架构师成长的宏观视图和一个可能 的路径设计。

在第 19 章到第 23 章中,我把架构师的成长的关键能力分解成 5 种,分别是结构化设 计的能力、解决横向问题的能力、解决跨领域冲突的能力、构筑技术壁垒的能力和为企业 创造生存优势的能力。这些都是架构师职业生涯中非常重要的能力,也代表了架构师在不 同阶段要面临不同的挑战,并且要解决不同复杂度的问题。

这 5 种能力分别对应架构师职业成长的 5 种角色,即程序员、兼职架构师、跨域架构师、总架构师和 CTO。我之所以介绍能力跃迁而不是讲我个人在这 5 种角色上的经历和教 训,依然是在遵循前面提到的价值思维的逻辑:架构师在这 5 种角色上分别带来 5 种不同 的价值,想要最大化这些价值就要提升相应的能力,而这些能力之间存在着很大的不连续 性。这就意味着,架构师想承担更大的职责就必须先跨越相应的能力障碍,构建一个全新 的能力维度,仅靠把现有能力做到极致是不够的:一个程序员永远不可能只靠写代码就成 为 CTO。

架构师的成长就是能力跃迁的过程,如图 0.1 所示,图中每个方框代表架构师的一种 能力和对应的角色,每个方框里位于上方的粗体字表示这种能力,下方的细体字是具备这 种能力的角色,如程序员的主要能力就是结构化设计的能力。

24 章系统性分析架构师成长的必要条件和充分条件。这一章的目的是想讲清楚架构 师成长中最关键的条件是什么,让架构师能在诸多诱惑之间做出正确的取舍。所谓战略, 其实就是取舍。你要做的就是把自己的精力放在提升在职业发展中真正有区分度的能力上。

第 25 章着重介绍架构师提升独立思考的能力的手段。有不少人认为思考力是天生的, 个人的行为对思考力提升没有多大帮助,而我认为,思考力是可以通过后天的训练提升的。 架构师,或者是任何个人决策者,都可以通过训练和建立自己的思考者网络来提升自己的 思考力。

第26 章通过一个具体案例展示如何长时间观察并且深度思考一个问题,最终得出一个有别于他人的有效结论。我选择了过去8 年间在国内如火如荼的中台的案例,用分析思维发现造成一些企业尝试中台失败的原因,也希望这种分析能够帮到那些正在建设中台的企业。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1496380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络】:再谈传输层(UDP)

传输层 一.再谈端口号二.UDP 一.再谈端口号 端口号(Port)标识了一个主机上进行通信的不同的应用程序。 在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看); 1.端口号划分 0 - 1023:…

【python 1】----Pytest基础知识

定义 用于编写和执行Python测试全功能测试框架(工具),是一个第三方库 安装 pip insatll pytest 安装pytest --version 校验 pytest的组成构成 不写调用语句也可以执行函数内容 在用例运行语句里面: -s:指的是开启与终端的…

有一点好看的wordpress外贸独立站模板

手机配件wordpress外贸网站模板 充电器、移动电源、手机膜、手机电池、手机壳、手机转接头等手机配件wordpress外贸网站模板。 https://www.jianzhanpress.com/?p3809 车载电器wordpress外贸网站模板 车载吸尘器、空气净化器、行车记录仪、车载充电器、车载影音导航等车载电…

el-table 插入单选并进行校验

<template><div><el-form :model"list" ref"ruleForm"><el-table :data"list.tableData" style"width: 100%"><el-table-column prop"time" label"日期" width"180"><…

[pdf]DDD领域驱动设计批评-幻灯片合集(一)共190页

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 DDD领域驱动设计浮夸&#xff0c;Eric Evans开了个坏头 领域驱动设计伪创新 之 聚合根 哪些中文资料上有领域模型案例 领域驱动设计割裂历史&#xff0c;哪里有详细一些的真实历史 软件…

Hive Thrift Server

hive-site.xml配置文件 <property><name>hive.server2.thrift.bind.host</name><value>node1</value> </property>hive.server2.thrift.bind.host: This property determines the host address to which the HiveServer2 Thrift service …

可视化拖拽式小程序源码系统 带完整的安装代码包以及搭建教程

信息技术的快速发展&#xff0c;小程序已成为企业、个人开发者以及各类机构推广品牌、提供服务的重要载体。然而&#xff0c;对于许多非专业开发者来说&#xff0c;编写小程序源码往往是一个复杂且耗时的过程。小编给大家分享一款可视化拖拽式小程序源码系统&#xff0c;旨在帮…

Docker-自定义镜像

目录 1 前言 2 构建java应用的步骤及镜像结构图 2.1 构建步骤 2.2 镜像结构图 3 Dockerfile常用指令 4 Dockerfile的内容举例 4.1 一般形式 4.2 一般形式的优化 5 构建镜像 5.1 指令 5.2 实操 5.2.1 加载jdk镜像(基础镜像) 5.2.2 构建我们的镜像 5.2.3 使用我们的…

MySQL:数据库中有哪些锁

1、全局锁 加上全局锁后整个数据库就处于只读状态了&#xff0c;这时其他线程执行以下操作&#xff0c;都会被阻塞&#xff1a; 对数据的增删改操作&#xff0c;比如 insert、delete、update等语句&#xff1b;对表结构的更改操作&#xff0c;比如 alter table、drop table 等…

shell脚本一键部署docker

Docker介绍 Docker 是一个开源的平台&#xff0c;用于开发、交付和运行应用程序。它利用容器化技术&#xff0c;可以帮助开发人员更轻松地打包应用程序及其依赖项&#xff0c;并将其部署到任何环境中&#xff0c;无论是开发工作站、数据中心还是云中。以下是 Docker 的一些关键…

mini-spring|基于JDK和Cglib动态代理,实现AOP核心功能

AOP 的核心技术实现主要是动态代理的使用 那么我们就需要先来实现一个可以代理方法的 Proxy&#xff0c;其实代理方法主要是使用到方法拦截器类处理方法的调用 MethodInterceptor#invoke&#xff0c;而不是直接使用 invoke 方法中的入参 Method method 进行 method.invoke(targ…

CleanMyMac X4.14.7永久免费Mac电脑清理和优化软件

CleanMyMac X 是一款功能强大的 Mac 清理和优化软件&#xff0c;适合以下几类人群使用&#xff1a; 需要定期清理和优化 Mac 的用户&#xff1a;随着时间的推移&#xff0c;Mac 设备上可能会积累大量的无用文件、缓存和垃圾&#xff0c;导致系统运行缓慢。CleanMyMac X 的智能扫…

记录第一次使用QT

今晚和舍友准备搞一个QT网盘的项目&#xff0c;我之前也没有用过QT。在舍友的指导下&#xff0c;我安装了QT creator&#xff0c;然后完成了第一次的QT的编译运行&#xff0c;记录一下这激动的感觉&#xff08;2024-03-07)。 使用qmake进行的编译。qDebug进行输出调试hello qt…

github一定要把github-recovery-codes.txt保存好,多备份

之前github让必须2FA&#xff0c;使用了Authy Desktop Setup 2.4.2.exe&#xff0c;但是现在authy不能用了&#xff0c;中国的手机号收不到验证码&#xff0c;急的忙了一天没想到好办法&#xff0c;然后给github发过去消息&#xff0c;反馈的信息如下&#xff1a; 还好没换电脑…

论文笔记 - 基于振动信号的减速器故障诊断方法

1.论文摘要 基于振动信号的减速器故障诊断方法, 沈晴,《起重运输机械》,2018 原作者联系方式: shenqing@zmpc.com 这篇文章包含了一个从工程到数据处理和故障定位的完整过程。是一篇综述文档。它介绍了机械设备常见的三类故障(轴,齿轮、轴承)的故障特征,并在一个故障追…

获取别人店铺的所有商品API接口

使用淘宝淘口令接口的步骤通常包括&#xff1a; 注册成为淘宝开放平台的开发者&#xff1a;在淘宝开放平台网站上注册账号并完成认证。 创建应用以获取API密钥&#xff1a;在您的开发者控制台中创建一个应用&#xff0c;并获取用于API调用的密钥&#xff0c;如Client ID和Clie…

Flink:Temporal Table 的两种实现方式 Temporal Table DDL 和 Temporal Table Function

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

直播预告|小白开箱: 云数据库在五朵云上的评测

3 月 7 日&#xff0c;周四晚上 19:00-20:30 由明说三人行组织&#xff0c;邀请了 NineData 国际总经理(GM) Ni Demai、云猿生数据 CTO &#xff06; 联合创始人子嘉&#xff0c;和《明说三人行》创始人 &主持人明叔&#xff0c;共同围绕《小白开箱: 云数据库在五朵云上的评…

vim 中 命令模式下 常见指令

首先&#xff0c;Vim 是一款常用的文本编辑器&#xff0c;具有强大的功能和灵活的操作方式。 vim 分为 三种模式&#xff1a; 命令模式、底行模式、插入模式。 在使用 VIM 编译器 进入文件时&#xff0c;初始默认是命令模式&#xff0c;三种模式转换如下图: 下列使用 Vim 编译…

《探索自动驾驶技术的前景与挑战》

自动驾驶技术,作为现代科技的一大突破,正逐渐改变着我们的交通方式、生活方式以及整个社会结构。本文将围绕自动驾驶技术的现状、优势、局限性以及未来发展趋势展开探讨。 自动驾驶技术的现状概述 自动驾驶技术作为当今科技领域的一项前沿技术,已经取得了巨大的进展并在不同…