[译]软件架构师其一:如何成为软件架构师

本文原文来自于Medium,The Path to Becoming a Software Architect
原文发布于2017年10月1日。

作者Nikolay Ashanin
照片:

任何对此文感兴趣的读者请花费50美元/年或5美元/月的价格参加Medium会员计划,否则每月只能查看三篇文章。
一个月一餐盒饭钱,我觉得并不贵,你说呢?

以下为本人对文章的翻译。不对内容负责,也不对任何翻译错误负责,同时不包含任何图片内容,如需查看图片请付费查看原文链接,谢谢。
我当然能够很容易的洗稿将该文作为我的原创,但是这没有什么意义。
这是我近期看的若干文章中的一篇,Medium上获得了16400多次鼓掌,如果你对Medium有了解的话你应该知道这是多么惊人的数据。
通过翻译我将文章再精读了一次同时将认识推进到更深刻的地步,如果这个工作能算得上有益的话。事实上也许我只是做了无用功,能有多少人看到呢?又会有多少人欢天喜地的将本文拿去二次洗稿?

非常奇怪的是即使在谷歌上使用作者名字和软件架构师作为关键字也不能搜到相关内容。
虽然我是Medium会员,但也不至于全世界只有我愿意花钱和愿意为大家做这些免费工作吧,也许我真的是闲的蛋疼?
Anyway,正文如下:


Article series
The Path to Becoming a Software Architect
Stakeholders in Software Architecture
Types of Software Architects
Quality attributes in Software Architecture. Part I
TBD Quality attributes in Software Architecture. Part II
Documentation in Software Architecture
Certificates in Software Architecture
Books in Software Architecture
TBD Software Architect. Design vs Architecture

您有没有想过开发人员有哪些职业机会?什么方向是开放的,最终能成长到什么程度。最重要的是,45岁以上的开发者在哪里?您的朋友中有超过45岁的开发者吗?我个人认识超过这个年龄的几个开发人员,他们中的许多人都是硬核程序员,他们甚至经历过打孔卡年代。

开发人员可能会采取以下几种职业道路:

●第一个也是显而易见的是在你工作的领域成长。如果您是初级开发人员,那么只需考虑如何升级至中级,高级开发人员和领军人物。

转换到另一个技术栈。实际上,当iOS和Android OS获得成功时,大量开发人员进入了移动领域。

成长为经理角色。作为一名开发人员,我看到的最大的员工问题是缺乏称职的管理人员。聪明的经理很贵,因此他们很少。如果经理具有技术背景,那将使他与开发人员容易沟通的多。

成为软件架构师。这一系列文章将考虑这个方向。

退出IT。有时这会发生。做你喜欢做的事永远不会太晚。

是的,这是我的道路

在过去的8年中,我一直在使用Java EE,然后转到iOS,并成为团队的领导者。我管理过各种开发团队,包括Android和Web技术栈。为公司开发的多种服务创建了网络层的架构,使用了套接字和REST API。在熟悉团队领导两年多的时间里,我开始熟悉管理角色以及朝着这个方向发展的前景。在我的下一个角色中,我的目标是成长为软件架构师。

对于大多数开发人员来说,架构师在项目中的功能往往不明确,因此在本系列文章中,我将尝试找到这些相关问题的答案。谁是架构师,责任范围是什么,以及如何朝着这个方向发展,为自己和想要沿着这条道路前进的初学者制定纲要和行动计划。

谁能从中受益?

如果您属于以下类别之一,本系列文章将为您提供帮助:

IT开发人员或工程师。作为开发人员,您仍在成长,但您正在展望并规划您的职业生涯。即使目标最初含糊不清,有意识地设定战略目标的人也会比没有计划前往目标的人更快地达到目标。

团队领导,首席软件工程师。您处于软件开发学科的最高阶段。为了进一步发展,您可以选择学习新的技术栈,从事软件工程以外的职业,或成为软件架构师。

软件架构师。你最近担任这个职位,或者已经在这个领域工作了很长时间。也许这样一位专家的主要特质之一就是认识到一个人做不到全知全能以及学习过程是持续终身的。

IT经理。虽然您是一名经理,但您深刻认识到您至少应该大致了解您的下属或同事正在做什么。管理最严重问题就是管理人员在其管理的领域中技术上的无能。

谁是架构师?

在继续讨论更具体的问题之前,有必要定义软件架构师角色及其职责。

软件架构师是一个软件专家,他做出高层次的设计选择和选定技术标准,包括软件代码标准,工具和平台。最好的专家被称为首席架构师。
https://en.wikipedia.org/wiki/Software_architect

像大多数高级职位一样,没有明确的标准来定义这个角色。但是,可以定义一些有助于架构师职业生涯的责任和品质。

首先,让我们考虑一下架构师的特点

沟通能力。在与许多软件架构师交谈之后,我听说这是该专家最重要的特征之一。在工作期间,他们必须在业务层面与客户交流,包括各级经理,业务分析师和开发人员等。如果你有天生亲和力并且你知道如何说服人们,那么这将是一个巨大的优势,因为正确解释你的行为是非常重要的。架构师是简洁,雄辩和称职的演讲者。与我交谈的软件架构师在沟通和说服方面具有高超的技能。这个特征是最重要的另一个原因是,这个架构师角色参与了大多数讨论制定过程,并且通常必须达成对所有相关方都可接受和有益的妥协。

广泛而深入的技术知识。这应该是显而易见的,如果你是学医的你几乎不可能成为软件架构师。此外,架构师通常在好几个技术栈的知识中具有相当水平,并且应该对其他一些技术栈有很好的理解。软件架构师还应准备好编写大量技术文档,报告和图表。

责任。您应该明白,架构师的决策通常是最昂贵的那种。因此,处于这个位置的人应该对他的工作和做出的决定采取最负责任的方法。如果说开发人员的错误会花费若干人天的工作量,那么架构师的错误在复杂项目上的代价可能是若干人年!

抗压性。您将不得不做出决定,因为在此角色中,您将被要求这样做,您也将需要回应这些请求。您将与来自不同领域的不同人员合作,您将不得不应对快速变化的需求,甚至是不断变化的业务环境。因此,有必要为压力做好准备并寻找一些方法来摆脱负面情绪。只有当工作带来快乐时,它才会让人愉快。因此,如果您只是因为钱多想选择这个角色,那么请再考虑一下。

管理技能。这包括组织和领导技能。领导团队的能力至关重要,团队可能由分别处在非常不同领域的专家组成。

分析技能。即使专家在技术方面很博学,他也会自己尝试很多东西或者参与各种类型的项目,但这并不能保证他能够轻松地改变思维方式来成为架构师。最重要的任务之一是当开发人员已经在评估,设计和开发时能够将系统的若干实际对象以抽象的形式表示成问题。良好的沟通技巧对于向团队成员和客户清晰地表示最终系统的抽象形式至关重要。有必要清楚地在业务和开发之间进行沟通,不断的沟通。

如果我们在谈架构师的责任,那么这里有一个19世纪关于桥梁建设的完美例子。当时,新建桥梁的测试如下:而第一辆车在桥上面通过时,核心人员包括工程师,架构师和工人得站在桥下。因此,他们将生命放在建造质量和结构的强度上。所以,如果有一个问题 - 软件架构师对项目的责任是什么?答案是,他对一切负责。

如果你放弃响亮而美丽的短语,那么架构师的工作包括:

●确定项目的利益相关者。

●确定项目利益相关者的业务要求和其他要求。

●根据上述要求设计整个系统。

●在高层次设计系统架构和该系统的每个组件。

●选择用于实现每个组件的技术以及组件之间的连接。

●架构审查。是的,是的,它是真的存在。

●代码审查。

●编写项目文档及其支持。

●在公司内制定统一的开发标准。

●在下一次系统发布迭代期间控制体系结构。

这只是软件架构师职责的一部分。最重要的责任是从项目开始到产品发布,再到开发增强功能,对项目提供全面的技术支持。并且支持到下一个版本发布。在工作期间,需在不同的角色之间来回切换。

如何成为软件架构师?

首先,定义里程碑目标以实现最终成为软件架构师这一战略目标非常重要。对我来说,未来六个月的目标是:

了解并尝试多种技术栈。我目前的知识集中在iOS领域。有必要尝试使用Android,多种后端语言,从python开始,并刷新Java EE技能。架构师是一个全栈开发人员,因此拥有广泛的技术知识非常重要。

阅读论文。判断哪些是有助于朝这个方向发展的最有价值的书籍和文章很重要。通常,找到此类文献的最有效方法是向该领域的其他专业人士寻求建议。在以后的一篇文章中,我打算给你这样一份文献清单。

寻找导师。最好在您目前的工作环境找到一名软件架构师。从训练有素的专家那里获得经验总是比从头开始研究某个区域更容易。准备好向导师提出好的问题非常重要。

学习课程/获得证书。有很多课程和证书可供选择,但只有少数是值得的,而更高级别的课程需要花费很多钱。就个人而言,我参加了Luxoft的架构课程(http://www.luxoft-training.com/it-course/ARC-001/),这些课程已被证明是值得投资的。非常重要的是,该课程的讲师应该是该领域的专业人士,并能够回答学生问题。至于证书,在开始之前,最好先了解是否有架构师的权威认证系统以及是否值得获得认证。这一点我将在本系列的后续文章中讨论。

其中一个最重要的部分是清晰可行的计划审查。哪些是已完成的工作,哪些是应该核实的内容,从何处着手加速进展,以及哪些目标是无意义的。

检查您的准备程度

如果您对如何成为软件架构师的系列文章中的这篇介绍性文章感兴趣,或者您突然想到尝试这条道路,那么务必确保这是您真正想要的。

首先,人们害怕一切新事物。一种新的位置,一种新的压力,而不是舒适的现状。当然,选择并不总是明确的,取决于你愿意改变生活中的多少东西。同时,它不仅取决于你,还取决于家庭,你的经济压力,父母和其他因素。

其次,这条路需要几年时间。成为软件架构师的过程不会在一夜之间发生。作为团队领导,我在被上级正式任命职位一年后才意识到该做什么以及如何应对压力。而我甚至以在此之前代理了这个职位长达六个月。我认识的一位软件架构师说,在他升任这个角色达18个月后,他才明白了自己的职责。这样的时间间隔是正常的,你需要了解你是否准备好朝着这个方向前进。即使你尚未准备好切实可行的计划,最好还是采取一些小步骤让你前行,而不是留在同一个地方。

站在同一个地方作为IT行业是生活中停滞和个人羁绊的代名词。

推荐书籍

Software Architecture in Practice (3rd Edition) (SEI Series in Software Engineering)
Essential Software Architecture