- 推荐序一:架构师真正要学会的事情
- 推荐序二
- 译者序 2.0
- 序
- 关于本书
- Part Ⅰ 什么是软件架构
- 第 1 章 什么是架构
- 第 2 章 架构的种类
- 第 3 章 软件架构是什么
- 第 4 章 敏捷软件架构是什么
- 第 5 章 架构对上设计
- 第 6 章 软件架构重要吗
- 第 7 章 问题
- Part Ⅱ 软件架构的角色
- 第 8 章 软件架构的角色
- 第 9 章 软件架构师应该编码吗
- 第 10 章 软件架构师应该是建造大师
- 第 11 章 从开发者到架构师
- 第 12 章 拓展 T
- 第 13 章 软技能
- 第 14 章 软件架构不是接力运动
- 第 15 章 软件架构要引入控制吗
- 第 16 章 小心鸿沟
- 第 17 章 未来的软件架构师在哪里
- 第 18 章 每个人都是架构师,除非他们有其他身份
- 第 19 章 软件架构咨询师
- 第 20 章 问题
- Part Ⅲ 设计软件
- 第 21 章 架构驱动力
- 第 22 章 质量属性(非功能需求)
- 第 23 章 处理非功能需求
- 第 24 章 约束
- 第 25 章 原则
- 第 26 章 技术不是实现细节
- 第 27 章 更多分层等于更高复杂度
- 第 28 章 协同设计是一把双刃剑
- 第 29 章 软件架构是对话的平台
- 第 30 章 SharePoint 项目也需要软件架构
- 第 31 章 问题
- Part Ⅳ 可视化软件
- 第 32 章 沟通障碍
- 第 33 章 对草图的需要
- 第 34 章 无效的草图
- 第 35 章 C4:语境、容器、组件和类
- 第 36 章 语境图
- 第 37 章 容器图
- 第 38 章 组件图
- 第 39 章 是否包含技术选择
- 第 40 章 你会那样编码吗
- 第 41 章 软件架构和编码
- 第 42 章 你不需要 UML 工具
- 第 43 章 有效的草图
- 第 44 章 C4 的常见问题
- 第 45 章 问题
- Part Ⅴ 为软件生成文档
- 第 46 章 代码不会讲述完整的故事
- 第 47 章 软件文档即指南
- 第 48 章 语境
- 第 49 章 功能性概览
- 第 50 章 质量属性
- 第 51 章 约束
- 第 52 章 原则
- 第 53 章 软件架构
- 第 54 章 外部接口
- 第 55 章 代码
- 第 56 章 数据
- 第 57 章 基础设施架构
- 第 58 章 部署
- 第 59 章 运营和支持
- 第 60 章 决策日志
- 第 61 章 问题
- Part Ⅵ 开发生命周期中的软件架构
- 第 62 章 敏捷和架构的冲突:神话还是现实
- 第 63 章 量化风险
- 第 64 章 风险风暴
- 第 65 章 恰如其分的预先设计
- 第 66 章 初识软件架构
- 第 67 章 问题
- Part Ⅶ 金融风险系统
- 第 68 章 金融风险系统
- Part Ⅷ 附录:技术部落 的软件指南
第 11 章 从开发者到架构师
软件开发和架构之间的界线很诡异。有些人会告诉你这个界线并不存在,架构就是由开发者负责的设计流程的延伸。另一些人则说这是一个巨大的深渊,只有志向远大的开发者才能跨过,他们坚信必须尽可能地抽象,而不拘泥于讨厌的实现细节。跟往常一样,这中间有一种务实的平衡,但它也带来了一个有趣的问题:你如何在两者之间穿梭?
一些常被用于区分软件架构和软件设计的关键因素包括规模的扩大、抽象层级的增加、做出正确设计决策的意义等。软件架构就是总览全貌,看清“大局”,才能理解软件系统整体如何工作。
这可能有助于区分软件设计和架构,然而不一定有助于理解软件开发者如何转换到软件架构的角色。此外,对于辨别谁会成为一个好的软件架构师,以及要如何招聘到他们,也没有帮助。
经验是一个好的评价标准,但你需要看得更深
你需要从软件架构师身上寻找许多不同的品质,他们过去的经验往往能很好地评判他们承担这个角色的能力。既然软件架构师是一个变化的角色,你就要看得更深,才能理解参与度、影响力、领导力和责任感的水平,这些在多个不同领域都已经论证过。结合我对软件架构角色的定义,每个部分都能够且应该单独评估。毕竟,软件设计过程看起来相当简单,要做的就是搞清楚需求,设计一个能满足它们的系统。但在现实中可不是这么简单,人们承担的软件架构角色可能千差万别。比如下面这些。
1.架构驱动力:捕捉和挑战一套复杂的非功能需求,还是简单地假设它们的存在。
2.设计软件:从零开始设计一个软件系统,还是扩展已有的。
3.技术风险:证明你的架构能够工作,还是盲目乐观。
4.架构演化:持续参与和演化你的架构,还是把它交给“实现团队”。
5.编写代码:参与交付的实践部分,还是袖手旁观。
6.质量保证:保证质量并选择标准,还是反其道而行之或无所作为。
其中大部分可以归结为是承担寻找方案的责任还是推诿问题。
模糊的界线
不管你认为软件开发与架构之间的界线是捉摸不透还是深渊,人们对于软件架构角色的经验水平各不相同。此外,软件开发和架构之间的界线某种程度上是模糊的。大多数开发者都不会在某个星期一早上醒来之后,突然宣称自己变成架构师了。我肯定不是的,我通往软件架构的道路很大程度上也是一个演化的过程。说了这么多,很可能不少软件开发者已经为承担部分软件架构的角色做好了准备,不论他们的头衔是什么。
跨越界线是我们的责任
给一个软件系统的架构出力和为之负责之间,有一个很大的差异,那就是构成软件架构角色所需的,跨越不同领域融会贯通的技能、知识和经验。能否跨越软件开发者和架构师的界线,取决于我们自己。作为个人,我们要清楚自己的经验水平,以及为了提升它我们需要关注什么。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论