阅读笔记五——如何成为优秀架构师

第一、知识面要广

其实我认为做架构师的,从来都是CTO储备,因为需要涉及的能力太广。

做架构,其实最简单的理解就是一句话,就是在有各种限制的情况下想办法解决问题。

所谓的限制就是性能、稳定性、开发效率、可维护性等因素。

例如,百度贴吧这种应用场景,每天可能有几十亿次的访问,几千万甚至上亿次的写入。肯定是性能要求为先,可能为了做性能的提升牺牲一部分开发的效率。

再如,银行的应用场景,不是非常在意用户的体验和访问延迟,但是对于数据的安全性和一致性非常非常重视。这种时候,肯定是安全和稳定优先,性能后面考虑。

在限制中做权衡,也就是意味着要做大量的选择。但做选择那首先你得知道有哪些选择。

所谓的性能和安全,除了这几个字之外,具体的技术实施上,总得知道都有哪些方案吧。

1.例如java体系、php体系、c体系、还有python/nodejs/golang等,各自有各自的优势劣势,你总得有过相关开发经验才能做出正确的选择吧。道听途说是没有发言权的。

2.虽然现在数据库用的最多的是mysql,但是oracle/pgsql也都有其优势。

3.现在项目几乎没有不用到大数据的,那么大数据的算法至少得有些理解吧,大数据的平台得有些经验吧。

4.玩转整体项目还有许多许多的点,例如代码如何管理、上线部署,如何测试保证bug率,系统的监控,服务器部署,灰度发布等等。

不要听那些一提架构师就好像多么高大上,做的都是些设计师类似的工作,系统设计、软件设计等。那些都是人云亦云YY出来的。

没有哪个互联网公司让你去专门做设计,因为互联网公司领导们统统无一例外需要都是功能的实现,战略战术想法的实现。

所有的大型系统架构,全部都是基于面临的问题一步一步解决迭代出来的。没有场景会让人一步到位(甚至哪怕提前一段提前量)去设计一套牛逼系统的,因为世界变化太快,项目如果不赶紧实现,明天可能就挂了,哪有那些闲心去给未来几年做设计。

所以,做架构师最关键的是对整个项目的把控能力,可以让项目高效率的运转。

第二、卓越的代码能力

想要成为架构师,首先得是一个优秀的程序员。怎么样才算优秀的程序员呢?

光写代码不思考、不学习肯定是不行的。

最明确的,就是得深入掌握各类数据结构、各类设计模式、计算机网络、操作系统、各种常见的架构模式等。这些提的非常多,但是能做到深入理解的我感觉可能没几个人。

包括我自己,当年刚开始看设计模式的时候,1个多月就感觉已经全部理解了。但是之后每次或者复习的时候,或者看到写的非常好的代码的时候,重新去温故此方面的知识,都能感到有新的收获、都会有更深的领悟。

而且,理解也仅仅是开始。如何完完全全的融入自己的代码中,才是关键。

写代码经常也同样充斥着架构设计的感觉。其实我认为,程序员写代码叫编码或coding,而架构师写代码就叫架构设计。

因为两者写代码时考虑问题的角度完全不同。程序员可能更多考虑的是如何实现功能,而优秀的程序员才可能会考虑的例如性能、可读性、可维护性的问题。

而这些对于架构师来说则是必须考虑的,考虑的纬度经常还会更多一些。

所以,不要想着一步到位的跳过优秀程序员而直接成为架构师。不现实。

第三、对某些相关领域要有深度

刚才讲了技术的广度,但是如果什么都知道,但是什么也不善长,没有什么精通的。那依然只能做个程序员。

那么哪些领域算是关键的领域呢?

到此基本就由业务方向的不同而区分不同的架构师了。

例如金融领域的架构师,可能需要金融知识。

大数据领域,可能对hadoop/spark/hive之类的大数据领域知识要求深一些。

再如高并发领域,可能对整个系统的性能优化,分布式系统设计等更深入一些。

第四、要有技术洞见

这个技术洞见是借用《重新定义公司》里的词。换个易理解的词,就是技术上的远见卓识。

以事后诸葛亮的方式举几个例子:

1.当年的京东如果选用的不是windows平台,可能发展比现在好不少。

2.百度如果不是李XX的目光短浅,总是比市场慢几拍,现在也不致于被AT远远甩开。

这种事太多太多。

不要感觉好像很虚幻,如果你现在身为一个创业公司的架构师,你现在的一个貌似正确的决策可能直接导致未来公司的大量损失,甚至倒闭。

第五、管理能力

架构师少有不带项目、不带人的,所以管理能力肯定也是必须。

但管理能力是个很大的主题,这里就不多说了。

原文地址:https://www.cnblogs.com/cc-9878/p/11052961.html