知识卡片

软件架构师应是一线程序员,架构工作的实质是规划组件切分与通信

普通读书笔记卡

内容

“架构师应该从写代码中解放出来、专心解决高阶问题”是一个需要警惕的伪建议——软件架构师首先必须是程序员、并且要一直坚持做一线程序员,是能力最强的一群程序员,通常在自己承接编程任务的同时逐渐引导团队走向能最大化生产力的系统设计方向;如果不亲身承受系统设计带来的麻烦,就体会不到设计不佳的痛苦,会逐渐迷失正确的设计方向。软件架构这项工作的实质,是规划如何把系统切分成组件、安排组件之间的排列关系、以及组件之间互相通信的方式,目的是更好地对这些组件进行研发、部署、运行和维护。这里有一个容易被误解的地方:架构质量和系统能否正常工作的关系并不大——世界上有很多架构设计糟糕但工作正常的软件系统,真正的麻烦往往不出现在软件运行过程中,而出现在系统的开发、部署以及后续补充开发中;架构对系统行为的影响更多是被动的、修饰性的,而非主动的、必不可少的。软件架构设计的主要目标是支撑软件系统的全生命周期,让系统便于理解、易于修改、方便维护、轻松部署——终极目标是最大化程序员生产力、同时最小化系统的总运营成本。

参考来源

- 位置:《架构整洁之道》第15章《什么是软件架构》引言(源文件:_epub-src/text/part0014_split_000.html) - 结论依据:原文明确否定"架构师该脱离代码"的说法,指出架构师应是能力最强的一线程序员,并给出软件架构的实质定义(规划组件切分、排列、通信)及其与系统正确运行关系不大、真正麻烦出现在开发部署维护环节的判断,直接支撑本卡片结论。 - 原始内容:软件架构师其实应该是能力最强的一群程序员……软件架构这项工作的实质就是规划如何将系统切分成组件,并安排好组件之间的排列关系,以及组件之间互相通信的方式……真正的麻烦往往并不会在我们运行软件的过程中出现,而是会出现在这个软件系统的开发、部署以及后续的补充开发中。