排版 / 以码为梯
文章字数 / 3135
如何成为架构师系列文章(译文)的第一篇,欢迎转发、评论、收藏
本系列文章列表
成为软件架构师的路径
软件架构中的利益相关者
软件架构师类型
系统架构中的非功能性需求有哪些
如何编写软件架构文档
软件架构相关证书
软件架构相关书籍
你是否也曾经想知道作为一名开发者,职场的机会在哪里?有哪些方向是可以选择的?而且最重要的是,那些超过45岁的大龄程序员去哪里了?我认识一些年龄超过45岁的程序员,而且其中的一些甚至是见过打孔卡片机的硬核(hardcore)程序员。
作为一名程序员,可能有以下几个职场路径可以选择:
第一个而且是最明显的一个是在你工作的领域成长。从初级程序员变成中级程序员,最后变成高级程序员直到技术管理角色。
转换到另外一个技术栈。很多的开发人员在IOS和Android兴起的时候转入到了移动端开发领域。
成为管理者。称职的经理是很稀缺的,聪明的管理者是昂贵的,因此他们是稀缺的。如果管理者有技术背景,那这就让他跟开发人员有了共同的语言,对沟通也是有利的。
成为架构师。这个方向是这系列文章所要表达的。
换个行业。这是经常会发生的,做自己喜欢的事情永远不会晚。
在过去的八年里,我先是使用JAVA EE,接着转到了IOS开发并且成为一个团队管理者。我管理过各种各样的开发者团队,包括Android和Web开发团队。使用socket和rest api为公司开发的一些服务搭建了基于 络层的架构,在担任团队负责人两年多的时间里,我熟悉了管理角色以及朝这个方向发展的前景,我的下一个目标是成长为一个架构师。
对于大部分的开发者来说,对于架构师在项目上的作用是模糊不清的,所以在这一些列的文章中,我将尝试回答架构师相关的问题。包括谁是架构师,架构师的职责范围在哪里,如何朝着这个方向发展并为我以及想要朝这个方向发展的初级开发者指定计划。
谁能从这系列文章中受益
如果你属于以下人员,这系列文章将会帮助到你
IT开发者。你仍然可以作为一个开发者成长,但是你开始展望未来并且做职业规划。即使最初的目标很模糊,但是一个有意识地设定战略目标的人会比一个不计划前进方向的人更快地实现这些目标。
团队领导者、首席程序员。你已经站在作为软件开发者的最高阶段,要想进一步成长,你可以选择学习更多的技术栈,追求软件行业之外的职业,或者称为一名软件架构师。
软件架构师。你可能刚刚成为架构师或者已经成为架构师很长一段时间,但是作为一名专家,一个主要特性就是知道永远有自己不知道的知识并保持终生学习。
IT管理者。尽管你是一名项目经理,你完全明白你至少应该大致了解你的下属或同事在做什么。管理中的一个很尖锐的问题就是管理人员对其所管理的领域涉及的技术一无所知。
谁是架构师
在谈论更加具体的问题之前,我们有必要定义软件架构师的角色和责任。
一个软件架构师是做出高层次设计选择并且制定包括软件编码规范、工具和平台在内的技术标准的软件专家。
跟大多数高级职位一样,没有明确的标准来定义这个角色。但可以确认架构师的一些职责和品质。
架构师的特性
首先,让我们考虑架构师的特征:
可沟通性。在跟很多的架构师聊过天后,我知道了这是架构师该具备的基础特征,在工作当中他们必须用业务语言跟客户、各级经理、业务分析师和开发人员交谈。如果你有天生的魅力并且知道如何说服别人,那么这将是一个大的加分项,因为这对你正确解释自己的行为至关重要。架构师应该具有辩证思维,是称职的演讲者。与我交谈的软件架构师在沟通和说服方面具有高度发达的技能。此特性最重要的另一个原因是,担任此角色的架构师参与了大多数讨论制定过程,并且通常必须达成对所有相关方都可接受和有益的折衷方案。
广泛而深入的技术知识。显而易见的是一个拥有医疗背景的人是不可能成为架构师的。除此之外,架构师通常对一些技术栈处于熟悉的状态,而精通另外一些技术栈。架构师需要做好撰写大量技术文档, 告和图标的准备。
责任心。你需要明白的是架构师的决定是很昂贵的。因此处于这个位置的人需要对自己的工作和决定负责任。如果开发人员的错误会浪费一个人几天的工作时间,那么架构师的错误可能会在复杂项目上花费数人年的时间!
抗压能力。因为处于这个角色你必须要做决定,这也是你被要求做的,而且你必须做出回应。你将跟来自不同领域的不同的人共事,你必须应对快速变化的要求或者变化不断地商业环境。因此,你需要为压力的到来提前做好准备并且寻找一些排解负面情绪的方式。当工作带来快乐时,工作总是令人愉快。因此你选择成为架构师仅仅为了钱,那么你就需要再考虑下。
管理技能。这包含了组织和领导能力。领导一个可能由不同专家组成的团队的能力至关重要。
分析能力。尽管一个专家对技术涉猎甚广,他也参与过各种各样的项目。这也不能保证他可以很容易将思维转化为架构师的思维。最有价值的任务之一是根据系统的一些有限真实对象表示抽象问题的能力(抽象能力)。出色的沟通能力对于向团队成员和客户以最终系统的形式表达抽象是必不可少的。
我们在讨论架构师的职责时,19世纪的桥梁建造是个完美的例子。在那个时候,新建造的桥梁的测试是用以下方式进行:桥梁建造的主要工程师,建筑师,工人在第一辆车通过桥梁时站在桥的下面。因此他们将生命押在了桥梁的结构和强度上。因此,如果有一个问题——软件架构师对项目的责任是什么?答案是,他对一切负责。
架构师的工作
架构师的工作包括:
识别项目的利益相关者。
识别商业需求和项目中利益相关者的需求。
基于接收到的需求设计整个系统。
在高层次上选择系统架构和系统中的每个组件。
选择实现每个组件以及组件之间连接的技术。
架构审查。
代码审查。
编写项目文档并维护文档。
在公司内部创建统一的开发标准。
在系统发布的下一次迭代期间控制架构。
这些只是软件架构师职责的一部分,最重要的职责是从项目开始、产品发布到增强功能的开发,为项目提供全面的技术支持,并支持下一个版本。在工作日期间,有必要在不同任务之间进行大量切换。
如何成为软件架构师?
理解并尝试一些技术栈。我目前的知识集中在IOS领域。有必要试试Android,一些服务端语言,开始学习python,并刷新Java EE技能。架构师是一个全栈,因此具备很广的技术栈是很必要的。
读论文、读书。需要确定有助于朝这个方向发展的最有价值的书籍和文章。通常,发现好书的最快捷的方式是咨询某领域内专家的建议。在接下来的文章中,我计划给你们一些书的列表。
寻找一个导师。最好在您当前的单位找到一名架构师。从经验丰富的专家那里获得经验总是比从头开始考虑特定领域更容易。向你的导师请教正确的问题也是很必要的。
学习课程并取得证书。有很多课程和证书可供选择,但只有少数是物有所值的,而且更高级别的课程要花很多钱。
重要的部分之一是清晰和稳定的计划审查。已经做了什么,应该审查什么,在哪里加速或删除哪个目标是无用的。
检查你的准备程度
如果您对如何成为软件架构师系列中的这篇介绍性文章感兴趣,或者如果您突然有尝试这条道路的想法,那么它是值得的。
首先,人们害怕新事物发生。一个新的位置,新的压力,害怕走出舒适圈。当然,选择并不总是明确的,取决于你愿意在多大程度上改变你的生活。同时,它不仅取决于您,还取决于家庭、你的财务、父母和其他因素。
其次,这个路径需要花费好几年的时间。成为软件架构师的过程不会一蹴而就。作为一个团队领导者,在我被任命为官方职位一年后,我才意识到该做什么以及如何应对压力。在那之前的半年里,我都是以非官方的方式执行着架构师的职责。一个我认识的架构师也曾跟我说过,他在被任命为架构师18个月之后才弄清楚架构师的职责。这样的时间跨度是情有可原的,但是你需要知道你是否已经做好朝这个方向发展的准备。尽管你可能还没有一个稳定的计划,最好开始采取一些小步骤来推动你前进,而不是停留在同一个地方。
在IT行业原地踏步,是人生停滞不前和个人羁绊的代名词。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!