——专访Windows HPC Server 架构师徐明强

Windows HPC Server架构师徐明强

文 / 白苗

若是说起架构师,几乎所有的开发人员都知道的一个伟大架构师来自微软,他就是比尔•盖。这个20世纪最伟大的技术天才有太多的传奇。对于架构师这个群体,他同样产生了非同小可的作用。作为一个企业的大老板,他是第一个给自己冠之以“首席架构师”头衔的人。也正因如此,整个IT领域才开始不断涌现出架构师这个并不算新的职业。为了追寻微软的架构师文化,我们采访了微Windows HPC Server架构师徐明强博士,邀请他为我们解密微软的架构师之路。

微软架构师定义

对微软内部的架构师的定义,Windows HPC Server架构师徐明强博士是这么描述的:“微架构师的职责定义主要在两个方面。一是要负责整个项目中技术活动和工程过程,进行领导和协调。二是要负责理解系统本身的业务需求,并且创建合理完善的一个系统体系架构。进一步的细化则可以展开来谈。”

“通常架构师要确立每一个构架视图的整体架构,比如说视图的详细结构、元素的分组以及实现主要分组之间的接口描述。因此和其他角色对比,架构设计师的见解是用在广度,不是在深度,这样才能确保架构师在技术活动中起到领导的作用。第二方面,对于业务需求来说,架构师要负责通过软件架构来决定主要的技术选型。典型的工作包括系统需求设计,实现和部署的视图以及测试等等。”

三种架构师

这种通用的解释如果难于理解,那么是不是会有更具体的实施方法?像微软这样庞大的软件开发组织结构里,架构师会根据产品团队,工作职能进行进一步划分。随后,徐明强开始介绍微软架构师的分类。

“如果要理解微软的架构师职能划分,就需要先了解微软的产品部门划分。通常在微软内部的产品组,有三个更小一级的分组,一是项目经理组,二是开发组,三则是测试组。”

“项目经理组主要是负责业务的需求定义,产品规格书撰写。而开发组则主要负责软件的实现,以满足项目经理所定义的需求规格书。测试团队的主要任务则是确保软件产品交付的质量。不同的分组,有不同的职能划分。因此,我们看做是有项目经理架构师,开发架构师和测试架构师几种基本类型。”

“不同的架构师职能大相径庭,比如项目经理架构师,更侧重于业务上的需要。从这个意义上看,你就会发现不同架构师的区别。由于项目经理主要是看用户的需求,对整个系统性能提出要求,对工作品质提出要求,同时还要确认在用户应用场景,产品是否可以有效地被系统支撑,因此它具备了非常不同的职能。”

“而开发组的架构师比较侧重于技术,尽管某些问题上会与项目经理架构师重叠,但更多时候分工还是非常明确的。技术架构师的一大职能是技术选型,比如在产品中选择使用什么技术,比如数据库要采用哪种规格的SQL server, 比如数据库的模式(schema)应该怎么样设计。当然,这里也包括.NET组件的选择等,这些是开发组架构师所关注的。

“从测试方面看,测试架构师则关注测试系统对架构的设计的帮助,包括如何自动化测试,或更有效的手工测试等。比如说HPC Server 测试组的架构师的工作,由于涉及到很复杂的分布式的系统,就需要做可扩展性测试,计算资源分配的测试,包括测试方法的设计等。”

协同工作,准确分工

这么多不同的架构师,如何协调工作,这是很多人马上会想到的问题。尤其是在面临冲突的时候如何解决,关系到每一项工作是否能顺利推进。关于这个问题,徐博士给我们举了个例子。

“比如我负责HPC Server 产品的规格说明书,那么开发组就会强调是否有充裕时间实现各个组件,而测试组将会根据规格说明书来考虑,这个组件所实现的功能是否严格满足规格要求。开发组会有很好的意愿来完成产品开发,但如何衡量是否完成却是一个问题。从我们的角度看,首先就是应用的场景。例如在一份需求说明文档中,如果你能描述为什么有这个需求,且写得非常清楚,那么开发就能准确地知道他们需要做的工作是什么。如果有一套非常清楚的目录,告诉用户如何使用产品,那么当这个系统做出来以后,每一步都应该考虑到用户在每一个阶段有什么样的知识背景能够完成下去。只要应用场景的故事清楚,文档自然也能够清楚。”

“当然,不同的工作也会有不同的优先级。这同样是项目经理架构师需要定义清楚的。技术架构师的主要精力,会放在具体选择哪个组件实现。这对于技术架构师来说,是非常有把握的。因此我们可以看到,产品需求定义得越细、需求的优先级定义得越好,说明项目经理架构师很好地完成了自己的工作,对于开发架构师的衡量,则是采用什么技术以及何种组件/架构提高了开发效率。”

“另外一方面是测试,项目经理的架构师同样需要与测试架构师协同工作。功能的每一个方面在需求中表现得越细致,各方面的系统指标越清晰,就越可以帮助测试架构师更好地完成其工作。牵涉到可扩展性、可延时等细节性能的指标,是测试架构师的优势,他们知道怎样才能处理好这些事情,但它们希望看到明确的指标。”

团队成长

多数公司里,架构师都是宝贝。而很多程序员,也确实梦想自己能成为一名软件架构师。但架构师的数量总是有限,多少人可以成为架构师?架构师的团队是如何成长起来的?徐博士用亲身经历讲述了HPC团队的发展历程。

“根据产品开发周期,不同的团队会有不同的配置。我在HPC产品组经历了两个多,近三个版本,所以有一点体会。在HPC第一版的时候,基本上我们的产品会分三个主要的组件,每个主要组件会有一个小团队。当时包括作业调度系统、管理系统和消息传递界面(MPI),基本上每个组件都有一个架构师。尽管有的一开始没有架构师的头衔。 当时大概是一个架构师和三个开发人员和三个测试人员协同战。”

“主要原因在于项目一开始,团队并没有考虑如何定义架构,这里包括技术选型等,很多时候架构师会考虑这些事情,此时不会严格按照前面说的不同角色分工。到了后期的版本,产品问世,用户需求喷涌而出的时候,项目管理架构师角色就开始明晰化了。尽管主要的工作是在第一个版本上增加功能,但各个部门都会开始聘用更多的开发人员和测试人员,同时管理人员也会增多。”

架构师的核心能力

为了让开发者逐渐成为架构师,基础的能力还是需要具备的。“我觉得架构师必须学会的第一件事情就懂得如何进行权衡。因为我们面对的都是相互矛盾的一些设计要素和限制,但事实却要求你在这些相互矛盾的要素限制和约束条件之间取得非常巧妙的平衡。”徐博士感叹道。

“架构师必须足够成熟。因为他们往往需要在无法获得完整信息的情况下,迅速领会问题,根据经验做出审慎判断。其实微软内部有能力要求,能把一张比较模糊的图片清晰化。这里我想归纳四个方面。首先是在专题领域的经验和对微软软件开发工程的经验。第二个就是判断力、决定能力和领导力,推动各个团队的技术进展,并且能在压力下作出关键性的决策,然后将开发贯彻到底,而且要提高效率。架构师有权在技术上作出决定,在大家意见不一致的时候,他要能给出自己的一个意见。第三则是善于沟通。这其中首先就是赢得他人的信任。只有这样,才可以对他们进行说服,而后进行指导。微软架构师跟其他的合作的人没有直接的上下级关系,所以不能靠命令进行指导,所以必须要靠赢得其他人的赞同。第四点,是通常说的抽象思维和分析的能力。具体思维的人可能比较注重细节,但往往也会将问题复杂化,使头绪增多而无法收敛。 抽象思维可以帮架构师地从大量信息、系统文件中,看出一些规律来,而且找出与之相关的方面,归纳关键问题,表述模糊的概念并将其变成相关各方能够理解的项目构件。”

“最后,我认为无论是什么样的架构师都要具备一定的商业头脑,业务的知识要充分把握,因为对业务把握能够带来一个拥抱变化的能力,而且可以在设计的时候留出一点扩展的余地,适应将来可能来临的需求变化。”

【转】解密微软的架构师之路相关推荐

  1. python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议

    一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...

  2. 架构师之路---面向过程和面向对象 王泽宾

    1.引言    机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训 ...

  3. 通往测试架构师之路(1):那些家伙在干什么?

    Omomo在公司呆了有几个年头了.在测试技术方面的技能长进了不少,又能享受写代码的乐趣,同事们经常交流对软件测试技术的见解,也在项目中实现一些创新的测试技术和基于自己的想法设计好的测试框架,每天过的很 ...

  4. 全栈工程师通网架构师之路

    首先我们看什么是架构师?架构师应该具备哪些能力? 大家都知道很多公司都有架构师这个职位,但是我想告诉大家的是看一个人是不是架构师不是看职位,而是看他所具备的能力以及正在做的事,所以有架构师头衔的人不一 ...

  5. 架构师之路-写的不错

    架构师之路 转:http://www.uml.org.cn/zjjs/200903273.asp 1.引言 机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用 ...

  6. 一名作曲专业毕业生的安全架构师之路

    通往安全架构师的路有很多条,但首先对IT基础设施和数据保护的激情,是这条道路的必备动力之一. 安全架构师是负责维护企业计算机系统安全的人,因此还必须具备黑客思维,能够预测攻击者非授权访问公司系统会采用 ...

  7. 微软发布架构师期刊阅读器

    微软发布架构师期刊阅读器 转载:http://www.infoq.com/cn/news/2007/11/aj-reader 作者 Hartmut Wilms译者 胡键 发布于 2007年11月29日 ...

  8. 开始Go开发之旅-Golang架构师之路系列实战

    2019独角兽企业重金招聘Python工程师标准>>> 作者: gomaster.me(冯琪超) 系列:Golang架构师之路 巧妇难做无米之炊,golang sdk就是gopher ...

  9. 架构师之路 扩充字段_扩大您作为设计师的业务影响力的四个基础

    架构师之路 扩充字段 While catching up with my designer friends during these days of quarantine, a common topi ...

  10. 架构师之路:从码农到架构师你差了哪些

    转载自   架构师之路:从码农到架构师你差了哪些 Web应用,最常见的研发语言是Java和PHP. 后端服务,最常见的研发语言是Java和C/C++. 大数据,最常见的研发语言是Java和Python ...

最新文章

  1. 汉化 Hirens.BootCD 中的 XP 系统
  2. 最好用浏览器_魔镜魔镜,请你告诉我谁是Mac上最好用的浏览器?--全网最好用的12个功能让你玩转Safari...
  3. rest_快速检查REST API是否有效的方法-从清单文件中获取详细信息
  4. 信息系统项目管理师:第8章:项目质量管理-章节真题+解析
  5. 矩形法求定积分的原理和实现
  6. leetcode 62. 不同路径(dp)
  7. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(2)(第四章:变量、作用域与内存)
  8. 复联4里用到的方法论
  9. 谈谈你对oracle,对Oracle的优化
  10. Vaughn Vernon谈云原生和反应式现状
  11. 深度学习2.0-23.Keras高层接口之CIFAR10自定义网络实战
  12. OpenCV --- 实现两幅图像并排合并(ROI)
  13. IDEA使用Tomcat部署项目
  14. matlab自由曲面体积,一种基于自由曲面的LED准直透镜设计
  15. python 3d重建_python三维重建
  16. golang对比python
  17. 代码设置margintop_如何通过代码设置TextView的Margin参数?
  18. mui ajax 下拉,mui下拉菜单
  19. 基于华为高端NAS存储双活的POC测试
  20. VBS 从Excel中获取数据,批量替换word中的文字

热门文章

  1. Python3按编号创建文件夹并在文件夹下创建对应编号的txt文件
  2. NYOJ--102--次方求模
  3. [swift 进阶]读书笔记-C2P3_Set、 C2P4_Range
  4. Netty 核心组件 Pipeline 源码分析(二)一个请求的 pipeline 之旅
  5. apache网络服务的搭建和配置
  6. Linux C语言解析并显示.bmp格式图片
  7. 关于CreateWindowEx及自己封装Window类
  8. 损坏的OCR文件恢复的方法
  9. 构建samba文件共享服务器
  10. Site-Site Ipsec ×××配置和验证