我已经从业十载,我大学毕业后,做过不少岗位,不过主要混迹于互联网行业。当过主管、部门经理、项目经理、架构师。但我的众多工作中,没有一项头衔是程序员,和老赵的“我是一名光荣的程序员”比起来,真是汗颜……
现在,我是一名架构师,将来的工作还是一名架构师,因为我目前还是一名技术狂热者。接着我就讲一下,真正的架构师需要具备哪些基本素质。
1、沟通能力,其实我觉得这是最重要的,一名合格的架构师是需要向所有的人表达出自己的思想、不论设计思想、编码思想、还是设想或假设,都需要沟通、用嘴巴去讲,如果没有沟通能力,那么充其量只能算个程序员。
2、善于分享。为什么我把这个放第二位,因为架构师这个岗位可以说是一个很闲的岗位,平时没人会打搅你,你有整片的时间去做事,但也可能碰到生产环境出现紧急问题,如果只有你一个人,你怎么匆容地去处理所有事呢?所以你必须将你的技能传授给可以信任的人,那么你就不会成为瓶颈。
3、很强的自学能力。一个架构师必须有很强的学习能力,这样才能在最短的时间内掌握更多的技术,才能更好的运用你的技术去解决问题。
4、快速解决问题的能力。这点不用说了,如果没有快速解决问题的能力,将不会得到领导的信任,这样也干不好事。
5、编码基础知识,我用的是.NET,我做了很多项目,在和高手沟通的时候才发现高手能够讲到本质,甚至能讲到内存是怎么处理的,争论到最后,我们还反编译.NET代码来分析,这使我发现我在基础知识并不扎实,所以我狂补基础知识。
6、网络知识,如果一个网站架构师不懂网络知识,那么他不能算是个合格的网站架构师,别以为知道TCP UDP这些知识就够了,当你查问题的时候,可能复杂到需要分析网络数据包才能查出问题。我是碰到好几次了。
7、各种协议知识,尤其是HTTP 1.1协议,别以为这些知识不重要,实际上有时候可以帮上很大的忙,比如Cookie是怎么传输数据的,比如分析Request,很能帮助我们设计方案,或者查出潜在的问题。
8、设计能力,这里的设计能力不仅仅是代码的设计能力,还包括网络拓扑的设计能力,只有这样才能设计出高性能的网站架构。
9、管理能力。可能有人会问,我又不是管理人员,需要管理能力吗?答案是肯定的,如果你有管理能力,那么Team的人员就会更相信你,更加支持你的工作。但记住一点,你只能是支持你的Leader工作,提建议,不得代为行使权力,当然,如果你的领导比较小气的除外。如果你的领导不够大度,那么建议你早点换工作吧。
10、数据库知识,如果你总是靠DBA,连索引都不知道,那么你是无法设计出高性能数据库的。
11、承压能力,架构师经常是在高压力条件下工作的,因此能够承受高压工作的,才能是合格的架构师。
12、勇于承担责任,只有勇于承担责任,才会勇于承认错误,架构师的经验是在不断总结中积累的,我现在所做的事,就是将我的知识做一个阶段性总结。勇于承担责任,别人更会把事情交给你,才会更信任你,才会真正和你做朋友,成为你的战友。
这片文章只是起个开头,我会把架构师的知识逐步整理、经验逐步分享,希望使更多的架构师们少走弯路,做的更好,同时也给自己一个警示,为自己未来的路照上一个明灯。我的文章将主要以ASP.NET(C#)为主,可能会有其他的内容,甚至可能有JAVA相关的内容。