架构师成长历程:时刻对新技术保持敏感
架构师是一门建立在科学,工程基础之上的艺术,一个充满魅力,极其有趣的工作;给人带来了一种不被束缚,不按别人的思路走,自由描绘无限风景的期盼。那么程序员应如何成为一名合格的架构师?如何加强自己的技能修养?架构师在公司主要负责什么?等等,记者带着网友的一系列问题专访了当当网技术部高级总监。
AD:2013云计算架构师峰会精彩课程曝光
架构师是一门建立在科学,工程基础之上的艺术,一个充满魅力,极其有趣的工作;给人带来了一种不被束缚,不按别人的思路走,自由描绘无限风景的期盼。那么程序员应如何成为一名合格的架构师?如何加强自己的技能修养?架构师在公司主要负责什么?等等,记者带着网友的一系列问题专访了当当网技术部高级总监。曾历任开发工程师、高级工程师、架构师、高级总监。
傅强,当当网技术部高级总监,2006年硕士毕业于北京航空航天大学计算机学院,应届毕业加入当当网。历任开发工程师、高级工程师、架构师、高级总监;目前负责搜索、推荐与数据挖掘、个性化营销、广告联盟、用户行为分析、大数据技术解决方案。
以下回答基本以在当当网的工作为背景。
51CTO:首先请您介绍一下自己的您的专长和目前的一些研究领域。
傅强:06年-10年,专注于站内搜索。目前再次负责搜索这块业务;
07年至今,专注于通过数据挖掘、统计分析等手段,开发B2C网站个性化推荐、个性化营销系统;
09年至今,专注于利用大数据处理能力,解决用户行为分析;
11年至今,以用户行为分析为核心的Anti-Fraud。
51CTO:一开始您是因为什么开始对IT行业感兴趣的?又是因为什么开始程序员的生活?
傅强:我的本科、硕士都是计算机专业,至少毕业时也没想到离开IT行业。
跟大多数程序员一样,我在研究生期间最早开始程序员生活,虽然是实习生;毕业后若干年,一直对编程保持激情;至今仍然以“高级工程师”或“架构师”称号为荣。
51CTO:对于任何一个软件开发人员来说,架构师都是一个令人向往的角色。可以介绍一下您从程序员到架构师的过程中的一些经历吗?
傅强:
举个例子吧:
我在重构升级站内搜索服务时,首先,我对紧紧围绕公司搜索业务做了总结,对2年内业务对搜索排序、性能等提出的种种需求做提炼—搜索大部分问题在于不同品类搜索排序效果相差较大,对出现过的技术问题做总结—搜索的大部分投诉在于搜索结果中数据信息与网站单品详情页的信息不同步,即数据更新问题,对未来2-3年搜索业务的趋势做了分析—搜索流量支持10-20倍即可、搜索模型中点击负反馈信息量需要深度挖掘、大内存SSD磁盘的服务器越来越便宜等等,基于以上分析和总结,为新版搜索设计出更加合理的架构。
第二,对我本人之前几年在搜索方面积累的大量关键代码做重构,拆分若干功能独立的子模块作为搜索的基础类库。这让其他新加入搜索团队的成员上手快了很多,工作效率和产出提高很大。再加上我手把手细心地带新人,半年至1年,其中勤奋的程序员的开发效率基本与我本人的开发效率相差不大了。这相当于复制出若干我自己。这样我自己不但带新人的能力有所提高,而且也在团队中建立了技术影响力。
第三,为搜索团队制定出代码规范、SVN代码存储规范、测试流程规范、上线流程,并在坚持检查这些规范的执行程度。一段时间之后,团队在这些方面逐渐做的井井有条,从小作坊变成正规军。有了流程的保证,程序的质量也得到的保证。
以上是我从程序员成长为架构师时一次重要的关键点,供参考。
51CTO:程序员要成为一名架构师发展,需要进一步加强技能的修养。在您的研究领域上,您是如何加强技能修养的?
傅强:
几个必要的要素:
思考问题的角度尽量站的高一点、再高一点,从分解公司战略层面开始入手做架构设计
对业务的深刻理解,才能做好业务架构
理论学习&技术实践,什么时候都不能丢掉,这是技术架构的基础,重要性不赘述
同行业交流
时时对新技术保持敏感
51CTO:个人觉得成为一名架构师仅仅通过理论学习是不行的,那么您的一个自我培养的过程是怎样的?也就是说从程序员到高级程序员再到设计师的整个过程如何去完成?
傅强:
技术方面:
从最基础的开发做起
逐步提高解决高难度技术的能力
不断重构代码、不断优化代码,每次重构都是一次思考
业务方面:
从理解现有业务做起
从成为小领域业务专家,扩展到更多领域的业务专家
在每次重构底层代码时,更在不断思考业务架构重构与优化
做到以上,大约是个高级程序员或准架构师水平。
架构师的核心竞争力:
有独立思考、价值判定,建立在对行业、对公司战略和目标的深刻理解之上
很强的语言翻译能力,能跟产品经理讲明白技术,能把产品理念翻译成架构和可执行代码
影响力
51CTO:您在团队中时如何开展架构师相关的设计工作?
傅强:
以公司战略在技术方面的分解为指导思想:
为团队设定技术规范、代码规范、文档规范
为开发团队、以及相关产品团队、测试团队、运维团队,规定流程和标准
为开发团队抽象、提炼、储备和推广通用代码类库、常用业务代码类库
根据实际操作情况,对以上内容不断优化和调整
51CTO:您觉得作为一名架构师,最大的挑战是什么?如何去克服这些困难?
最大的挑战是架构的落地和执行,克服方法,无他法,唯有紧密贴近业务,如:公司战略需要半年内出某个新平台,力求速度、效率,作为竞争的重要利器这时架构设计最忌讳过度设计、过于理想化,建议走实用路线,不断迭代、不断重构,小快灵底做一次次升级架构,如:公司战略1年后重新规划ERP系统,为未来3-5年做准备这时架构设计当然需要尽量考虑周全,尽量留出足够的接口,保留灵活性扩展性。