我们是RSDE, RandD中的
外企风格之一就是众多用让人听起来摸不着头脑的缩写,请让我来解释一下我们的职衔。微软程序员的职衔是SDE,即软件开发工程师 (Software Design Engineer或者Software Development Engineer) 。创新工程组的大多数组员的职衔是RSDE (Research Software Development Engineer) 即隶属研究部门的软件开发工程师 。这个多出来“R”意味着我们的任务一部分需要做SDE的事情,写代码编程序,另一部分是和研究员们并肩工作,把概念和想法实现为原型系统和算法,并进一步帮助把研究成果转化为高质量的微软产品代码,这就是所谓的技术转移(Tech Transfer)。技术转移是我们组的主要任务之一,所以 TTG (Tech Transfer Group) 即“技术转化组”是我们使用时间最长的组名之一,即使目前仍然是是创新工程组的主要部分。
还有一个有趣的说法描述我们的工作:研发工作一般叫做RandD,“研”指的是研究部门(R, Research),“发”指的是产品开发部门(D, Development),而RSDE的位置就恰恰在那个“and”中,是连接研究和开发的纽带。
技术转移
每年都有不少研究技术从亚洲研究院的实验室进入到微软产品中,变成产品的某个功能(feature)。作为研究院的一员,我很骄傲的是,Windows XP、 Vista、 Office、Tablet PC (平板电脑)、Xbox、Windows Live、游戏、硬件等等微软产品中都有来自于北京海淀区知春路城铁边上的这个实验室的技术。其中研究员们的智慧是关键,其中创新工程组的RSDE们也是这些技术产品化的幕后英雄。很多年以前,人们把中关村叫成硅谷的时候,我眼中只是好多买电脑零配件的摊位,而现在的中关村才真正地有了一个IT技术的聚集地的模样。
技术转移是一个需要时间的过程,不是像同城速递那么快捷一个下午就到达目的地。很多大学的孵化中心就是一种类型的技术转移过程。这里说说微软研究院中一个典型的软件技术转移的过程:
1. 研究组选研究题目。这个题目可能是领域内长久的研究方向,希望可以得到某些突破,或者是来自与已有产品的问题。
2. 研究员深入分析问题,设计算法,构造原型系统,收集数据,选择算法,评估结果,不断迭代尝试。
3. 当原型系统显示有能力解决问题的时候,我们开始与相关产品部门接洽技术转移。研究部门有专人负责与产品组的信息沟通。同时我们也可以得到产品组对我们结果的反馈意见。
4. 当原型算法的质量到达相当不错的阶段,产品组看过后便有了更有明确的需求。RSDE开始和研究员成立一个临时的虚拟小组(virtual team,有别于平时的管理组)一起工作,进一步提升原型系统的设计和质量以达到产品组的要求,研究员、产品组的项目经理、开发工程师、测试工程师一起工作,最终把算法代码实现写入到产品组的代码中去。
5. 最终产品发布。到了这个时候,参与项目的人会得到一个石头或金属嵌玻璃的奖牌(Ship-it Award),上面写着“感谢xxx对xxxx产品做出的贡献——比尔?盖茨”。
这是一个相当明确的流程,而现实常常出乎意料,任何一步都不是那么简单,而是变数丛生、繁复无比。产品部门的要求来自与市场,通常期望值很高,可这时往往暴露了研究阶段成果的一个问题,那就是——研究成果和产品要求的差距。
不是所有的研究项目都会成功产品化,为了提高研究的效率,通常当一个算法解决了问题的主要方面就可以开始向产品部门推销了。当“买方”对算法结果基本认可并有意向集成之前,会提一系列的具体要求,希望算法可以达到产品标准。很典型的要求比如是否能够能否达到99%以上的正确率,融入产品已有架构的容易程度,算法复杂度、实现的速度、数据适应性、资源内存消耗、安全性、可靠性、等等。我们在这些方面有过不少坎坷。