Hello大家好,小豆君今天跟大家分享下我关于架构的一些理解,首先声明,我并不是什么资深的架构师,以下只是我自己这两年从事架构工作总结的经验,今天分享出来和大家交流,欢迎各位交流指正,最好能让我们碰出更多的火花。
以下内容,不管是初入职场的你,亦或是工作多年,我想都应该会有所收获(* ̄︶ ̄)。
我面试时经常会问到的一个问题是“你自己的职业规划是什么”,很多人的回答是“自己热爱技术,今后想在技术方面继续深造,最终做架构师”。我继续追问,“那你认为作为架构师,需要掌握哪些方面的技能”。这时,大部分人陷入了沉默,即使对于已经有8或10年经验的人,仍然没有仔细思考过这个问题,或者说只是思考了某些方面。
那对于架构包含的内容,我大致总结如下图,如有缺失,欢迎评论区补充
架构地图
是否被上图的内容吓到,架构需要掌握如此广的范围。但你不要害怕,所有的东西并不是要求马上掌握。但你必须知道架构都有哪些,这一点是很重要的。在你需要或预测需要时,就去掌握它,去深入了解。
你必须要有一个高屋建瓴般的构想,为系统做预留。在想要实现的时候,找到专业的人去实现。
通常对于较大的公司来说,架构会细分为系统架构师、运维架构师、前端架构师、后端架构师等等或者有其它的分类方法。但对于一个中小型(500人左右)的企业,往往只需要两三个甚至是一个架构师即可,此时对于架构师掌握技术的广度要高于某一架构细分领域的精度。除此之外,还要在自己的表达能力、业务理解度、获取资源描述诉求、客户交流、文档编写等方面进行锻炼。
是否会被吓到,不过你不必担心,小豆君后面会陆续分享这些内容。
今天我先就第一个细分领域——业务架构,分享我的理解。
业务架构
1.1 业务重要性
在讲业务架构之前,我要先讲一下业务的重要性,也许你正在为上学时没有听老师的话而感到懊悔,但以下都是一个过来人血的教训,希望你能多思考几分钟。
1.1.1 忠告1:不要在你的职业生涯中随意切换行业,一旦选定则坚持到底。
我需要招一名高级工程师,在众多的简历中有这样一份,他一共任职过三家公司,第一家是军工行业的、第二家是金融、第三家是通信。我问他,“你每次换工作应该收到了多份offer,那这么多offer中,在你做出选择这家公司决定的指标中,哪一项起到了决定性作用”,他的回答是“谁给的钱多就选谁”。最后虽然他的技术合格了,但我并没有录用,其中有很多因素,但比较重要的一项是他的行业知识几乎为零。
这位同学在以往的工作经历中,忽视了自己对行业知识的积累,导致其做过的系统设计并没有很好的结合行业特点进行结构性的优化与改善,他并不能站在行业的维度上去审视自己的系统,一味的以钱为目的使其一直专注于技术的某个领域,而在该领域也并没有质的突破,想要做一名合格的架构师,还是有很长的路要走的。
钱固然是选择公司的重要参考指标,但我觉得在选择自己的下一份工作时,自己要有一个清晰的目标,而其中重要的指标就是你想要从事的行业。如果一个人9年经验,每3年换一个行业,那他最近的行业经验就只有3年,前面6年的两个行业知识也因为时间忘记了,如果他正在寻求一份新行业的技术工作,那行业知识就是零,这是一件很可怕的事情。
很多资深程序员遇到瓶颈期迟迟难以突破,行业经验是一个重要因素,这往往决定了他职业生涯的高度。相比于技术专精,积累行业经验会更容易一些。
多年同一行业的经验,会让一个架构师从行业的角度去理解技术,运用技术和改造技术,从而为公司带来更高的价值。
当你为一份儿难以突破的技术日夜拼搏,终于有一天你战胜了它。你有没有想过,这个行业真的需要吗,它运用到业务中是最合适的吗,最牛的但不一定是最适合的。理想很丰满,现实很骨感。
如果你是一名刚毕业的新手,此时可以考虑薪资作为首要指标,但一定要在2年左右的时间里,找到自己要从事的行业并一直坚持下去,不轻易改变行业,在换工作时也不能因为工作A比工作B高出2000就选择A,行业指标是你考虑的关键因素,有时甚至要高于薪资指标,一时的得失并不能影响什么,越到最后你越会发现,你的坚持使你脚下的路越走越稳。
1.1.2 忠告2:无论你是初入职场或是工作多年,要时刻保持一颗持续学习行业知识的心。
不了解业务的架构不是好架构。
当业务专家和你讨论业务时,你需要有对应的业务知识和他无障碍交流;当向老板报告你的架构设计时,不是用别人听不懂的专业名词,而是通俗易懂的描述阐明设计理念,老板会为你的设计而欣喜若狂,他会给你足够的资源,并把你当作一个可以托付的人。
业务经验并不是一朝一夕就能够掌握的,需要你一直在这个行业中日积月累。
现在都说对于程序员35岁是一道坎,程序员吃的都是青春饭,新技术不断涌现,老员工掌握的技术很快就会被废弃,所以程序员需要不停的学习才能不那么容易被淘汰,被年轻人倒挂。很多人说这是散布焦虑,但这样的事情我身边却真实的发生着。
对抗这道坎,业务经验是年轻人无法比拟的,这也是我一再强调的,程序员一定要选好行业并一直坚持下去,且不断的积累业务经验。
再看对于那些刚从事IT行业的年轻人,你们也会变老,所以更要记住我所说的行业经验重要性,这是你在成为老员工时处于不败地位的重要保障,同时也是你区别于其他架构师的关键因素,业务能力能帮助你在更高的维度看待系统,设计系统和扩展系统。
1.1.3 总结
当我们在学习编程语言的时候,总会有一种可以改变世界的感觉,也许哪一天真能改变世界,而我们不能忘了语言只是一种工具,正是由于这种特性,使得它可以应用在各行各业,我们也可以在各个行业中灵活跳转。但当你的年限,你的技术到达一定水平后,你必须懂得业务,必须知道行业的特点和趋势,必须和非技术人员进行无障碍沟通。如果你没有从一开始就积累业务知识,后面的路将会举步维艰,职业生涯将停滞不前。
当我们专注于某个行业,以行业的角度去思考问题,站在更高的维度去看待解决问题,让我们所设计的系统在特定行业中充分发挥其潜力,创造其价值,也许你还没有发现,世界正因你而在默默改变着。
好了,今天的分享就到这里,下一篇分享如何设计业务地图。
欢迎关注
微信公众号: 小豆君编程分享
今日头条:小豆君编程分享