微软亚麻SWE实习体验记录

下岗休息了六个月之后惊觉马上又要上班了,决定捡起拖延已久的实习复盘,从个人视角对比下两个公司各个方面的实习体验(文化WLB、技术、实习项目、return机制等),也算是给之前的经历收个尾。*工作术语都是全英,行文不免中英混杂

1 背景

去年有幸拿到北美微软和亚麻的SWE Summer Intern offer,最终暑期在湾区微软,秋季在西雅图亚麻实习。

考虑到组组之间差异巨大,简单交代下我实习Org和小组相关的信息。

我在微软的小组在E+D(Experience+Devices)部门下,业务做的是微软众多办公软件里比较小众的两个,技术方面是Fullstack(React/Angular和C#/Java)。

在亚麻的组是Store大org下某个suborg的ai agent后端组,技术是Python为主,伴以少量历史遗留Java。

2 Culture & WLB

和其他实习朋友聊下来发现,我的这两个组的文化应该挺符合大家对这两家公司的刻板印象。

首先是软这边,我最大感受是对个人生活节奏极致尊重,ie无上限养老。如果是在这样的组,工作上不太会有很急的due,只要自己想,日子可以过得很舒服。据我观察,附近部分同事的routine一般是:10点11点悄悄出现在办公室,12点准时去食堂占大桌子,小群吆喝大家下楼吃饭聊天,吃完饭去juice bar薅点喝的,下午一两点回到工位,连一刻也没有为午休的结束哀悼,立刻赶到现场的是3PM coffee(会邀请同事去喝咖啡聊天)。我发现大家回复消息最快的是午饭食堂刷新出三文鱼刺身和有人给车充完便宜电让出位子的时候。

组里工作也可以想见地较为轻松。组里standup在我印象里一周最多一次,每周五甚至还划出了带薪联机打游戏的时间。不仅是任务量上,在日常交际里作为实习生也感受不到什么politics,我合作过的同事从SDE1到principal都很乐于助人,哪怕问隔壁组不太相关的同事也是有求必应,而且交流时普遍和气松弛些,偶尔跟对接的同事/manager提起一些突发情况,他们也会气定神闲地说没事。文化laidback的缺点是,工作任务不会有特别新鲜有趣的,而且节奏确实偏慢,design都可以拖很久,自己急着解决的问题不一定能立即找到人,因为大伙是真不急。

还有一些地区specific的情况,比如湾区Campus里虽然有免费的好吃早午饭,但是intern的活动都是总部主办所以只能线上围观,会少一些体验。

接着是麻。和我在微软疑似always last day的体验比起来,亚麻就是名副其实的always day 1。组里的作息是每天9:30到公司,10点standup,12点各自吃午饭,下午四五点离开办公室,观察下来同事几乎都按着这个来,很少有迟到或早退。我喜欢的一点是关键信息基本透明,交流通畅,节奏快,工作效率非常高。对于比较复杂的事,一般早上互相review完组员的CR,组会上就能交流清楚每个人的status,如果有后续一般会拉小会聊,达成milestone也会在这个场合分享。而对于小问题,因为大家坐在一片工区,走过去三言两语之间基本就解决了。但是亚麻快节奏的另一面就是累和卷。我在的组里虽然名义上五点下班,但因为每两周要跟大老板做demo,组员周末乃至凌晨发CR的情况几乎是家常便饭,仿佛就没有下班时间,偶尔teamlunch大家聊到workload都会心一笑。

至于福利,众所周知,亚麻除了香蕉和每日咖啡没有什么其他物质福利。遇到别组庆祝什么或者办活动可以薅到别人放在厨房的多余食物aka剩饭剩菜(听起来很可怜,但我们真的会去…)。比起微软会组织很多intern only的游戏、出游,亚麻这边没有组织太多秋季活动,我遇上的活动只有叫我去做intern OA内测题的。但坏处是同事们都肉眼可见地疲于奔命,连每双周demo day结束后的餐厅team lunch都像是要从checklist上划去的任务。

3 工作体验

Onboarding 入职

亚麻有一套针对new hire的系统化onboarding guide。Intern在亚麻的第一周需要跟着它的onboarding课走一遍,里面会讲解内部工具,也有从零开始修改、提交、审批代码的实践部分。过了一遍以后就能大概理解内部每个东西是怎么回事,之后再去跟组里同事请教下就知道更具体的组内工作流了。

而在微软,不知道是我的组比较特殊还是工具链比较零散的原因,onboarding好像是靠看文档和人传人,并没有公司级别的统一步骤。我的第一周在跟着文档setup和到处问人之间不断切换。

开发环境和工具

亚麻内部的工具链非常成熟全面。它有一套包管理系统 brazil和配套的CICD平台pipelines。pipeline的UI让我联想到马里奥的水管,感觉很可爱,后来出了新版类似AWS UI的现代设计我都不想换。

微软则是在Dev box这个有GUI的云端虚拟机环境里完成开发。内部仓库和CICD用Azure Devops,偶尔也会用到github。我觉得好的地方是业界化好上手,比较类似学校/普通企业的工作流。但微软的各种工具联动有种跨越时空的美,我经常吐槽有时点开一个界面就梦回十年前。比如我项目会用到的internal ai orchestration platform,其搜索界面仿佛来自css未普及的年代,而且卡顿离谱。

日常工作流

前文也提到,微软的工作流和一般企业没有很大区别,而亚麻有一套自己的生态。在亚麻,代码提交叫做CR=Code Review(微软用PR,毕竟是GitHub的父亲)。以我自己为例,一个从零开始的简单工作流是:把需要的package下到本地,改代码,自动同步到云端环境完成build和test等任务,然后提交CR。

值得一提的是我觉得亚麻的CR dashboard比微软Azure Devops里自带的功能好用很多,前者非常清晰地展示了和自己相关的CR状态,后者我找自己的PR都有些许费力(可能是我的问题)。我估计是拜此所赐,CR流转非常快,连我的边缘项目代码都每天有人帮忙看。

至于平时写码,在我在职期间两边开发普遍已经重度依赖ai coding了。我在微软用Copilot,老实说不太聪明,偶尔还是要古法编程;在亚麻用Cline,那时已经很接近现在agent coding的感觉了。我知道现在两边的ai工具都有所变化,所以不多说过期经验了。

除此之外,亚麻和微软相比很突出的是它的doc culture。在微软时我感受到的是,文档是为了formalize某个方案,便于跟他人沟通展示的用具。我相信这点会有不同组之间的差异,但是总的来说不觉得是以文档为主的。而在亚麻,大部分正式决策都围绕文档进行,比如design doc,过程一般是从初案、到初步review&comment、到开会讨论和最后修改定案,往后的实现也必须以文档为基准,出了什么岔子首先也会回到文档。

小结

总的来说,在微软体会到的更多是自由和协作,在亚麻则是规范和严谨,也算是大厂文化的硬币两面。

4 Intern Project & Return Offer

关于项目,Intern project一般会是一个组里需要但是没人有空做的工具/feature,也有把组里的task分出来的。我在亚麻的项目是做一个简化工作流的全栈ai tool,最后做完从内部tool的意义上直接上线了,在微软的项目是一个实验feature的原型,有些类似学校大project。

整体流程上,亚麻的关键节点是 mid-point review,final presentation和最后一周告知incline/decline结果。我的经历是midpoint似乎不是mandatory的,我的manager并不在乎,更重要的是最后有没有deliver。微软要写三次performance review,内容第一次设定目标,第二次是中期回顾展望未来,第三次是最终总结。这些东西的具体内容可能不是最重要的,我觉得关键还是做好deliverable + mng/mentor面前的visibility。

其次关于Mentorship,我觉得两边差异不大。关键角色都有manager、mentor和onboarding buddy,这里面有些可能是同一人,比如在微软我的manager也兼任我的mentor,buddy则是日常技术问题的goto person。职责上,onboarding buddy顾名思义负责辅助intern onboarding,mentor和manager会关注项目的进展,帮助intern解决日常问题,评估表现。

关于return,由于不同组的变数很大,有些组的manager会全听mentor的裁决,有些会和mentor交流自己判断,所以如果目标是return,可以尽早弄清决定权到底在谁手里。that said,个人感受是这两家公司intern的转正率都不低,仅根据身边dp,在非毒组、正常出活、hc不收紧的情况下都能拿到。

5 总结

可以看出来两边都是各有千秋,我并不觉得哪个一定更好。微软的intern life很舒服,晒着加州阳光品鉴食堂美食(SVC真的好吃),和同事喝喝咖啡聊天,一周有好多个小时是这么过去的;即使抛开这个不谈,很多工具都近似平常自己用的,毫无别的大厂一样要重新学一套内部tool的压力。另一边,亚麻虽然总被大家叫毒厂,但intern其实免于大部分politics和基于performance的压榨,反而能更纯粹地体验整个从design到production的严谨流程(我觉得是和fulltime共用同一个标准的),我自己觉得学有所得。