作者:892974506_bdb55d_896 | 来源:互联网 | 2023-05-17 12:17
早上赖床的时候思考了一下关于架构师知识体系的问题,思考过后觉得自己对这个职业又有了新的认识,于是记录下来,作为自己备考架构师的开篇之文,希望能一直坚持下去,多思考多写,到时候就不怕下午的论文题了。
早上赖床的时候思考了一下关于架构师知识体系的问题,思考过后觉得自己对这个职业又有了新的认识,于是记录下来,作为自己备考架构师的开篇之文,希望能一直坚持下去,多思考多写,到时候就不怕下午的论文题了。
首先,架构师是个什么样的工作岗位,在求职时,我曾经被问过这样的问题,当时的回答我自己不太满意,现在想想,如果下次再答,我会这样说,架构师是一个决策者,一个搭积木的人,你想要金碧辉煌的皇宫,我就用黄色积木搭一座恢弘华丽的宫殿,你想要绿草莹莹的小屋,我就用绿色积木搭起一座充满生机的尖顶小屋。这样说也许很抽象,那再扯点题外话,前两天看“军情解码”时,国内某专家谈中国的武器系统时说的一句话,深得我心,他说“中国的战机出来以后,网友们总爱拿去跟美国的某某机型进行比较,说我们的战机某某地方比美国强,世界先进之类的。这种说法做法是片面的,我看一个武器,重点看它能不能和我国现有的武器装备形成完整的体系,能不能弥补整个战略体系的缺陷,提升整体战斗力”。体系!何为体系,体系与个体的区别在哪里?有一个道理其实大家都懂,最强的不一定是最好的,一堆最强的个体组合在一起未必就是最好的团体,片面的强更不能代表整体的强。在软件行业,也是同样的道理,同样的系统纵使有千百人做过,有千百个成功案例,但是一个不好的决策者,仍然能将项目带入失败的深渊。事实证明,采用照搬照抄的方式,寄希望于使用现成组件进行粗劣的堆叠和组合就能搭建起一个系统并卖钱的时代已经过去,面对各种个性化场景和复杂的需求,如果缺乏理论依据支撑,不成体系,即使使用了当前最先进最热门的技术,也无法保证整个项目的成功。所以,软件行业需要架构师,需要更多称职的架构师。
一个称职的架构师需要具备超人一等的能力,这些能力包括:
1.超强的技术功底:但凡程序都有BUG,大到操作系统、JVM,小到一个开源工具包,软件开发活动30%-50%的时间是在修复BUG,解决BUG的方式方法和所花费的时间是检验一个人技术能力的最佳方法。对于架构师的要求是,通过现象要能在第一时间定位问题源,提出解决方案。这需要超强的技术功底,如果还要靠打断点DEBUG才能定位问题,那黄花菜都凉了;
2.超强的技术识别和技术改造能力:识别能力在任何一个行业都是很重要的,软件行业也不例外,能判断好与不好,好在哪里不好在哪里,是否能为我所用,达到这样的程度,绝非一日之功。识别出好的东西后要纳入到自己的整体解决方案中从而发挥功效,仍需要做很多工作,如整合和包装,甚至是剥离和抽取这种刀砍斧劈的功力不修炼到家是做不好架构师的;
3.架构师要掌握各个问题域的多种技术解决方案,十八般兵器得样样精通,只拿一个板手造不出一幢摩天大楼;
4.架构师还要熟知各种技术的发展与动向,摩天大楼不是一天盖成的,一个企业的信息化进程也不是一蹴而就的,所有技术与解决方案都是经过不断演化形成的,如何推动与把握住演化的过程,区分变与不变,绝对是个挑战。
大到企业的信息化建设,小到一次软件项目的开发,这整个过程都是复杂的、综合性很强的创造性活动,架构师作为整个活动的技术决策者,面对各种各样的问题需要有足够的知识深度和广度,为他的每一次决策提供充分的理论依据,在做决策时如果你获得的信息和你的知识体系不足以对问题域展开分析和论证,不足以让你理清主次,看清楚该问题域的历史、现状和未来,那你就无从做决策,你所做的决策将是不严谨,且致命的。所以架构师的修炼重点就是构建自己的知识体系,知识体系是由方方面面的知识组成,知识的特点决定了片面、零碎的知识是容易被遗忘的,只有不断吸收新的知识,并将这些知识经过消化吸收,与已有知识体系进行融汇贯通建立关联,将单个知识点连成线,织成网,经过多次的挖掘、整理、利用,才能在大脑中形成更持久的知识体系。知识体系的建立是个日积月累的过程,所以整个过程将是循序渐进,不断强化和完善的过程。我根据自己的理解,将架构师需要掌握的部分知识做了一个简单的分层,列举主要的技术点,做为自己下一阶段系统学习和巩固的目标。
硬件:交换机、路由器、负载均衡、小机、分布式存储
操作系统:windows、linux、unix(重点看内存模型、IO、进程管理)
开发基础:数据结构、算法、JVM、JDK、数据库基础
系统交互:网络编程(TCP/IP、UDP、NIO)、SOA、REST
架构基础:OO、设计模式、数据建模
架构设计:架构设计方法论、理念
应用层技术:分布式计算
学习的目的不仅仅是为了拿证,更是职业转换的必经之路,只有静下心来修炼好内功,形成自己的知识体系,才能做到手中无剑而心中有剑。