加载中…
个人资料
郭昂9
郭昂9
  • 博客等级:
  • 博客积分:0
  • 博客访问:173,688
  • 关注人气:330
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在微软的日子(一) 激情的第一年

(2011-11-07 05:52:26)
标签:

杂谈

    曾几何时,能在微软工作是我的梦想。曾经,我以自己是个微软人而自豪。现在,微软只属于了我的回忆。有激情的,沮丧的,有过成功失败也有很多不得志,还有很多团队生活的友情温情。突然很想把自己这段经历记录下来,也算作对自己的一个总结。

 

    在拿到微软Offer的时候,并没有过任何项目组的分配,只是知道自己加入了微软亚洲工程院,等入职后才进行统一分配。我被分到了Adcenter组,做的是互联网广告相关的内容。当时介绍时,前辈说,我们虽然比Google起步晚,但微软历史上都能够后发制人。我也会和朋友介绍,我们是微软直接和Google竞争的部门,目标就是未来超过Google。

 

    Zhen是我第一个经理,我们之前在我组织的一次相机团购时认识,他也是我进微软的推荐人,他是一个技术非常强的大哥。我们在的这个团队叫CABE,由1dev lead, 5dev, 3test, 1pm组成。负责上下文广告的一个后台系统,目的是通过URL传来一个网址,进行抓取,并运行诸如分类、抽词等算法,将结果通过xml返回回去。

    我来时,这个系统正在重构,我的第一个项目,就是利用一个前辈写好的构架,搭建其中一个算法的服务。当时这个构架的代码异常的复杂,其中Queue的管理、性能优化、调度等用到了很多很深的技术,让我一下子对自己所做的工作感到无比的兴奋和骄傲。当时因为时间紧,系统复杂,调试难度很高,并且初来一切都不熟悉为了保证工期,当时一周(含一个周末),每天都工作到11点之后,终于在预定时间完成了工期。

    微软的项目开发管理很严格,在一个时间点(称作CC, code complete)后不能check in新feature,之后一个月是测试阶段,专门测试,fix bug,使用工具进行code剖析,以保证代码质量。每次check in都要有code review,大段代码上线都要team review。见识过前辈review后郁闷的场景,当我的代码第一次被review时,更是快要接近疯狂,无数的问题被发现被暴露。之后的测试期同样是各种各样bug飞过来,当然最多的是各种边界条件以及错误config的问题。还学到了很多很多的Debug技巧和经验。现在回想,这段时间,是我在微软中学到的非常非常珍贵的财富。

 

    第一个项目完后,我按照原定计划,参与一个网页分类引擎(CHE)的研究,我的角色是RSDE,介于研究与开发之间,与美国的一个Researcher(Vu)相配对,那边出主意,我们这边总共3个人配合进行实验。Taxonomy(分类结构)由美国方进行创建,数据对应ODP建立mapping进行获取。我们这边进行数据抓取,实验各种不同的分类算法,验证效果。

    我参与这个项目的第一天,就发现了代码一个性能缺陷,将predict的性能提高了50倍。此后想到了一个方法,能有效提高分类准确率,但是当时就被Vu给拍了回去,不过后来因为准确率有问题可能面临无法上线时,他又给提了出来,不过最后也没有被使用。由于Taxonomy毛病很多,数据也有严重问题,效果其实挺悲剧的,不过最后由于是最多人开发出来的,上头表示,一定要Release。

    此时团队也Reorg(重组)了,原来因为CHE用于 CABE,所以我在CABE team,后来由于属于Research项目被归于Research Team,我更改汇报关系给了Li。CHE终于要产品化了,然而相关3个RSDE每个人都想去做相关的产品,我当时找到了Li和Zhen,表示了非常强烈的意愿,最后,因为我相应经验最丰富选上了我。当时竞争出来的做产品,在强烈的压力下,我两天拼命加班完成了相应系统的产品化。此后,我又在组里连做了三个关于性能优化的报告,被周围定位成了Research组中特点偏开发一些的人。

 

    CHEv1上线后,其实只是在线上空跑,此后我们开始了CHEv2的研究。仍然是和美国那边Pair up的关系,美国的一个Taxonomist编辑Taxonomy,建立Mapping,收集数据,我们进行训练,统计以及反馈。同时Vu出想法,我们帮着实现。并帮着验证这边Vendor开发的Taxonomy管理工具(话说Vendor还是挺不靠谱的,每次拿来之后,我连点10下鼠标左键就会挂掉,连续七八次均是如此)。我们也在尝试一些自己的想法,试验各种参数以及分类器,尽量想办法让算法达到效果最优。

    在开发方面,CABE又重构了,架构产生了极大变化,我又给CHEv1搭了个壳。在CHEv2的开发中,我又在研究时即按照产品级代码在开发,将算法核心独立出来,通过不同的壳可以适应CABE的使用,以及研究以及一般使用。并且采用嵌入式模块搭配,可以在研究结果未确定时,仅通过Model文件的方式去启用不同的算法,保证研究尘埃落定的一瞬间,我们就能实现产品级Release。

 

    由于CHEv1过于原型,已经成熟了很多的CHEv2当然会毫无悬念的获得Release,虽然其有很多不成熟的地方,但并不阻碍其成为微软在线部门里面流传使用的最广的分类算法。但谁曾想,竟然成为了我在微软最后一个有价值的Release,此时距离我加入微软为一年零三个月,距离我离开微软两年零三个月。对于这一年虽然距今最远,但我的记忆仍然远比之后两年多的要清晰很多,也要美好很多。

 

    微软的生活是非常丰富多彩的,其采用Scrum的管理方式,每个Sprint(周期)结束后,都会利用工作时间大家一起玩半天。很多种饮料随便喝,每天下午3点还是水果时间。晚上大家下班都习惯不回家,工作之余在单位玩一会台球或者Xbox360。员工可以选择参加的培训很丰富。在希格码时中午经常有Brownbag,是其他部门或者美国的同事介绍他们的产品或技术,还有免费午餐提供。此外每年会有一次offsite,第一年去得是三亚,第二年去泰国,中间因为美国某个老大过来,还去了趟上海。

0

阅读 收藏 喜欢 打印举报/Report
前一篇:百变丽江
后一篇:随感
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有