最近各大互联网公司都在裁员,还有的公司已经锁死了HC,只出不进,公司内部也不让转正以及活水,周围的同事们也越来越卷,深怕自己被领导约谈。

很多小伙伴也在问我,相比于互联网大厂,现在去外企是不是一个更好的选择?今天分享一位朋友刚进微软的体验,希望对于求职的小伙伴们,在选择offer上有所帮助。


作者:FreewheelLee |

加入微软满三个月了,感觉是时候简单聊聊一些体验和感想。前两天发了个想法也征求到了几个问题,文末也回答一下。

内容概要

  • 工作环境(凡尔赛环节)
  • 工作和技术相关的讨论
  • 常见问题的回答

一、技工作环境—保姆式关怀

“保姆式关怀”是我这三个月来最明显的体验!微软给员工提供了非常全面、到位、可靠的、贴心的环境和服务。

1.1 餐厅

上海微软的员工餐厅非常好吃且实惠。餐厅模式类似于大学食堂,一碟一碟的菜品,随意挑选,一天大概有二三十种菜品;也有现做的拉面,麻辣烫之类的;特殊节日还有特色菜品。最重要的是,干净卫生!(承包商是索迪斯,全球知名的餐饮企业)

我一直有点慢性胃炎,以前上班基本只能吃周围的街道快餐店,一度加重了,怀疑是这些店的卫生问题,后来不得不自己带便当。来微软后,去公司上班的动力有一半是去吃员工餐厅,哈哈哈!

1.2 通勤

我家离微软大概有1小时车程,开车去上班还是挺方便的,因为我所在的办公楼停车位非常充足。

更棒的是,微软有自己的班车!二三十条线路基本覆盖了上海的所有地区。后来,我就更喜欢坐班车上下班了,因为可以在车上打盹,休息,还可以以赶班车为由,每天5点10分下班哈哈哈~(回家的班车是下午5:30出发)。

1.3 办公设备

不同组所需要的电脑不完全一样,我拿到的是:

  1. 64G + 1TB 的台式机
  2. 16G + 512G 的 ThinkPad Yoga
  3. 还有一台特殊的 ThinkPad,配置是 48G + 100G —— 专门用于访问生产环境的安全工作站

大部分时间都是用台式机干活,Yoga 基本家用(有一说一,Yoga做工非常精致,个人感觉在 macbook 之上,而且是触控屏)

我们组都有升降办公桌和人体工程椅,但是没有机械键盘。人体工程椅有点拉胯,我只好又买了个靠背。

1.4 各种节日活动

这个就不赘述了,因为积极参加节日活动,我已经拿了一堆各种各样的礼品了。

比如这次

1.5 其他福利

办公楼里有午休室(数量有限,先到先得) ;免费的 oreilly 账号,可以看各种正版技术书籍;外部请来的各式各样的讲座(比如 育儿,心理,理财等等);ESPP(员工折扣股票);额外的医疗保险(去医院看病的费用基本都能报销);园区里有健身房,足球场,篮球场 ...

二、技术和工作

上面提到了各种福利和环境都给你准备好了,公司当然希望你能安心并高效地开始工作了。

2.1 技术栈

微软在上海这边使用的编程语言种类还是比较多的,有 Java,Javascript (TypeScript), Python 等等,当然,还是.NET(C#, F#等)为主。

另外,微软内部已经全面往Azure云服务上挪,比如Azure Active Directory作为单点登录解决方案,Azure Pipeline作为CI/CD平台,内部服务也基本都部署在Azure的各种服务上,比如 Azure kubernetes service, Azure app service, Azure Functions(Serverless方案)等等。

来微软三个月时间,已经看到了非常多的技术,细说说不完。我个人非常喜欢拓展自己的技术面,因此目前我很享受在微软工作,接触这些琳琅满目的技术栈让我很兴奋。

2.2 高战斗力团队

我所在的部门很少加班,大家的工作时长都应该在8小时(以内),但这并不影响整个团队的输出,这是一个高战斗力的团队。

根据我的观察,我认为我们部门高战斗力团队的基础及核心是拥有不少优秀的 Senior developer / Tech Lead / Expert (基本是5年以上的工作经验) ,即使是我们的 Dev Manager 仍然在一线上写代码、Review Code。他们的主要贡献除了输出代码,更重要的是对新人 / Junior Developers 和其他的同事的影响,比如 我们组的Code Review是相当严格的,他们总是能给出优质的建议(无论是代码实现层面还是代码设计层面,甚至是feature层面)。因此,在Code Review阶段就尽力避免堆屎山的情况,长期下来,项目代码质量相对高很多。

此外我也看到了部门里有不少优秀的 Junior Developers, 虽然工作经验不长(2年以内),但他们的技术基础非常好,也很有技术热情,是一股强大的有生力量。

最后,专业的manager也很重要。除了上面说的,亲自在一线写代码,我看到的这些manager性情都比较温和,没有PUA,没有官僚主义。他们经常需要参与重要feature/bug 的架构设计,在比较高的层面上拍板,因此他们的技术和决策能力至关重要。幸运的是,我经常能看到他们在坚持做正确的事情(do the right thing),不会轻易妥协。当然,有时候因为他们的“较真”,代码实现难度会变大,但我并不觉得这是一件坏事。

2.3 协作和互助

在微软的KPI考核中,如何帮助其他同事完成他们的工作以及如何基于别人的帮助完成工作也是两个重要的考核标准。虽然我目前还不知道考核时是否严格按照标准执行(还是口号/形似主义),但是也能从中看出,微软从公司文化层面的确重视员工之间的协作和互助,同时想避免重复造轮子,浪费和内耗

入职后,manager通常会安排一位同事作为mentor 1对1带新人。mentor的职级通常会比新人高,但也不一定,主要是帮助新人快速融入微软的工作环境。我的mentor很细心,甚至会提醒我给PM发邮件前利用 word 检查一下英语语法。

我们组和几个合作比较密切的组共同使用了一个OneNote NoteBook记录了很多(非正式的)文档,比如如何申请某个权限,使用怎样的语句查询某个服务的某种错误等。

我们组同事之间询问项目和技术问题,大家基本都会倾囊相授。相反,在某些公司,有些老员工可能会故意给自己建“技术壁垒”,自己负责的项目技术/技能藏着掖着,组里其他人不懂,由此稳固自己的地位。

我们部门定期有技术分享会(1小时左右);我们小组内部也有10分钟左右的小型分享会(下周就轮到我了)。虽然不一定都是干货,但通常也很有意思。

2.4 工作和开发流程

我们组接到一个需求后,通常会采用下面的流程:

写设计文档 -> 开会Review -> 改善设计 -> 开会Review(如有必要) -> 代码实现 -> Code Review -> 合并代码

在设计文档上,会要求写的比较详细,比如在各种场景下应该采用怎么样的策略,提出多种备用的解决方案,分析解决方案的难点。

开会Review时,Senior developer / Tech Lead / Expert 会提问题,给建议,并在设计文档上会留下很多讨论记录,方便后面回头查阅,避免扯过的皮又扯一次。

这种流程相比很多互联网公司,进度显得偏慢,但是质量往往都比较高,不会留下太多的隐患、技术债,长远来看可能是更高效的做法。

三、常见问题

  1. 有人担心使用微软的技术栈不方便跳槽,因为国内互联网公司后端技术栈基本是Java

我个人的建议是 —— 不用担心。如果你真的想钻研技术,我可以负责任地告诉你,在一定的高度后,编程语言从来不是问题。你更应该研究理解那些更通用的技术思想:Java 有 HashMap,C# 有Dictionary;并发编程在所有高级编程语言里都不会缺位;C# 甚至有类似 JS 的异步编程 ......

格局打开,不要局限于拧螺丝钉,甚至只拧某种机器的螺丝钉,多想想汽车、飞机、轮船、航母,星辰大海、诗和远方。

当然,人各有志,也有一些程序员只想在某个编程语言上工作,一些程序员想抱紧已有的技术知识一路走到底(没有贬义),也许也能专精一门技术。正如前面提到的,微软不同部门和团队的技术栈很多,也有招前端和Java

总之,我不建议跳槽时因为技术栈原因而第一时间排除微软。

2. 微软员工有30/35岁年龄危机吗?

完全没有。我们组的 Senior developer / Tech Lead / Expert 基本都在30岁以上,有的应该已经35岁以上了,经常听见他们在聊小孩上学、辅导的问题。当然,这不影响他们的专业程度,大多数都非常敬业。

3. 微软的待遇不高?

校招的待遇我不清楚,但据我所知,微软上海的社招总包整体还行。offer package首先是基于工作经验,2年及以内应该是一个比较硬的坎,很难拿到很高的offer。5年及以上的面试表现优秀的,也能拿到相对满意的offer了。2-5年的看面试表现和运气了。

简单地说:

  • 如果你非常缺钱而且工作时间不长,那么不建议来微软。
  • 如果不缺钱,而且热爱技术,那么微软应该很适合你。
  • 其他的情况就有非常多可能性了,我建议可以试试微软,微软的面试体验整体是很不错的,面试官素质通常都不错。(可以找我内推!
  • 如果想拿个好offer,多多提升自己(不止是刷题),面试表现得好一点就行(只能说这种废话了)。

四、写在最后

首先声明,本文所有观点和言论都只基于我个人在微软上海的经历、见闻,微软很大,部门很多,小组也很多,有差异很正常,勿杠勿喷。另外有一些言论也比较主观,agree to disagree,大家求同存异

最后,我也希望国内一些公司能学习借鉴,希望更多国内互联网公司能撕下996、PUA、代码屎山等标签,给程序员们提供更好的工作环境和氛围,真正创造社会价值。