一个Bug引出七套不同解决方案的风波一个平凡的日子,开发工程师羿在办公室里埋头写代码,坐在身边的一位测试开发工程师突然发现在Mac操作系统上一个关于Silverlight的测试案例出错了。于是羿启动调试工具帮助查看,怀疑可能是在设计的时候没有考虑到的一个平台差异,就发了封电子邮件询问美国同事了解相关情况。结果,大家对如何解决这个Bug各执一词,提出了很多种不同的方案。羿回忆说“讨论到最后,解决方案是出台了,但是我们团队里的人合计了一下,发觉对一个Bug来说,该解决方案的测试成本偏高。于是大家一致同意在下一个版本的产品中把这个改进作为一个功能特性一起解决。”而对于已经造成的现状,由于只有公司内部的一些团队才会使用到相关功能特性、遇到这个问题,大家决定通过专门制作的一个小工具,帮助查找出有问题的代码进行相应的改进以避免问题产生。
于是,研发团队都将精力集中到如何在下一个版本的产品中解决这个问题的功能特性,并一共总结出了七套不同的方案,经过内部多次分析,选出一种方案并写出了设计提案和详细设计书。恰逢整个研发团队被空降到美国进行交流学习,使得有机会和美国那边的软件工程师及项目经理就这个问题进行面对面的深入交流。又是一番权衡和讨论之后,研发团队对这个方案进行了进一步修改,不仅能解决问题,还降低了开发测试的成本,从这个意义上来说,也就没有必要将它作为一个功能特性来对待了。
提出新测试解决方案,完成不可能完成的任务成就Silverlight 2 Beta 1新亮点Silverlight 1.0正式发布后,许多用户都表示希望Silverlight能在浏览器内运行Socket,于是产品组决定在新版本里加入对Socket的支持。当时离Silverlight 2 Beta 1的发布只有不到6周的时间,但这项工作对产品代码,测试案例和测试框架的移植工作量却非常大。开始时,测试组的计划是将全部的测试案例移植到浏览器里,并使用已有的Silverlight所支持的在浏览器内运行的测试框架。但通过对Socket 测试案例移植工作量的评估, 作为组里唯一的一名负责Socket测试的测试开发工程师,尧敏觉得如果移植全部的测试案例和一些相关的工具是不可能在6周内完成的,并且风险也比较高。
于是,尧敏向测试组建议在测试框架上面来修改,设计一个新的能在浏览器里面运行的测试框架,并提供和原来的测试框架完全一致并且兼容的接口。在与美国同事多次沟通后,双方均认同这是最有效而且成本比较低的方法。于是尧敏开始研究Silverlight已有的在浏览器内运行的测试框架,并多次与美国同事进行讨论,前后花了近3周时间终于完成了新的测试框架的预览版,在与Silverlight的现有测试平台集合后,原来所有的Socket测试案例都可以不经过任何修改就在浏览器里面正常运行,成功按时在Beta版里实现对浏览器内Socket的支持,而对Socket的支持也成为Silverlight 2 Beta 1的一个亮点。
研发团队的当地客户的关注除了在技术上为Siverlight的底层技术以及部分控件和网络支持做出贡献,在过去的一年中,研发团队还积极参与Silverlight在中国的推广,直接了解本地客户的产品使用情景、习惯、技能和困难,并通过各种途径与其他Silverlight研发团队分享,促进产品创新和改进以提高中国客户对新产品的理解和应用体验。例如,开设Silverlight中文技术博客——Sliverlight中国开发团队 – 点亮网络,点亮生活;在MSDN 主持中文Webcast;在Siverlight 中文技术论坛上回答问题; 为在线媒体和广告设计公司的开发和设计人员的“Silverlight体验周”提供技术支持等等,让更多的中国网络开发、设计人员和网络开发爱好者尽快了解Silverlight技术。

附件:
您所在的用户组无法下载或查看附件Silverlight体验周Silverlight中国研发团队就是这样一个可爱的大家庭,虽时常会出现技术上的分歧和激烈讨论但大家都彼此信任、目标一致,互相理解和帮助,虽研发任务繁重但却一直在快乐的寻找着工作和生活的最佳平衡点,伴随着不断克服各种困难和紧急情况后的成功喜悦,每天也都会面临着新的任务和挑战,他们一直在努力前进着。在采访过程中,记者也深切体会到了这个大家庭成员的热情和积极。
前不久,Silverlight中国研发团队前往美国总部,对将来的工作方向进行了探讨。在今后的几个月中中国研发团队会加强对CLR(Common Language Runtime, 公共语言运行时)的研发力度。除了继续在Silverlight底层.NET技术相关领域进行研发外,Silverlight中国研发团队还会继续对CLR Interop(托管代码和非托管代码之间的互操作性)方面进行改进以及新功能的研发。CSDN也会对微软中国研发集团的研发故事进行持续报道。