年轻程序员如何迅速成长为优秀架构师?

在技术岗上,论工资高低,除了算法工程师,便是系统架构师。前者在某个点上谋得深入,后者在所有点上谋得周全。

什么是好的架构?如何评判?

1)快速高效稳定

所谓好的架构,不仅是要让多个不同功能模块协同工作,使得系统能够高效稳定运行;更重要的还在于快,不能因为要设计一个良好的架构,就拖慢项目的进度。没架构1个月实现,有架构2个月实现,这是不应该的。架构是为项目服务的,不是项目为架构服务的。在一个项目里,永远是用户最大,产品体验最大,不是架构师最大,也不是其它产品经理、技术经理最大。

2)扩展容易,维护方便

有前瞻性,有好的可扩展性、可维护性,方便以后的功能扩展和二次开发。文档和注释全面,出了问题知道去哪里查找问题。为了做到这一点,整个项目在架构风格,代码规范上都要统一起来。

3)高内聚低耦合

一个好的框架必然要求不同功能的模块之间耦合低,并且模块内部之间内聚性高,也就是我们经常说的高内聚低耦合。实现高内聚低耦合的工具就是设计模式。设计模式是无数前辈,在无数项目中总结出来的架构经验,属于架构方法论中的方法论。

具体而言,拿到一个新项目,如何做到高内聚低耦合呢?哪些该高聚,哪些该低耦呢?每个模块都是要解决某一具体需求,该功能必定有核心的、不轻易删改的部分,这应该就是高内聚的部分。从这一部分出发,向其它不确定、可能变化的部分发散,这应该就是低耦合的部分。确定的让它聚起来,变化的让它活起来。

4)不断进化

业务初期预见不到变化是正常的,架构是随业务开展而变化的。架构没有完善的,只能永远接近于完美,不可能一步完美。为了能够适应架构的重新设计,需要一个有力的武器:重构。最好的重构方案,是渐进式重构。架构师心中永远有两条矛盾的主线,一条是实用,一条是完美。

渐近式重构,就像城镇化建设一样,建新设施不可能把旧设施全部推倒,都是建好一个再建另一个。

5)避免过度设计

架构的感觉是如何培养出来的?

拿做一个工具举例,你在做第一个版本的时候,你不知道第二个,第三个是什么样的。那么,做第一个的时候,肯定是能用就行。到第二个的时候,你就要把第一个拿过来修了,这里就涉及到了系统架构的重构。第三个也是一样的。经过多个版本的迭代,做过多个这样的项目之后,你就基本明白一些抽象的规律了。

感觉是从实践中来的,不是关在屋里平空想象出来的。每个项目都要先从底层代码争取快速实现,有余力时再搞高层的框架抽象。一定要避免在开始时就空想式的过度设计。

6)用效果说话

不管是什么项目什么高级的架构,最后都得在效果上见真章。什么同步多线程、异步多线程、异步单线程等,不管。别整的一个明星发一句女朋友的介绍整个系统都宕机了,这种就是伸缩性没做好。

7)不要过度迷恋面向对象

用封装、继承、多态等,通过多种设计模式将通用的业务逻辑做成组件,组件之间相互协作,形成架构。这种想法太学院主义了,要牢记第1条和第6条,不要过度设计,天下武功唯快不破,用效果说话,最快的架构并且支持业务快速成长的架构,就是最好的架构

在新一代高级语言中,例如Go语言,已经没有了类的概念,取而代之的是结构体。每个结构体就像一个器官,多个器官相互协作组成一个对象。这是Go语言的“面向对象”的哲学。

如何修练成为一名合格的招架师?

1)多看书

例如《设计模式》、《重构之美》等。

2)读优秀代码

单单看书还是不够的,你还需要先学习别人优秀的框架或项目,体会前辈架构的优美之处。

3)多动手实践

最后还是得多动手,这个付出比是1:10,也就是看别人1行代码你至少得自己动手写10行。

有人说学习架构,要先学习C,再学C++,最后学习Java。不反对学习这些语言,毕竟这些都是人类编程史上最优秀的语言之三了。学习架构与语言没有直接关系,架构主要练习的是抽象能力,积累的主要是行业经验。善于做游戏项目的架构,未必善于做银行项目的架构。

给新手架构师的一些建议?

1)尽量选一个对重构有良好支持的IDE,基本的“引用查找”、“全局重全名”等功能要有。不要相信“高手都是用vi写代码的” 那些鬼话,高手写Linux脚本用vi,做架构该用啥还是用啥。

2)尽早构建自动化编译环境和自动化测试工具

3)要不厌其烦的写注释,注释不是表演架构天赋的地方,注释用于记录思考和架构轨迹,什么注释都可以写,段子也可以

4)没有女朋友的赶紧找,有女朋友的多陪陪她,不要总对着电脑

最后回答一下标题,迅速是不可能的。

身为一枚高负债、矮挫穷的屌丝,拥有爱美之心就是错误~

有姑娘问我,“你多重?”

“180”,我说

“你多高?”

“160”

“哈哈,这不横向发展了”~

她这一笑,我好伤心,我们不能成为朋友了~

自此认识美女就成了我生活的主题~

我和美女喝咖啡,请美女吃饭看话剧,当然这都美女付钱~

写个技术文章,也喜欢拿美女做封面~

毕竟一天的码字生活太苦了,我需要快乐~

说到快乐,我有一个秘诀,就是麻小~

天大的问题,只要一盆麻小就解决了~

如果一盆解决不了,那就两盆~

今天我走到绝味店,我想说来一斤麻小

我没说

我说来一瓶可乐,零度的

毕竟麻小太贵了,我太胖了~

石桥码农

2018年3月27日于北京通州月亮河

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180328A005Q100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券