Scott Guthrie谈架构师摘录

原文URL:http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/bb266332.mspx?mfr=true

RJ:我们和许多对结构体系感兴趣的人都交谈过。好像几乎没有人是只做些设计而根本不编写代码的纯粹的架构师。多数人都是多面手:他们有时参与开发,有时进行架构设计。对于一直在做开发但打算更多进行架构方面构思的人,您有什么建议?

SG:编写代码对于架构师而言是非常重要的。你不一定要签入生产代码,但要不断尝试新技术、新方法,并体会系统的工作方式。最近我并没有编写大量的生产代码,但我每天要花一或两小时编写代码。可以是示例、原型或一些有趣的私人项目;无论什么,我都要进行尝试,思考事物的构建方式。从代码架构师的角度来说,动手实验非常重要。

我的另一条建议是要研究核心系统理论,探索如何架构高度可靠的系统。想一下你要考虑的一些原则,并应用到实际工作中。这并不是说要考虑具体的代码内容,而是思考简易性、可靠性或容错性。这些因素在成功的系统中起着核心作用;无论是客户端应用程序、服务器应用程序还是游戏程序,都是如此。一个认真考虑这些原则并配以良好编码背景的架构师可以在很大程度上给团队以指导。

这些原则并不是要探索出一个向导或是开发不错的新东西,而是要研究 Windows Unix 应用程序中进程地址空间的工作方式。什么是线程技术?如何深刻理解它在多处理器或多核系统上的工作?要消化吸收这种类型的知识、考虑由此衍生的结果,花些时间专门研究未来的趋势(即从硬件和软件角度研究技术未来的走向),并考虑如何进行修改并为我所用。这就是我的建议。

RJMicrosoft 有开发人员、项目经理和架构师。人们通常对架构师这一角色充满好奇。您希望架构师在团队中发挥怎样的作用?

SG:我们希望或期待架构师能够在团队中担负起几个责任。一是我刚刚谈到的,要在体系结构、开发和软件原理方面拥有非常深厚和坚实的背景。我们希望这样的背景会将一些有用的东西逐步渗透,给其他团队成员带来潜移默化的影响。尤其是在指导年轻和资深的开发人员时,走廊里的对话或者办公室中的闲谈都可以给团队以很大程度的指导。

我们希望架构师能够从技术角度为产品的未来铺平道路。架构师通常要做一些更高级的原型构建工作并研究产品的开发方向。我们希望他们就研发方向提出建议,就实现而言,要求他们既要探索下一代产品,又要着眼于当前产品,以发现我们应进一步改进的地方。例如,我们应该将哪些地方的分解略加调整?我们需要在代码库中做些什么来进行改进?

RJ:除了深厚、坚实的技术技能外,您认为一个成功的架构师还应具备哪些品质?

SG:至少在 Microsoft,对于那些想要在架构领域有所建树的具有深厚背景的技术人员来说,最难的是要保证将自己的技术技能与公司团队内部和团队之间的协调工作能力相结合。

一些软技能更难培养,这就意味着架构师需要动手实践,但还要注意不要危及开发人员或其他团队。他们也应当避免这是我的,那是你的这样的对话。架构师必须能够自如地跨多个团队开展工作。他们在工作时注意不要给人留下这样的印象:那就是架构师只是暂时投身于最有趣的问题,然后在遇到难题时便会抽身而去。其他团队成员必须相信架构师是忠于团队的,与团队之间保持长期的合作关系,会对问题的解决有所贡献。这些是架构师需要培养的技能。具有最强影响力的资深架构师能够将深厚的技术和设计技能与人际交往技能和协作能力结合在一起。

RJ:许多人都在说,如今社会变化的速度越来越快,新生事物无时无刻不在涌现。您也提到过跟上发展的脚步是何等重要,但是每天的时间是有限的。您是如何跟上发展的脚步的呢?

SG:这很困难,在开发领域更是如此。就日新月异的创新步伐和信息流动的速度而言,我实在想不出有哪个时代会像现在这样快。回想 90 年代的 Internet 大战,Internet Explorer Netscape 的竞争硝烟四起。那个时候,我们好像不断地在发布新的产品,又总会有新的东西涌现。

从开发的角度讲,我想我们现在所处阶段的发展速度比那个时候更快。要跟上时代的脚步当然十分困难。你必须找时间去不断充电。你必须腾出时间专门关注业界的动态。我想就这点而言博客是一个很好的机制。我订阅了 Bloglines,这是一项不错的免费服务。我大概订阅了 300 400 个博客,我尽量每天早晚花 20 30 分钟阅读所有人的帖子。这样可以很好地了解当今的热门话题和有趣的想法。

在某种程度上,为了跟上发展的脚步,还要每天花一小时专门构建原型,用自己的产品或其他技术来进行各种尝试;充分掌握现有的组件并知道如何使用它们。在研究任何新技术、API、方法或编程手段时,还有一项重要的工作,那就是不仅要仔细研究有趣的事物本身,而且还要尽量推演出其有用的原则,以便你能够在别处加以应用。因此,如果你研究的是一本有关 Java 重构的书,很好。书中会讲到许多具体的 Java 重构技术,但有哪些更为广义的重构概念是你能够消化理解并应用于 VB C# 的?如果是针对某项专门任务的非常理想的 AJAX JavaScript 框架,也很好。现在,回想一下,尽量找出它的哪个方面可以应用于其他 JavaScript 框架。架构师应当善于研究某些事物并推演事物本身及其中蕴涵的有趣方面,而不是仅仅关注于某个个别的技术元素。

转载于:https://www.cnblogs.com/jacktang/articles/1677406.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值