从零开始学架构第零讲
一、架构设计相关的特性
1. 架构设计的思维和程序设计的思维差异很大。
架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现。很多程序员在转换为架构师后,很难一开始就意识到这个差异,还是按照写代码的方式去思考架构,会导致很多困惑。
2. 架构设计没有体系化的培训和训练机制。
大学的课程几乎没有架构设计相关的课程,架构设计的书籍更多的也只是关注某个架构设计点,没有体系化的架构设计书籍,导致程序员在学习上没有明确指导,只能自己慢慢摸索,效率低,容易踩坑。
3、程序员对架构设计的理解存在很多误区。
例如:要成为架构师必须要有很强的技术天分;架构师必须有很强的创造力;架构设计必须要高大上才能体现架构师能力;架构一定要具备高可用、高性能……这些似是而非的误区让很多技术人员望而生畏,还没尝试就已经放弃了。
得益于移动互联网技术的快速发展,我在加入 UC 后有很多的机会直接参与架构设计,这些架构背后的业务形形色色,包括社交、电商、游戏、中间件、内部运营系统;用到的技术栈差异也比较大,包括 PHP,Java、C++ 等。虽然每次架构设计对我来说都是一个新的挑战,但正好也提供了非常好的机会,让我亲身体验不同的架构设计。在这个过程中,我不断学习、思考、实践、总结、改进、交流,逐步形成了自己的一套架构设计方法论。
有了这套方法论后,首先,我自己在做架构设计的时候游刃有余,不管什么样的业务,不管什么样的技术,按照这套方法论都能够设计出优秀的架构。在职业等级面评的时候,就算我之前从来没有接触过对方的业务,也能快速理解对方描述的架构和发现其中做得好或者做得不好的地方;其次,在指导其他同事的时候效果明显。原来对架构设计比较迷茫的同学,通过几次结合案例进行的方法论培训,都能够很快地掌握这套方法论并在实践中应用。甚至有很多其他业务线的同学,遇到架构设计的困惑,也来找我交流和指导。
二、心得
1、收获
- 清楚地理解架构设计相关的概念、本质、目的,避免架构师在实践过程中把握不住重点、分不清主次,眉毛胡子一把抓,导致架构设计变形或者“四不像” 。
- 掌握通用的架构设计原则,无论是何种业务或技术,架构师在判断和选择的时候有一套方法论可以参考,避免架构设计举棋不定,或者拍脑袋式设计。
- 掌握标准的架构设计流程,即使是刚开始做架构设计的新手,也能够按照步骤一步一步设计出合适的架构,避免某些步骤缺失导致错误的架构设计。
- 深入理解已有的架构模式,做到能够根据架构特点快速挑选合适的模式完成架构设计,或者在已有的模式上进行创新,或者将已有的模式组合出新的架构。
- 掌握架构演进和开源系统使用的一些技巧。
2、课后提问
问题:
构能力的获得是非常依赖于工作环境的,而大部分研发人员并没有这样的环境,所以很多经验和心得很容易沦为纸上谈兵,想问问老师怎么看待这个问题?
答案:
任何能力的提升都离不开知行合一,架构设计也不例外。架构设计的行可以有多重方式:亲自负责一个系统的架构设计,这种机会最锻炼人,但不可能一个工程师从来没做过架构设计然后某天突然被委以重任,必须要先有一定的积累才会有这样的机会;第二种是参与某个系统的架构设计,在总架构师的指导下,负责其中一部分的设计;第三种就是在设计好的架构下进行开发,虽然没有亲自参与架构设计,但如果能理解和看懂架构设计,对开发本身也很有帮助,如果能看出和分析出架构存在的问题,那就是一个展现自己的机会。
因此,在没有进行架构设计的时候要做好“知”的储备,并尝试运用这些知识技能去分析和研究已有系统的架构,通过这种方式逐步积累和提升,等到真正有机会的时候,能够做到快速开始,快速把握机会,然后在实践中逐步提升自己的能力。