独家专访Randy Shoup:架构师要学会权衡取舍(1) - 51CTO.COM

来源:百度文库 编辑:神马文学网 时间:2024/10/05 00:21:59

    【51CTO独家特稿】在软件行业中,架构师往往是从那些出色的程序员中蜕变而成。然而,出色的程序员都能成功的晋级为出色的架构师么?这是51CTO开发频道年终活动《架构师最怕程序员知道的十件事》的主旨。虽然并非每一个程序员都希望能成为一个架构师,但潜意识里他们是尊敬架构师的——而一个优秀的架构师往往在举手投足中显示出一个编程大师的风范。

    51CTO开发频道年终巨献:架构师最怕程序员知道的十件事

    为了深入的了解这些问题的答案,51CTO开发频道展开了对国内外几个著名架构师的一系列邮件访谈。本次访谈的对象是eBay的杰出架构师Randy Shoup先生。

    架构师个人简历

     
    eBay杰出架构师Randy Shoup

    Randy Shoup是eBay市场架构团队的杰出架构师(Distinguished Architect)。他从2004年开始成为eBay搜索基础设施的主要架构师。在eBay之前,他是Tumbleweed Communications的首席架构师,并在甲骨文以及Informatica公司担任数职。他是斯坦福大学的数学与计算机系以及政治科学系的本科毕业生。

    以下是此次访谈的具体内容。

    51CTO编辑:不同的企业和项目经理对架构师往往定义不完全相同。在您的团队中,对架构师是如何定义的?对于招聘的架构师会有怎样的技能要求?

    Randy Shoup:在eBay,一个架构师的任务就是设计一系列的技术方案,这些方案必须满足商业上的要求,同时还要能够维持高标准的功能,性能,可伸缩性,可管理性,安全性,以及可用性。一个架构师与开发团队、产品团队和运维团队通过紧密的合作来实现上述的这些目标。

    在产品团队开始酝酿一个新的主意的时候,架构师是产品团队第一个接触的人:架构师会帮助他们把可行性、技术需求以及权衡取舍等因素一一剖析清楚。一个架构师之后的工作可总结为以下几条:

    ◆设计整体的技术实现步骤

    ◆与开发团队一起,完成设计与实施的细节

    ◆与开发团队和运维团队一起,完成部署的过程

    ◆与运维团队一起,进行部署之后的维护和故障排除

    一个架构师设立好技术风向标,并确保整个项目的进展按照这些方向进行。一个架构师不爱下达命令,他往往通过影响力来领导团队。一个架构师考虑“大的”和“长期的”,并在各个因素之间做出权衡。

    由于eBay是一个大站,每一个架构师都要为这个站的不同方面负责。有些对垂直功能负责,如买、卖、搜索、付款等功能。有些对水平功能负责,如数据库、事件与消息系统、服务基础设施、展示框架等功能。

    我们在招聘架构师时有如下要求:

    ◆在设计与开发大型系统方面有10年以上做为开发者和技术管理者的经验

    ◆技术领导能力

    ◆出色的交流和处理人际关系的技能,尤其是向开发者和非开发者解释高级技术话题的能力

    ◆出色的分析和解决问题的能力

    ◆对我们的技术堆栈有相当程度的经验

    ◆对于商业需求和客户需求有着很强的理解能力,尤其是对权衡取舍方面有着出色的把控能力

    51CTO编辑:假设有三名优秀的程序员,A尤其擅长沟通与团队管理;B的编程功底深厚,且对新技术能快速掌握;C在逻辑思维和抽象能力方面表现优秀。您会重点培养哪位程序员成为架构师?

     

    • 腾讯首席架构师:互联网应用向移动终端..
    • 微软首席架构师:微软将大力推进网络战略
    • 企业架构师需要注意的五个重要趋势
    • 独家专访王翔:坚持不懈是架构师人生第..
    • 独家专访Fred George:架构师是使用代码..
    Randy Shoup:一个优秀的架构师需要同时兼有A,B和C的能力。我们希望我们招聘的架构师拥有以上所有这些能力,这也是为什么并非每一个顶级开发者都能够成为一个优秀架构师的原因:-)

     

    如果一定要排序,那么我会按照C、B、A的顺序。条理清晰的逻辑思维能力可能是一个架构师最重要的技能了,而我们往往发现拥有这种技能的人就像稀有动物那样难找。不过,这个能力仅仅在和大量的实际开发经验、丰富的理论背景和好的领导能力相结合的时候才能体现出它的价值。

    51CTO编辑:对于一个刚刚从程序员转型过来的架构师,通常有哪些问题是他最难把握的?

    Randy Shoup:做为一个从菜鸟成长起来的架构师,我还真记得几次挑战:

    ◆习惯了思考细小的方面:有时候,一个新手架构师很容易在具体的代码编写和实施上花费太多的精力。一个架构师最基本的职能是往广处思考,把系统看做一个完整的个体来思考,以维护并增强可伸缩性和可用性这些系统级的特性为目标。一个架构师不能将实施细节抛之脑后,但她最大的价值在更高的层次。

    ◆习惯了单独工作:有时候,一个新手架构师会觉得她的工作就是独自开发出一个项目的架构和设计,并将这一整个成品交给一个团队来完成实施的部分。不过据我所知,大多数成功的架构师都喜欢与其他团队成员一同完成架构和设计这一块的工作。这不仅对架构本身有利,而且会令实施过程进展的更加平滑。