前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术硬实力,如何才能成为一名架构师

技术硬实力,如何才能成为一名架构师

作者头像
35岁程序员那些事
发布2022-09-23 18:16:52
3120
发布2022-09-23 18:16:52
举报

学习是一件需要长期投入的事情,尤其是在当下大环境恶劣的背景下,我们程序员必须要多多的投资自己,去加强自己的技术硬实力和软实力。

很多程序员的梦想,就是将来能成为一名架构师。包括我刚学编程那时候,也是以当架构师为目标,觉得不想当架构师的程序员不是好程序员,希望将来能成为一个优秀的架构师。就像拿破仑那句名言:“不想当将军的士兵不是好士兵。

”随着工作经历的增多,我也开始参与到架构设计中。对架构设计了解的越多,我越发觉得,其实做架构设计,并不代表一定要有一个架构师的头衔。

拿破仑那句名言,原句是“Every French soldier carries a marshal’s baton in his knapsack”,意思是“每个士兵背包里都应该装有元帅的权杖”。

元帅的权杖,意味着大局观,元帅的思维方式。当士兵背包里装有元帅的权杖,就意味着士兵也能胸中有大局观,能有元帅的思维,理解元帅在特定战场上想什么,这样能更好的执行命令,提升整体的战斗力。

其实拿破仑的本意是激励每一名上战场的士兵都要有大局观,有元帅的思维,并不需要每一个人都一定去当将军、当元帅。

这也适用于技术领域,对于程序员来说,并不代表一定要有一个架构师的头衔,而是心中有大局观,有架构师的思维,从而能理解架构设计,能写出好的程序。

你了解架构的精髓吗?

我查阅了很多技术资料,并结合自身的理解,给大家总结了如下几条:

  • 具备抽象能力;
  • 具备分治能力;
  • 具备复用能力;
  • 具备迭代能力;

(1)什么是抽象能力呢?

抽象能力可以说是整个架构设计的基础。因为对于架构设计来说,是要为了满足业务需求的,而业务需求都是一些文字性的描述、原型、UI 设计图,这些需求要最终变成代码让机器执行,就必须先进行抽象,抽象成计算机能识别的模型。

在软件项目中,遇到类似的场景,就会考虑抽象出来,总结一个规则和方法。有时候即使场景不同,也可以把其中有共性的内容抽象出来,可以更方便的使用。

(2)什么是分治能力呢?

架构设计的一个重点,就是要对复杂系统分而治之,分解成小的、简单的部分。但光分解还是不够的,同时还需要保证分解后的部分能够通过约定好的协议集成在一起。

还有像我们平时说的大数据,高并发这些复杂问题,也是通过分治来解决的。要知道单台机器,无论你性能如何优化,都是有其极限的。而像“双十一”这种高峰时刻,瞬间的流量可能是几百、几千万,就需要通过设计合理的策略,分化到不同的服务器,让每个服务器的流量不至于太大。

这种分治的能力其实不仅适用于架构上,也适用于平时程序员写代码。比如说有些程序员写代码,喜欢把大量的逻辑放在一个方法或者一个类里面,最后极其难以理解和维护,如果能分拆成几个小的方法或者小的类,不仅结构更清晰,也更容易理解和维护。

(3)什么是复用能力呢?

用是一种非常简单有效的提升开发效率的方法,通过对相同内容的抽象,让其能复用于不同的场景。

复用能力在日常写程序的时候也很常用,比如有的程序员喜欢复制粘贴代码,所以经常看到很多重复的代码,如果要修改,得修改好几个地方。如果能把这些重复的代码提取成公共的类或者方法,就可以减少很多重复,让代码更简洁和易于维护。

(4)什么是迭代能力呢?

好的架构设计,通常不是一步到位,而是先满足好当前业务需求,然后随着业务的变化而逐步演进。

就像淘宝这样的业务,它背后的架构设计也不是一步到位成现在这样,拆分成好多微服务。最开始,它也只是个普通的分层架构,后来随着业务不断扩展,逐步迭代成今天这样复杂的架构。

这种迭代的能力,在写程序时也很重要。因为很多程序员喜欢追求完美,期望能一步到位,然而这样带来的问题是开发成本会大量增加,导致进度延误。另一方面,如果对需求的变化预测不正确,就会有很多冗余的代码,后面难以维护。

其实,开发人员对以上提到的这些思维模式都不陌生,只是在实践的时候,总是有意无意地忽略了。

好的架构师具备怎样的品质呢?

对于程序员来说,培养架构师思维,并不是很难的事情。然而要成为好的架构师,光有架构师思维还不够。

一个好的架构师,不仅技术要好,还要懂业务;能从整体设计架构,也能在局部实现功能。

比如说一个做互联网软件架构设计有丰富经验的架构师,要去做建筑行业软件的架构设计,短时间内一定是很难设计出好的架构,因为他需要先熟悉建筑行业软件的业务,才能设计出符合业务特点的架构。

有一种架构师叫“PPT 架构师”,也就是说擅长写 PPT,画架构图。对各种热门的名词如数家珍。但是脱离一线开发,对业务和底层基础知识知之甚少。这样的架构师设计出来的架构,通常是不接地气的,实现起来会非常困难,成本也高。

因为作为架构师,如果不写代码,是不能体会出设计不好带来的问题,无法及时地对架构中的问题做出调整。

所以好的架构师,一定要是程序员出身,并且能坚持做一线程序员。也许他不需要写大量的业务代码,但至少要参与一部分编码工作,以及代码审查工作,以保证架构的正确执行。

好的架构师,不仅要有技术深度,还要有一定的技术广度。因为技术的选型,通常不能局限于一种技术,需要根据业务特点和团队特点灵活地选择。

好的架构师还有一个能力就是沟通能力。作为程序员,可能把自己的模块开发好就不错了,相对不需要太多的沟通工作。但是架构师就不一样,除了架构设计,还有大量沟通工作。

首先架构师要经常和产品经理打交道,反复确认需求,了解需求细节,只有这样才能分析清楚需求,了解各种用户场景。

然后架构师设计出来的架构,要通过文档、会议来讲给其他人听,能让其他人理解架构,用好架构。

所以要成为好的架构师,需要具备几个条件:

  • 有架构师具备的能力:具备良好的抽象能力、分治能力、复用能力和迭代能力;
  • 懂业务需求:能很好地理解业务需求,能针对业务特点设计好的架构;
  • 有丰富的编码经验:像抽象、分治、复用这些能力,都需要大量的编码练习才能掌握;
  • 另外保持一定量的编码经验也有助于验证架构设计;
  • 良好的沟通能力:架构师需要沟通确认需求,需要让团队理解架构设计。

具备了这些条件,就可以成为很好的架构师,设计出好的架构,组织好人员和技术,低成本的满足好需求和需求变化,以及系统的运行。

如何才能成为一名优秀的架构师?

想要成为好的架构师,没有什么捷径,需要比普通程序员更多的努力才行。如果你有志向成为架构师的话,一定要做到如下几点:

(1)要成为一个优秀的程序员;

技术好是成为架构师的基础条件。需要让你的代码容易读,容易扩展,能重用。这样通过大量的编码实践,才能逐步地培养出好的架构师思维。

(2)多模仿多学习;

在刚开始的时候,不用想着闭门造车,想出一个特别牛的架构。反倒不如先把业界成熟的流行的架构吃透,用好。现在网络上也有很多好的开源项目,这些开源项目都有良好的架构设计,可以找几个跟你研究方向相关的项目,本地搭建一下,然后自己试一下,最好能弄一个自己的项目二次开发或者模仿一遍,做中学,是最简单有效的。

(3)选择好行业和平台;

软件其实下面细分了很多行业领域,大类有像互联网应用、企业应用、游戏应用,大类下面又有细分的小类。比如说企业应用又和各行各业的业务结合在一起的,像建筑行业软件,就需要有建筑行业的专业知识。

前面我说过,架构师要同时懂业务和技术,而这些行业知识,也不是短时间内能积累起来的。所以如果想当架构师,最好能选择一个合适的行业,能在一个行业里面早点积累足够的行业知识,后面做架构设计的时候,就能更好地设计出符合业务特点的架构。

同时,这些行业领域的业务经验,和技术结合的架构经验,也会成为你个人独特的优势,不容易被替代。

还有平台也很重要,好的平台,能给你更多的实践机会。所以你看极客时间上那些开课讲架构、微服务的,无一例外都是大厂出来的,因为只有大厂,才有机会去实践这种高并发大数据的架构设计。

如果你有志成为架构师,不能光埋头写程序,也要早做打算,选择适合你自己的行业和平台,少走弯路。

是否真的是人人都是架构师?
很多人可能都被灌输这样一个思想,那就是“人人都是架构师”,其实大家被这个“伪命题”给误导了,正确的来将是“每个人都要具备成为架构师的能力”,但是通常要想成为架构师,门槛事非常高的,并不是说你想想,就可以成为一名架构师的。

比如说,我经常碰到业务团队,很多比较资深的工程师,在自我介绍的时候,说自己是负责团队内部负责的业务的架构师,当我们在深度的沟通之后发现,它就是对业务要比一般的工程师熟悉一点,但是基本都是停留在细节层次,根本不具备业务的整体思维能力,也就是说不具备一个业务从0-1的能力。

换一句话说,那就是当你的业务、技术、架构和管理的融合能力达不到一定的层次,你是很难成为架构师的。所以,我通常建议那些刚毕业才几年的小伙伴,一定不要一开始就转型去做业务架构师,而是要扎根在业务的第一线,去为自己积累更多的实战经验,当经验和能力积累到一定程度之后,你转型到架构师之后,你会发现你做事情会得心应手,而不是处处都是你认为的坑点。

就比如现在刚刚履新支付宝中国董事长的倪行军,它是程序员出身,并且一路转型为架构师、技术负责人、CTO、业务总裁,最后到现在的支付宝中国董事长。其实呢,这个才是最好的成长路径,作为技术人来说,当你在技术这个领域有了积累,并能够利用这些积累,给自己带来职位上的跃迁的时候,你才能真正的去做事情,并且也能够组做好事情。

我和大家聊这些的主要原因是因为现在市面上,存在太多的水货架构师或者某某高管,其实它们的能力真的一般,就是不知道找了哪位高人,将自己包装成一个无所不能的人才,混进了你所在的平台。不过一般这样的人,是很难做到蒙骗所有人的。

我见过一些高管,空降之后就把下面的人能够向上反馈问题的所有通道全部关闭,自己在部门内部搞一言堂,但是最终还是纸包不住火,还是东窗事发了,其实它忽略了一个问题,“兔子急了还会咬人呢?更何况那些要被你逼掉饭碗的中年人呢?“

总结

要想成为好的架构师,没有什么捷径可以走,首先需要要成为一个优秀的程序员,然后多模仿、多学习好的架构设计,最后还要早点选择好行业和平台,积累好行业的业务知识,借助平台获得大量的实践机会。而好的架构师,需要具备“有架构师思维”、“懂业务需求”、“有丰富的编码经验”和“良好的沟通能力”。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构随笔录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 你了解架构的精髓吗?
  • 好的架构师具备怎样的品质呢?
  • 如何才能成为一名优秀的架构师?
  • 是否真的是人人都是架构师?
  • 很多人可能都被灌输这样一个思想,那就是“人人都是架构师”,其实大家被这个“伪命题”给误导了,正确的来将是“每个人都要具备成为架构师的能力”,但是通常要想成为架构师,门槛事非常高的,并不是说你想想,就可以成为一名架构师的。
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档