不知不觉,在M$干了三年多了,大大小小做了4-5个项目,总的来说,以M$作为职业生涯的起点算是个不错的选择。
这三年学到了很多东西,值得我专门写这篇总结:
- 外企的英文邮件训练极大的提高了我的英语读写能力,现在不知不觉也能写一篇很长的英文邮件了,读技术书也偏向于直接读原版,这点感觉获益很大;
- 三年基本都在做Bing,搜索方面的基础和架构知识学到了很多,也体验和学习了公司如何构架这样一个互联网最有难度的服务,老实说,微软在认准了一个项目,确实会非常有耐心等待它成长壮大,从以前的Xbox,到现在Bing,之前很多投资人建议微软放弃Bing,但是它依然投入,到今年,刚刚成为1 Billion美元的业务,首次实现盈利,不得不说微软的眼光和耐心在业界是十分良心的;
- 机器学习方面,算是刚入门,了解了如何应用它去解决搜索相关的问题,当然我的专注方向以后会是偏工程的分布式计算存储和后台开发,但是机器学习也是必须要有所了解的;
- 出了两次差去美帝,感受了下西雅图的自然和人文风光,体验了下资本主义的生活,这个也算是增长了见识;
多说一句,外企对员工的尊重个人感觉是国内企业需要认真学习的,目前很多国内互联网企业只学到了形(指工作环境,免费水果零食等),而未学到神,例如外企对员工的个人时间非常尊重,员工只要提出年假申请,没有特殊情况都会批准,15天的年假确实很是慷慨,但这并没有影响员工的工作效率,实际上我休假的时候也是会抽时间回邮件的,外企对员工家属也会有相当的关怀,例如每年的家庭日,会邀请员工家属一起在某个地方玩,这两年都是免费欢乐谷游玩,这些点点滴滴让员工充分体会到,公司不仅仅需要你,希望你快乐的生活并长时间的为公司服务;又例如大部分外企不会过于看重你以前的经验,那个有当然好,没有只要你能展现出很强的编程能力,设计能力和算法能力,依然会录用你,并愿意给你充分的时间学习和成长等等。
这次决定跳槽找工也是想了很久,主要原因在于自己技术的发展不能一直局限于微软技术栈,同时也希望能做更有挑战的事情。
不过基本没有准备,因为家庭事也比较多时间有限,所以就去直接投简历面试了,业界对微软还是相对认可,基本都有面试机会。
- 小米 (Offer),面小米(指小米云平台),是觉得总体来看小米云是个不错的平台,现在工作5天,强度不会太大,而且小米云里面听说牛人不少(3个Hbase comitter,很多组有大部分都是微软,Google等公司的),也符合自己专心做后台系统开发工程师的职业目标,总的来说,面试体验不错,一共4面,没有经理面,全是工程师面技术,大部分是算法,少部分系统设计,难度不会太大;
- FreeWheel(1轮电面+2面技术+hr面fail),面的高级工程师,两轮技术都是系统设计,这里提一下,FW的技术难度还是有的,倾向于问的比较深,但是我被拒的原因Hr说是每个项目的时间不够长技术深度不够,这点让我很意外,因为,我感觉面试官也并不了解搜索引擎,侃了半天项目,我觉得并没有特别清楚面试官想问什么,最后终结于我不是很熟悉的NLP相关算法,而且因为项目时间不长就推断出技术深度不够,这点我不是很认同,当然hr表达愿意给中级工程师的offer,要我等一个月去申请,我说还是算了;
- 美团(Offer,2轮技术),美团是我面试体验最不好的,面的外卖部门,可能急于扩张吧,等了40分钟不说,问的问题也比较容易,甚至有点。。。,完全考察不了个人能力,不说了,美团的hr还是不错的,最后为了挽留开到了和小米差不多的薪资,我最后还是没答应;
- 今日头条(2轮技术+总监,fail),要我推荐一个创业公司给技术人员,我会毫不犹豫的推荐今日头条,面试体验很好, 基本都是百度系,从技术到总监都是百度过来的,技术水平不错,我面的基础架构部门,在分布式这块确实很有积累,因为这个APP本质上就是个新闻垂直类搜索+推荐的引擎,只是总监面发挥不好,遗憾的没拿到offer。
- 滴滴打车(2轮技术,fail),滴滴的产品开发部面试让我充分体会到国内互联网公司对程序员招聘的态度,因为常年在微软技术栈开发,对开源技术了解不是很多,虽然我们内部都有对应的平台,但是滴滴的工程师明显希望过来直接能用,面试问了很多具体的细节知识(C++,网络,OS等),由于没提前准备很多没答上来,所以没拿到也在情理之中。
这次面试颇有感触,从难度上说,今日头条>小米>FW>滴滴>美团,没能拿到今日头条也是颇有遗憾,但也给我们外企工作同学的提了个醒,现在早已不是外企的黄金时代了,随着互联网的发展,中国企业已经能够展露头脚,从薪资到技术都能做到不错的水平,但由于对员工的重视以及其他方面还没有做得外企那么好,所以基本上去国内公司要做好吃苦的准备以及需要相当的适应期。同时国内企业的用人观与国外是非常不一致的,国内大部分公司对招聘人员需要拿来即用,基本不愿意给你学习时间 (可能跳槽频繁所致),对你的技术栈也非常在意。
工程师的工作需要自己不断的挖掘,总结和抽象自己的工作,对感兴趣的点深挖(做到广度有的同时兼顾深度),并不断更新自己的简历和Github上的代码,这点是很重要的。
工作生涯的前五年是很重要的成长期,前三年我感觉自己过分注重技术广度的积累对深度挖掘不够,接下来要好好深挖提高下自己对分布式系统以及后台相关开发技术的理解,同时精读一些网络,操作系统,编译原理以及数据库等基础经典书籍,多花点时间写写感兴趣的代码才是王道。