【51CTO独家特稿】在过去的一周间,51CTO开发频道陆续对国内外数位软件架构师进行了邮件访谈,询问他们一个程序员要成长为一个架构师需要学习哪些知识和技能,在工作上需要注意哪些问题。其中,王翔先生提到坚持不懈是架构师人生第一课,Fred George先生描述了架构师应该是有艺术追求的使用代码作画的大师,而eBay的Randy Shoup先生则主要强调了架构师在项目需求、系统和团队之间进行权衡取舍的重要能力。
这一次,51CTO开发频道邀请到了一位有些特别的嘉宾。他的大学专业是生物,毕业后开始从事IT。技术起点是Oracle数据库,数年的工作经验也主要围绕Oracle数据库的管理与性能优化。而他同时又是个技术杂家,对Oracle/MySQL关系型数据库、Unix / Linux、网站架构 / 安全、用户体验、电子支付都有所涉及。活跃于各个技术社区,是国内IT业界最受欢迎的技术博主之一。自认为是个Evangelist(编者注:这个称号由于其文化背景和意境,在国外的很多IT从业者都很愿意使用这个称号。直译过来应为“技术布道者”)。
他就是支付宝的数据架构师冯大辉先生。
学习篇
数据架构师(DB Architect)主要是从数据库管理员(DBA)成长而来的,正如软件架构师原本都是程序员一样。数据库管理员的工作是数据库具体的维护工作,而架构师的工作则在一个更高的抽象层面上。因此大辉也曾说到,自己是从做一些比较“实”的维护工作的DBA转变到一个相对比较“虚”的DBA岗位上。当然这样的转变并不轻松,架构师必须要有看得更远、更全面的能力,成长的过程需要学习很多知识并积累经验。对于自己的学习经历,大辉在此次访谈中是这样总结的:
“学习主要是通过网络进行,比如仔细研读和架构有关的经典论文,订阅一些技术架构师的BLOG。当然,不可或缺的是线下、线上的积极交流,我自己也会写一些文章和大家分享,从分享中我也能再次学到很多。”
#T#听起来是一些挺平常的事情,但是如果你去大辉的博客(dbanotes.net),观看他几年间撰写的博文,看到他那个长长的网志关注列表,你会发现这是个绝佳的建议。互联网发展到今天的程度,像网志、社区这样的平台已经成为技术人自我提高的一个绝好的工具——而且几乎没有门槛。无论你是一个程序员还是DBA,维护一个技术博客,与其他博主互相交流,绝对会令你受益良多——无论你是否希望成为一个架构师。
不过另一方面,视野和经验的积累如果没有实际的业务是很难获得的。因此,如果你在一个公司平台环境之上,那么也要争取“有意识的开拓技术视野,深入理解公司业务”,因为这些也是不可或缺的。大辉介绍说,数据架构师这个岗位很少有公司设置,很多时候没有可供参考的案例,更多是摸索、琢磨。
能力篇
一个架构师有哪些必备的素质?在之前的访谈中,几位架构师谈到了在培养一位软件架构师时最看重其抽象思维的能力,因为这是架构师的工作中最需要的能力,往往也是很多程序员所不具备的。正如Randy Shoup所介绍的那样,像eBay这样的大型系统,从项目启动到最后的维护都有工作要做,但是第一步就是需要将整体需求抽象为垂直的买、卖、搜索、付款,还有水平的数据库、事件与消息系统、服务基础设施、展示框架等功能。而想法在落实的过程,也是对架构师抽象思维和逻辑思维能力的最大挑战。大辉分享自己数据架构师经历的挫折经验,大多都是在想法的落实过程中。他说,一个比较新而且“虚”的岗位,一般"落地"会遇到一些问题,需要自己去摸索。这是个很难做到的事情。
同时,大辉也谈了谈自己对架构师这个群体的整体感受。他觉得他认识的架构师有一个共同点,那就是都“具备出色的交流能力,能够推动大家就某些方向达成一致”。