程序猿

【译】软件架构师之路

2020-01-23  本文已影响0人  gamedilong

今天给大家带来一篇自己翻译的干货《软件架构师之路》。本周Github上升很快的项目。其内容对致力于成为软件架构师(不论前后端)的同学应该都会有极大的帮助。

项目地址

中文地址 https://github.com/gamedilong/SoftwareArchitect-CN

原文地址 https://github.com/justinamiller/SoftwareArchitect

如果有看完英文原文,发现本文翻译内容中存在问题或者错误的欢迎到中文Git地址PR,如能够对大家起到一定的帮助也欢迎star

内容

什么是软件架构?

软件架构的层次

软件架构可以被抽象的分为几个层次,不同的层次对技能的要求不同。对层次有很多不同的划分,我最喜欢如下这三种划分:

有时架构师也被看作是不同利益相关者之间的“粘合剂”。 三个例子:

软件架构师的典型工作内容

要了解架构师所需的必要技能,我们首先需要了解架构师平时主要干什么。以下是我认为最重要的一些工作内容:

软件架构师的重要技能

为了支撑上述工作需要很多重要的能力。就我个人的经验,每个软件架构师应该具备如下十项技能:

(1) 设计能力

什么是好的设计?这可能是最重要和最具挑战性的问题。要把理论和实践区别开来。根据我的经验,两者兼而有之是最有价值的。让我们从理论开始:

(2) 决策能力

架构师需要能够做出决策并将项目或整个组织引导到正确的方向。

(3) 化繁为简能力

请记住Occam剃刀的解决问题的原则,它表示更喜欢简单。我把这个原则解释为:如果你对这个问题有太多的假设要解决,那么你的解决方案可能是错误的,或者导致不必要的复杂解决方案。为了得到一个好的解决方案,应该减少(简化)假设。

(4) 编码能力

即使作为一个企业级架构师,最抽象的架构层次,你仍然应该知道开发人员每天都在做什么。如果你不明白这是怎么做到的,你可能会面临两大问题:

  1. 开发者不会接受你的嘴炮。
  2. 不了解开发人员的实践需求和面临的困难.

(5) 文档架构能力

架构文档有时更重要,有时则不重要。重要的文档例如体系结构决策或代码指南。在开始编码之前通常需要初始文档,并且需要不断改进。其他文档可以自动生成,因为代码也可以是文档,例如UML类图。

(6) 沟通能力

根据我的观察,这是最被低估的技能之一。如果你在设计上很聪明,但不能传达你的想法,你的想法可能会影响较小,甚至无法成功。

(7) 评估能力

(8) 平衡能力

(9) 指导、答疑能力

在咨询和辅导方面,积极主动可能是最好的选择。如果有人问你,那就太晚了。架构重构是尽量要避免的。你需要以某种方式预见未来几周、几个月甚至几年,并为下一步做好准备。

(10) 营销推广

你的想法很好,你已经很好地沟通了,但是仍然没有人愿意追随?那么你可能缺乏营销技巧。

但请不要过度营销:从长远来看,内容是王道。如果你的话没有实现,从长远来看,这将损害你的声誉。

架构师的技术路线图

Architect roadmap

相关书籍

上一篇下一篇

猜你喜欢

热点阅读