31

微软工作这二年 - 周见智

 6 years ago
source link: http://www.cnblogs.com/xiaozhi_5638/p/8109517.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

微软工作这二年

16年元旦顶着大风来北京面试,一天6轮,在回去的高铁上感觉面试可能挂了,一个礼拜后收到了Offer。由于自身各方面的原因,18年元旦,选择离开微软。It is hard to say LEAVE, 这里整理了一下我在微软的两年经历,算是我这两年的总结。

104032-20171225150811353-538752400.png

我眼中的工作环境

我没在其他一线互联网公司呆过,我个人觉得微软(北京)的工作环境是相当不错的。公司大楼靠近北四环,丹棱街5号,周边街道基本不怎么堵车,地铁有四号线和十号线,开车的话直接走四环,到亚洲最大的居民区天通苑大约也就40来分钟。

上下班比较自由,公司没有这方面的考核制度。我一般早上11点到公司,晚上8点离开公司,如果有事就会更晚一点。有的同事下午需要早走,所以上午来得比较早,但是工作时间这些都没有明文规定,各人视情况而定。

平时如果有什么事情需要请假也比较简单,一般跟leader说一声就行,回头在系统里面补一下即可。每人每年有15天带薪年假,我觉得一般人基本用不完。如果半天的话,大部分都不需要在系统里申请,直接说一下即可。微软关于假期这方面的福利还是比较好的,每人还有3天志愿者假,15天病假,女同事120天产假,男同事有6周的陪产假,没错是陪产假,我前段时间刚修完42天的陪产假。

公司内部环境不错,比较空旷,各种小的focus room,meeting room,一周七天随时都有保洁在上班,至于免费的水果、饮料这些当然是必备的了,相信一般好点的公司都有这个福利。

我做过的项目

在微软呆两年,做过的东西不算少。如果让我给我做过的项目评一个分,10分制的话,大概在6分左右。我觉得我比较客观,不存在我在这里呆过所以吹嘘,也不存在我即将要离开了所以去故意抹黑。

刚进来的时候做过一段时间的UWP,具体是什么我就不说了。整个team都比较卖力,可能微软上层领导早已看透了一切,早已知道Windows 10 Mobile命数已尽,所以高层老大基本不重视这块的工作。要知道那还是16年初,微软还并没有官方宣布放弃Windows 10 Mobile。当时只有我们Manager支持以及他手下一帮子兄弟在埋头苦干,最终的结果大家都知道了,微软宣布停止更新Windows 10 Mobile。我不知道没有移动端这块,UWP存在还有什么价值,体验不如传统win32,又不能跨平台到Android和iOS。HoloLens、Hub和Xbox?这个用户能有多少?个人以为UWP的初衷是相当好的,只可惜微软并没有翻盘。

做了差不多四五个月的UWP,16年下半年开始接触Cortana的开发工作。Cortana是Windows 10默认自带的一款智能助手,不知道有多少人用过这个智能助手,认为她到底智不智能。Team大约花了4个月做了一个Vision的feature,大概就是让Cortana不仅能够说、听,还能够看,能够识别图片中的文字信息,自动为你设置提醒,为你安排会议,个人觉得这个feature还是非常实用的。可能你就要问了,这个东西看似很简单,为什么要花这么长时间,因为整个Cortana的代码结构超级复杂,前端涉及到Windows 10操作系统的Code,后台涉及到Bing的Code,你不花个把月根本不清楚你应该动哪块的东西。再加上Cortana整个项目的Owner在美国,你往里面check in一行Code,都得需要别人Review,跨国的开发工作效率尤其低下,这个后面我会说到。由于各种原因,最终这个feature并没有在RS3中对外开放。听说RS4会上?后来我转到其他项目中,所以也就没有再关注这个事情。说到代码结构复杂,不得不说很多开发的思想还停留在十几年前,像Cortana、Edge这种App都是跟随系统绑定的,半年一升级。类似这种App就应该发布到Windows Store上,更新方便,完全符合移动互联网开发程序。关于为何Edge不能发到Store中而必须绑定到系统上,知乎上有相关的回答,真相让人哭笑不得。

今年5月开始,进了新的项目,也就是我目前正在做的,Edge for Android。当然Edge for iOS也是我们team另外一部分人在做。说它是Edge,其实跟Windows 10上的Edge没有任何关系,Android上是基于Chromium开发的,iOS是基于Control弄的。Android这边的dev最开始大约有16个人,dev全在中国,design在美国,从项目开始到最终Publish一共花了将近6个月的时间。Android版目前可以在Google Play上下载,国内Android市场也有同步过来的,感兴趣的可以下来用用,自认为跟国内几个主流浏览器还是有一定差距。相比前两个项目,可以看到这个项目很受公司重视,所以相对来讲还是比较有前途的。Satya也在用我们dogfood内测版本,上次还反馈了一个bug。当然还是有几个地方需要吐槽的,公司内部已经吐槽过,所以我把它写在这里:

1) 公司组织结构太大,一个芝麻小的改动可能涉及到的人全世界都有。沟通全靠邮件,今天发的邮件可能明天后天才能回。因此沟通不畅是经常的事,design改一遍又改一遍很常见;

2) 由于微软公司的Policy,出于各种Security的考虑,Chromium版本需要不断地升级,从一开始53,5个月的时间连续升级4次一直到63。可以想象,每次merge需要消耗的人力,由此产生的bug又是多少;

3) 不得不说,微软对App的design真不如国内大厂,UX不够好,不多说了。

我对项目的反思

拿着SDE2的钱,操着CVP的心。我这种级别也只够在底层写Code。事实上,大部分都是我这样的人。还是那句话,公司组织结构大,做一件事情牵扯到的人太多。而且不在一个地方,沟通起来相当困难。想象一下,小团队作战,出现一个问题,马上就能面对面开会,可能当天就能高效解决。虽然微软在中国的的研发人数全球第二,但我所在的部门而言,很多东西都没有拿到话语权,国内的团队没有得到美国那边足够的信任。我很肯定的说,我身边的同事都是比较优秀的,Coding Skill、思维以及沟通表达都是超出平均值的。但是就是这么一群人,做出来的东西很多都没能取得成功,作为一个搞技术的,可以想象,做出来的东西没有被认可是一种怎么样的体验。另外,有人的地方就是江湖,哈哈。

我眼中的微软面试

来微软面试的SDE(据我所知包括SDE1、SDE2以及Senior SDE),面试官基本都只会问你数据结构算法相关的问题,其他的东西几乎不问或者不是Hire你的标准。虽然我理解这其中的原因,一般这种面试如果能过,基本说明这人靠谱。但是,从我微软两年的实际经验来看,招一些熟悉具体技术、业务的人进来或许更适合。我也参加过公司的一些面试,面试官的Feedback中只有以下几项:

1) Coding Skill. 大概就是让你在纸上写code,比如写一个链表反转,看看怎么样。至于拿什么语言写随意;

2) Data Structure & Algorithm. 问一些算法数据结构的题目,看你的答案;

3) OOP & Design Pattern. 问一些常见的OO和设计模式之类的问题;

4) Hire or No Hire. 要不要你?

可以看到,面试官的问题跟你申请的职位一点关系都没有,至少从面试官来看是这样的。之前有个Google拒绝Homebrew的作者的新闻,详细可以看这里作者本人的回答。 可以看到,算法、软件工程以及产品之间的不同。

关于离职

选择一个公司,我觉得应该全方位去考虑,不仅仅是能做的项目,其他比如待遇、文化、发展、福利以及自身条件限制等等。综合来看,我呆过的部门还是不错的,我之所以选择离开,完全出于自身原因。在北京的同学,如果有希望加入微软的,还是不错的选择。也非常感谢我来微软的第一任Manager,是他招我进来,在我离开的时候,又非常热心地托人给我在武汉介绍新的工作,哈哈。感谢微软,加入微软也是我学生时代的梦想。希望以上这些对想加入微软的同学有帮助。

[以上只代表我个人观点,且仅限我所在的部门在这短时间内所接触的东西,其他部门机构不清楚,特此声明,防止给大家造成误解]


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK