在项目组也有段时间了,你对系统架构师了解过吗?

什么是架构师?

​​​​系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。

架构师并非必需品?

在软件开发刚兴起那一会,哪有听说过架构师,更没有说大学中有系统架构方面的课,做项目的时候也很少有专门的架构师角色。一般来讲,系统比较简单的话,并不一定要有架构师,当系统更为复杂,才需要有人在更高的视角上去关注整体性的东西,这也是系统规模不断发展的结果。 所以,我们可以认为,架构师并不是一个必需品,甚至不同公司架构师的职责都不太一样,并没有一个非常明确的定义,但整体来讲,架构师需要关注整个体系中方方面面的东西,还需要去解决一些关键性的技术难点,并需要有更为长远的考虑,这个是共识。

架构师与工程师之别

架构师与工程师之间的差别并不在于年纪 ,而是在于视角的不同以及各方面积累的差别。

首先是意识。作为架构师,不能仅仅关注怎么去实现一个功能,还得去琢磨为什么这么做、怎样才能做得更好、应该在什么场景采用什么样的技术方案等问题。另外还得去关注测试、部署、项目管理的方式等方面,甚至要去了解用户的需求、公司业务的需求。如果一直考虑这些事情,时间长了、经验多了,就会有比较好的整体概念或视图在脑中,综合素质会得到提升,明白功能只是最基本的,系统的可用性、稳定性、可扩展性更为重要。

其次是积累。IT技术一直在演进,全世界无数人的不断研究与实践成就了技术的提升与进化。作为技术人,需要关注当前最新的技术、架构、解决方案、技术理念等,理念可以用不同的技术来实现,也一个不断进化的过程。而作为架构师,承担的是更重要的角色,他的决定会影响到更大的团队或体系,所以就需要有足够多的相关知识和技能,以及足够广的视角,而这些都需要架构师平时不断的积累。看书,技术相关的大概一半,另一半主要是社科类、经济、历史、管理之类的,对提高架构思维很有帮助。

再次是责任感。之前提到,架构师承担的是更重要的角色,他的决定会影响到技术选型、系统架构、具体实现的方案甚至系统发展的方向,所以架构师需要有很强的责任感,要对技术团队负责,需要发挥自己的影响力,做很多沟通、协调、支持的工作。

最后是兴趣。在我看来,人是受限于他的性格、兴趣、天分这些因素的,会不自觉地去靠近他更喜欢、更擅长的方向。所以,到底是当工程师还是架构师,或者其他角色,也是要看兴趣的,有的人就是喜欢解决技术难题,就是喜欢具体的模块实现,不想牵扯太多精力去考虑其他的方面,那么也不见得非要当架构师,只是分工不同,业界也有技术专家、研究员这样的角色。

架构与管理相通

之前架构师大会上经常有人说,没有最好的架构,只有最合适的架构。确实如此,作为架构师,很多时候,技术上的东西可能跟程序员差不多,但差别就在于能不能以更大更广的视角去看待问题,而非仅从自身角度出发。

视角变大之后,所要关注的东西就会变多,变量、变数也会更多,很难理想主义,很多时候都需要做出妥协或者说平衡,到最后就会发现,架构和管理在很多时候是相通的。

管理是在一个有限资源、确定时间点、明确目标的情况下,尽可能达成目标,过程中需要考虑轻重缓急,需要随时调整以适应现实变化,以完成目标为首要考量。

架构也是如此,需要考虑的是宏观上的方向性的问题,是各个部分之间的平衡关系,是如何配合才能达成最佳效果,而非仅仅是短期目标而达成,也不必纠结于细节的完美。

这些年,管理、架构都发展出了很多的理论,虽然行业、环境一直在变,但却也不能直接断定它们是不是合适,需要学习的是其中的思维方式,具体的问题具体分析。

架构需要具备及能力

(1)技术能力

技术能力,不用置疑肯定是最重要的。技术能力弱的架构不是一个好架构。所以,你需要知道所有主流技术的基本原理、应用场景,及快速解决问题的能力。所以,架构师必须要有见识,所需知识面肯定是要不断拓展的。你需要清楚在什么样的场景用什么样的技术比较合适,并知道可能存在什么样的风险。来了需求,你脑袋是空的,不知道用什么技术这是最可怕的。

(2)架构能力

这个可以表现为抽象能力、整体规划能力、及设计能力。你需要照在业务的角度进行系统分解、技术选型、架构搭建,以及规范制定。架构出来了至少可以满足最近的发展,或者可以很方便对现有架构进行扩容。有人说架构不需要懂业务,我面试过的就有明确表示不做业务架构。当然有方面的架构师,如中间件架构师,运维基础设施架构师等。但一般的后端架构师都是需要了解业务,不理解业务你如果进行系统分解,服务划分,及根据不同业务作出不同的架构。技术都是为业务服务的,不站在业务的角度设计架构,那架构就是空谈。

(3)沟通能力

这个看起来不是最重要的,其实也非常重要。作为一个优秀的架构师,你需要清楚的知道客户的需求,需要不断和需求人员进行沟通,以达到客户真正的目的。不论是不是架构师,任何一个职场人,提高自己的沟通表达能力无疑是不可或缺的。有一句话怎么说的,领导就喜欢拍马屁的。做领导的大多不是技术特别牛的,但沟通能力肯定是很好的。

这也映衬了我们上面说的,架构师与工程师之别,架构与管理相通的说法!

参考文章:

https://www.cnblogs.com/davidwang456/articles/5258002.html
https://baike.baidu.com/item/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E5%B8%88/3473607?fr=aladdin

发布了777 篇原创文章 · 获赞 661 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_41946557/article/details/104463001