Scott Guthrie 是微软开发事业部的总经理,有着丰富的从业经验。自 1997 年加入微软后,先后从事 IIS4 和 Windows NT Option Pack 的研究工作;随后他设计了最初代号为“XSP”的新服务器编程模型并构建出原型;在 1998 年他又和 Mark Anders 一起组建了一个新的团队,构建了最终被称为 ASP.NET 的框架;后来他还开发了很受欢迎的免费 ASP.NET 开发工具—— Web Matrix ,以及 Visual Web Developer 产品等。现在他领导负责构建 CLR、ASP.NET、WPF、“WPF/E”、Windows Forms、IIS 7.0、Commerce Server、.NET Compact Framework 以及 Visual Studio Web 和客户端开发工具的开发团队。《架构师杂志》的记者 Ron Jacobs 就职业生涯和体系结构等主题采访了 Scott 。
在软件从业人员中,很多人既喜欢编写代码,但又想在架构设计方面做些挑战,“鱼和熊掌”是否可以兼得?Scott 的建议是:
编写代码对于架构师而言是非常重要的。你不一定要真正参与到开发中,但你要不断尝试新技术、新方法,并体会系统的工作方式。最近我并没有编写大量的生产代码,但我每天要花一或两小时编写代码。可以是示例、原型或一些有趣的私人项目;无论什么,我都要进行尝试,思考事物的构建方式。从代码架构师的角度来说,动手实验非常重要。
除了自己动手编写代码,Scott 还强调了理论研究的重要性:
我的另一条建议是要研究核心系统理论,探索如何架构高度可靠的系统。想一下你要考虑的一些原则,并应用到实际工作中。这并不是说要考虑具体的代码内容,而是思考简易性、可靠性或容错性。这些因素在成功的系统中起着核心作用;无论是客户端应用程序、服务器应用程序还是游戏程序,都是如此。一个认真考虑这些原则并配以良好编码背景的架构师可以在很大程度上给团队以指导。
要成为一个好的软件开发团队的架构师,是不是只具备深厚、坚实的技术技能就可以了呢?Scott 可不这么认为:
架构师必须能够自如地跨多个团队开展工作。他们在工作时注意不要给人留下这样的印象:那就是架构师只是暂时投身于最有趣的问题,然后在遇到难题时便会抽身而去。其他团队成员必须相信架构师是忠于团队的,与团队之间保持长期的合作关系,会对问题的解决有所贡献。这些是架构师需要培养的技能。具有最强影响力的资深架构师能够将深厚的技术和设计技能与人际交往技能和协作能力结合在一起。
除了架构师需要具备什么样的素质,在这篇采访中,还提到了 Scott 是如何采用“敏捷”的方法开发 ASP 的,开发经历中较为遗憾的回忆等。采访的末尾还提到了这位微软的大牌架构师是如何跟踪最新的技术趋势的:
你必须腾出时间专门关注业界的动态。我想就这点而言博客是一个很好的机制。我订阅了 Bloglines ,这是一项不错的免费服务。我大概订阅了 300 或 400 个博客,我尽量每天早晚花 20 到 30 分钟阅读所有人的帖子。这样可以很好地了解当今的热门话题和有趣的想法。
评论