如何成为python架构师_怎样努力才能才为一个优秀的架构师?

我不想去抄各个教程书籍里面的大堆定义,因为以我的体验来说,基本没什么用,例如什么系统架构师,什么需求分析师,什么模块、组件、接口等等,都是政治正确的废话。

都正确,但是看了也白看,完全没有帮助。

所以,我基于我的经验给些建议吧。第一、知识面要广

其实我认为做架构师的,从来都是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远远甩开。

这种事太多太多。

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

第五、管理能力

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

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

回头看看,其实我写的也都是些方向性的东西。

但是由于架构师职业的特殊性,真的很难给出一条具体的道路,只要按照这个道路走下去就能成为优秀的架构师。

但有些原则性的方法还是有的:

我说过,作为架构师,其实所谓的设计能力并非关键,因为一个项目完全凭空设计的机会很少,而且也都可以基于当时情况的权衡,直接使用别人们的设计方案的组合。

这就是为什么看架构师相关的帖子看多了,就会发现所谓的分布式架构、大型网站架构,基本来来回回就那么几种。导致是个人出来都能喊两句架构怎样怎样。

那么关键的是什么?是项目的把控能力,以及面对具体问题的解决能力。

而要锻炼项目的把控能力和解决一些具体问题的能力,有时候光靠公司里的项目是不够的。

因为公司项目中你往往只是其中的一员,只是干某个具体的工作,例如前端js、app、后端业务等。项目整体的运转情况你一般是了解不到的。即使运气好,项目负责人对此的把控很到位,而且还愿意全部讲解给你听,但毕竟很多环境你没动手做出,光凭别人说是不大可能有深刻的理解的。

那怎么办?你应该自己抽空全新做一个自己的项目,例如一个BBS网站、一个有后台的app等。网站或app本身不重要,重要是你要自己开发、自己搞定上线系统、搞定监控系统、搞定发布系统、搞定测试系统等等。

就是像一个正式公司的正式产品一样对待这个自己的项目。

这样几个回合下来之后,你就会发现,你对整个项目的感知度提高极大。不再像以前那样,对项目除了自己负责的部分,其它都是迷迷糊糊的。

这些就是我多年架构经验的一些总结。谢谢。

提升实力从点赞开始。

你可能感兴趣的:(如何成为python架构师)