查看原文
其他

观点|微软研究院的产业研究周期

2017-02-20 科研方法论 微软研究院AI头条




注:本文译自Microsoft Research and the industrial research cycle,点击文末的阅读原文或将网址复制至浏览器中打开即可查看。

https://www.microsoft.com/en-us/research/blog/microsoft-research-and-the-industrial-research-cycle/


作者:微软研究院软件工程研究(RiSE)组研究经理Thomas Ball


产业研究周期


大约14年前我升任经理时,曾经对微软研究院的新进员工这样说:

 

微软研究院不仅为你提供了如学术界一样充分探索和增进科学知识的自由,同时还有额外的要求,这就是将你的科学追求与公司的问题结合起来、致力推动微软的发展,这一要求也会随着你的年资增长而提高。

 

这个说法至今仍然是成立的;一如我17年前加入微软研究院时那样,这也反映了微软研究院在推进科学前沿研究的同时也要给公司带来正向推动的双重使命。



我借用“产业研究周期”模型来解释微软研究院的运作方式。研究人员可以自由地选择研究问题,并在各自学科(周期的左侧)探索,以推进科技的进步。同时,他们也有责任和机会在进行了充分探索的前提下将自己的注意力集中在他们认为可能对公司(周期右侧)产生影响的领域。在理想情况下,他们对科学研究问题的解决方案的探索最终会影响到公司的技术应用。他们从公司实践领域获得的经验不仅会用于验证科学知识,还会在下一阶段推动科学新方向的探索。一名研究人员在其职业生涯中将沿着这个周期做许多次往复。


长期影响


探索与专注很难兼顾,更难以俱佳!相反,人们需要在某些阶段进行探索,而在此后的多年间做到专注。

 

我借用“影响力”图来解释影响的不同形式。x轴表示科学影响的水平。y轴表示对微软影响的程度(参见上图)。个人影响以曲线之下的面积来表示。个人影响曲线的形状随着时间推移而变化,既取决于他在产业研究周期中所处的阶段,也取决于他在公司内的资历增长。

 

在探索阶段,个人影响曲线的形状一般是水平的,这是因为他的主要受众还局限于科学界。在专注阶段,个人曲线的形状通常是垂直的,并建立在先前探索阶段的基础之上。

 

随着个人在公司的年资增长,公司本身对于他专注于微软影响力的期望也在提高。另一方面,初级研究人员享有更多的探索自由。微软研究院新招聘的博士生仍有许多工作要做,才能在自己的领域建立起公认专家的声誉。虽然有些人可能确实在职业生涯的早期阶段就开始与产品团队互动,但我们并不要求初级研究人员直接着手为公司解决问题。

 

我们鼓励研究人员积极著述,但微软研究院并不强调发表数量。质量是我们的首要目标。


渠道与合作伙伴


微软研究院在科研上的投资可能不会立即对微软产生影响,但从长远来看将为公司培养新的力量/能力。我借用“长期作战”示意图来说明,要将科学结果转化为公司影响力离不开协调而长期的努力。


我用以下三个例子说明发挥影响力的路径,这需要与合作伙伴长期共事、建立关系和信任,以及通过解决问题的新方案来改变公司文化。


>>>>

自动的驱动程序检测和缺陷发现


1999年底,Sriram Rajamani和我在微软研究院创立SLAM项目,旨在探索自动发现设备驱动程序中代码缺陷的新方法。Windows驱动程序质量组终于在2002年成形时,Byron Cook、Jakob Lichtenberg和Vladimir Levin加入了团队,推出了一个基于SLAM引擎的静态驱动程序验证器(SDV)。SDV的第一个版本是在2004年与Windows一起交付的。在过去10年间,不同梯队的微软研究院研究人员与驱动程序质量团队密切合作,对SDV的底层分析引擎改进/迭代了三次。


相关论文:

SLAM2: static driver verification with under 4% false alarms (http://dl.acm.org/citation.cfm?id=1998508 )

The Yogi Project: Software Property Checking via Static Analysis and Testing(http://rd.springer.com/chapter/10.1007%2F978-3-642-00768-2_17)

Powering the static driver verifier using corral(http://dl.acm.org/citation.cfm?id=2635894)


>>>>

从实证软件工程到软件工程师工具


2004年,我聘请Nachi Nagappan进入微软研究院,在微软雷德蒙研究院带领实证软件工程(Empirical Software Engineering)研究。在5年时间内,Nachi及其同事Brendan Murphy、Jacek Czerwonka、Christian Bird和Thomas Zimmermann通过对产品版本历史、错误数据库和其他数据源的分析,研究了影响软件质量和开发人员生产力的关键问题。

 

为了将此类分析扩展到整个公司层面,Wolfram Schulte加入团队,并与Nachi、Brendan和Jacek一起创建了CODEMINE,这是一个用于收集和分析微软软件工程开发过程数据的数据分析平台。该项目于2009年前后启动(代号为SWEPT),并于2013年结束,它让我们得以深入了解微软各个产品组的软件工程开发问题。CODEMINE对于一个名为“软件工程师工具”的新团队的形成至关重要,而正是这个团队使公司转向了基于云的软件工程基础设施。


>>>>

计算机科学教育


此后,微软研究院于2011年启动了Touch Develop项目(www.touchdevelop.com),力求实现在智能手机上编写智能手机脚本。Touch Develop出乎人们意料的运用是在K-12计算机科学教育方面——教师们发现,孩子们痴迷于对他们的智能手机编程,使之能够响应环境刺激。



它演变成了一个与BBC合作的项目,旨在创建一款带有易用编程平台(基于Touch Develop)的小型物理计算设备。总计100万台上述设备(名为micro:bit)于2016年交付,足够让英国的五年级学生人手一台。正是由于BBC micro:bit的成功,微软目前正投资开发一个用于计算机科学教育的全新编程平台。

 

用团队影响力解决大问题


 今天,我们注意到有些公司正在开发超大型分布式系统。亚马逊、Facebook、谷歌和微软都已建立了这样的系统,并致力优化系统的性能、可靠性、可用性、安全性和隐私性。微软Azure就是一个这样的系统,能够提供计算、存储和网络服务,并且能够与越来越多的移动设备和物联网终端进行交互。

 

从硬件资产到底层操作系统代码再到面向用户的服务逐级优化,这是成功的关键所在,并为研究人员提供了跨越多个领域的机会,这些领域包括系统、正规方法、软件工程和编程语言等。

 


下面是RiSE组深入参与其中的四个与云计算相关的大规模新项目:

 

P语言正在改变着微软程序员承担构建大型异步系统任务的方式。P语言已经用于开发Windows中USB 3.0驱动程序以及微软Azure中的服务。

 

Everest项目(Project Everest)正在构建一个高性能、符合标准、经过验证的HTTPS完整生态系统实施,上到HTTPS API下至包括RSA和AES等在内的加密算法。

 

Parade项目(Project Parade)通过将运行时的依赖关系作为符号值来处理,实现了大量看似顺序性应用程序的并行化。这个项目的成果大幅度提升了目前流行的机器学习和大数据算法的性能。

 

Premonition项目旨在通过创建新技术,自主定位、收集和通过计算手段分析蚊子所携带的血源性病原体,在病原体爆发前检测到它们。


你想加入产业研究周期吗?


无论你处于探索阶段还是专注阶段,微软研究院都将带你走上令人兴奋的旅程。如果你有兴趣加入我们的旅程,请访问微软官网的求职页面。


英文网址>>https://www.microsoft.com/en-us/research/careers/

中文网址>>http://www.msra.cn/zh-cn/jobs/default.aspx 



你也许还想看:


 

科研方法论:

 


感谢你关注“微软研究院AI头条”,我们期待你的留言和投稿,共建交流平台。来稿请寄:msraai@microsoft.com。

微软小冰进驻微软研究院微信啦!快去主页和她聊聊天吧。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存