46

软件架构师之路

 6 years ago
source link: http://mp.weixin.qq.com/s/-hEbS5XhOFXGdHFrc3h20Q
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

软件架构师之路

Original Nikolay Ashanin 大码农 2017-12-18 12:19 Posted on

Image

大码农导读:程序员的职业发展是一个很值得我们深入探讨的问题,因为它关系到程序员的未来。程序员的发展路线其实有很多,你选择了合适自己的路了吗?在你选择要去哪里的时候,想好该怎么达到目的地吗?

你是否曾经想过程序员的职业生涯应该怎样发展?程序员到了45岁之后会怎样?你见过45岁以上的程序员吗?我倒是见过不少,他们很多都是大神级的人物,有一些甚至还见过穿卡机。

程序员的职业发展路线不外乎这么几种:

  • 第一种最直接,就是在你所处的领域内不断成长,从初级程序员成长为中级程序员,再从中级程序员成长为高级程序员,然后是主力程序员。

  • 进入新的技术领域。比如,在iOS和安卓崛起的那些年,有很多开发者转向了移动开发。

  • 成为管理者。在程序员眼里,这个行业很缺乏有竞争力的管理者。真正聪明的管理者太少了,如果他们有技术背景,就能够跟程序员打成一片。

  • 成为软件架构师,这是本文的重点。

  • 转行,离开IT行业。有些人会选择这条路,其实只要你想清楚了,做什么都不晚。

在过去八年,我从Java EE开发转到iOS开发,然后成为项目组长。我管理过各种各样的开发团队,包括Android移动开发团队和Web开发团队。我为公司搭建过基于套接字和REST API的网络架构,公司的服务都运行在这个平台上。在做过两年多的项目组长之后,我对管理者的角色有了自己的理解。我的下一个目标是成为架构师。对于大多数开发者来说,架构师的角色并没有一个清晰的定义,所以我要尝试在这篇文章里回答这个问题。

架构师是什么?

架构师是这样的一个角色,他参与高层的技术决策,制定技术标准,包括编码标准、工具和平台。与其他大多数高级职位一样,架构师角色也不存在清晰的定义。不过架构师需要承担一定的职责,并拥有一些特定的品质。

  • 善于沟通。很多软件架构师认为,沟通是架构师应该具备的一项非常重要的品质。在实际工作当中,他们需要与客户、各个层级的管理者、业务人员和开发人员沟通。如果你天生就擅长说服别人,那么在成为架构师时无疑会祝你一臂之力。架构师应该是能言善辩的,我所接触过的架构师都十分善于沟通和说服别人。这个品质之所以如此重要,是原因架构师参与了大部分的决策讨论,最终必须达成各方可接受的共识和共赢。

  • 技术的广度和深度。这个是很显然的,一个只有医药背景的人很难成为软件架构师。另外,架构师还需要在多种技术栈上达到较高的水准。他们需要编写大量的技术文档,制作报告和图表。

  • 承担责任。大部分架构决策都是很关键的,而且代价高昂,架构师必须担负起这些责任。在复杂的项目中,一个开发人员犯下的错误可能会耽误项目几天,而一个架构师犯下的错误可能会耽误项目一整年。

  • 抗压。因为角色的关系,架构师必须做出很多决策。他们需要与来自不同领域的人一起工作,必须快速地做出变更。所以,架构师需要准备好承担沉重的压力,还要想办法调节负面情绪。因乐趣而工作,就会在工作中找到乐趣,如果只是为了金钱,那么请三思。

  • 管理技能。管理技能包括组织技能和领导力,领导一个团队需要各种不同的技能。

  • 分析技能。一个技术专家可能在某些方面博学多识,但并不代表他也具备架构思维。架构师需要具备将抽象问题具象化的表达能力,而这需要良好的沟通能力来协助,他们需要成为业务人员和开发人员之间的粘合剂。

说到架构师的责任问题,这里有一个很好的例子。在19世纪,建好一座桥梁之后,他们是这样做测试的:让主要的工程师、架构师和工作人员站在桥底下,然后一辆汽车从桥上开过。他们的命根子就别在桥梁的结构设计上。如果有人问架构师的职责是什么?答案就是:他们为一切负责。

去掉那些冠冕堂皇的辞藻,可以这么概括架构师的工作:

  • 理清项目的利益相关者。

  • 理清业务需求和利益相关者的需求。

  • 基于收集到的需求设计整个系统。

  • 技术选型。

  • 架构评审。

  • 代码评审。

  • 编写项目文档。

  • 制定公司统一的开发标准。

  • 在开发迭代中把握架构方向。

这些也只不过是软件架构师职责的一部分。从项目启动到发布,再到后期的维护,架构师都需要提供技术支持。

如何成为架构师?

要成为软件架构师,需要定好里程碑式的目标。以我为例,接下来六个月我的目标是这样的:

  • 学习几个新的技术栈。我目前主要集中在iOS开发上,所以我想尝试Android平台和其他服务器端编程语言,从Python开始,然后再去巩固Java EE知识。架构师其实就是全栈工程师,需要有很广的技术视野。

  • 阅读。阅读大量有价值的书或文章有助于达成目标。找到这类材料最好的方式是找各个领域内的专家推荐。

  • 寻找导师。如果有可能,在你工作的地方找到一个软件架构师成为你的导师。从一个训练有素的专家那里更容易学习到经验,你要想好问他们什么问题,因为只有好问题才会得到好答案。

  • 参加培训课程。现在外面的培训课程有很多,但真正有价值的没有几个,而高级课程又非常贵。在选择课程时,最重要的是讲师必须是相关领域的专家,而且能够帮你答疑解惑。

人们总是害怕接受新的事物——一个新的职位、一种新的压力,不愿意走出舒适区。有时候要做出选择并非易事,这取决于你改变现状的愿望有多强烈。有时候,这也不是你一个人的事情,因为你可能背负着家庭或财务上的压力。

当然,成为架构师不是一朝一夕的事情,它可能需要好几年时间。我也是在正式成为项目组长之后一年才学会如何应对压力。我认识的一个架构师说,他在成为架构师18个月以后才知道自己该承担什么样的职责。这些情况都是很正常的,你一定要先想清楚自己是否已经为此做好了准备。如果你还在犹豫不决,那么最好先一步一步来,不要操之过急。人们在工作中面临的抉择,其实也是人生的抉择。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK