程序员

软件架构浅译

2021-01-19  本文已影响0人  StoryRecorder

OOP教义的宗旨是,让软件开发过程变得更容易。 —— 《Java语言程序设计》

平台团队的主要目的应该是,让使用平台的人,减少认知负担。 —— 《AIDevOps》

软件开发(Software Development)和软件架构(Software Architecture)的区别是很模糊的。有的人会说,这两个概念没有区别,架构只是编程者开发过程的一个扩展;有的人则指出,这两个概念之间有着巨大的鸿沟,如果想要跨越,那么必须坚持概念抽象并且摆脱细节纠缠。

Well,模糊的边界会引起一个有趣的问题:我们如何从一种角色到另一种角色呢?

在软件开发过程中,有一些关键的指标用来区分“架构”和“开发”: 量级的增长、抽象层级的增长、决策重要性的增长。软件架构,是用更全局的视角、更宏大的图景来理解软件整体是如何运转的。或许,这个角度能够区分“架构”和“开发”,但并不能回答“如何从一种角色到另一种角色”,同理,它也不能回答“你是不是一个软件架构师”,“谁能做出好的软件架构”。

经验非常重要,并且你必须看的很深,想的更多。

你不会因为某次职业的晋升就突然成为一名架构师。架构师是一个角色,而不是一种等级。成为一名架构师是一个漫长的、演变的过程,你必须在这个过程中积累足够的经验和自信。

当观察其他的架构师时,你会发现他们除了都有一把年纪之外,还有许多不同的品质,比如:项目的参与度、影响力、领导力、以及特殊的职责任务。广义上,大多数项目中的软件架构能够被拆分成两块:定义架构、保证交付。

架构的定义

设计架构,顾名思义,就是厘清需求并设计系统满足它。但在实际工作中,架构并没有那么简单,取决于“你的投入程度”和“你对待自身角色的严肃程度”,它会在某个区间内波动。

Clearly Define Harder Than Maybe Assume

Define From Blank Harder Than Re-use From Other

Confidently Evaluate Harder Than Easily Pick

Prove Harder Than Assume

Involved Work Harder Than Delivered Document

架构的交付

同“定义”一样,取决于“架构师的投入程度”,交付也会在一个区间内波动。

Take Ownership Better Than Hand Over

Take Leadership Better Than Receive Direction

Coaching and Mentoring Better Than Being coached or mentored

Do Something Better Than Do Nothing

Being Involved Better Than Watching Aside

尾声

无论你是否感受到了那条虚无的线,文章中提到的点在不同的团队中确有不同,“不同”取决于架构师的“投入程度”和“对待角色的严肃程度”。 大多数开发者不会在某一天醒来,然后突然宣布自己是一个架构师。在职业中开始架构是一个渐变的过程,我敢打赌,有一些开发者,和他们的职业头衔不相符的,已经开始承担部分架构的角色了。

参与软件系统的开发,和自主设计并负责软件系统,是非常不一样的。是否跨过开发和架构中间的线,完全取决于你自己,对自己作出准确的角色定义是跨越的开始。

上一篇下一篇

猜你喜欢

热点阅读