上一篇 <https://blog.csdn.net/harryhare/article/details/78515571> 主要说了下我的mentor 。
这一篇把我的实习过程再具体一些,以及我和在同一个会议室的最终在微软工作的另一个实习生的交互(叫他Fox吧,就是前面和我交换任务的人。)另,我们的会议室是四个人共享的。另外两个人叫他们
Hippo 和 Snake吧,其中Snake 是女生。如果你想最终留在MS,也许 Fox 和 Snake 的做法你可以参考。或者从我和Hippo 的
反例中吸取教训。至于为什么acm金牌的Hippo同学被淘汰掉,而算法上几乎一无所知的Fox 却能拿到SP,就是另一个故事了,如果有时间我另写一篇。

一年后再写这篇,是因为nerd如我,当时有很多地方都没有想清楚。


报道当天,我和另外两个一起住的女生坐在一个桌子周围闲聊,Fox主动上前自我介绍。然后,时间到了,所有人集合,HR
发工卡(不知道为什么我和另外两个人没有工卡?)HR
带我们(二十个左右?)到会议室收集材料,讲下实习的注意事项,再带我们上楼去各自的会议室。此时有部分人拿到纸或纸条,我没拿到。我这个时候由于还在纠结工卡和纸条,反应慢了三拍。会议室四个位置,如下图。Fox
反应最快先到了最里面的位置,Hippo 反应也算快,占了里面那排的第二个位置,Snake
虽然不及他们但还是的走到外侧靠里的位置,然后我才反应过来,但是只剩下靠门的位置。由于我们的会议室的门是常开的,所以从此刻开始,路过的人都可以看到我在做什么,而我如果不回头,并不会知道是谁路过。
HippoFox我Snake门玻璃墙 \begin{matrix} Hippo & Fox \\ \\ 我 & Snake\\ \\ 门
& 玻璃墙 \end{matrix}Hippo我门​FoxSnake玻璃墙​

接着只好装机器,由于Snake 是女生,Fox帮Snake装了机器。装好机器后开机需要用自己的用户名密码登录。我才知道前面那个纸条是密码。此时Fox 和
Hippo 是有密码的,我和Snake没有密码,就只好等待。 交流中我们发现,我和Fox 是相同的manager。然后是 Snake 的 mentor
过来找她,Snake 向他说了没有密码的情况,此时我顺带问了一下我该怎么得到密码,得知我的manager 在 休假,然后就进入一种不知道做啥的懵逼状态。中午
我和Fox 被另一个team的manager叫去吃饭。Hippo 和 Snake 大概后面被另一个team叫走。无聊的午饭后,Fox
提出我们可以去见一个先来的实习生Dolphin,去问下情况,Dolphin告诉Fox 那个密码要先在别人用过的机器上登录才能激活,然后Fox
在Dolphin的帮助下,激活了自己的账户,此时另外一个和Dolphin同一个会议室的实习生Bull
问了我的情况,然后他说他有我的manager的微信,可以帮我问下,于是我从他那里要了manager的微信,并在好友验证信息中问了下。回到四人的会议室等待。这期间Fox
协助 Hippo 激活了账号,Snake 的 mentor 帮他搞到了密码,也在Fox的协助下激活了账号。一段时间后,manager
通过了我的好友请求,把密码发给了我,然后我在 Snake
的帮助下激活了账号。(虽然激活密码的顺序完全是外因决定的,但是不知为何这个层级模式一直延续到实习结束。)

激活密码后,Hippo 和 Snake 陆续被分配了事情做。我和 Fox 则 无事可做只好聊天。鉴于是在微软,就聊到 C# 和 typescript
。Fox 说他是会这套东西的,而我自己的技术栈是 C++/Python/Linux 所以不好说啥,只能对Fox 说,自己不会C#
后面请他多多指教。(我不知道这句客气的话是否强化了他在四人中的层级。不过,对MS感兴趣的同学,C# 和 typescript
或者其他微软系东西可能还是要提前了解一下的,虽然对多数人来说过一遍语言的基础语法不过是几个小时的事情)

装完VS后,无所事事到下班时间。他们其他三个人开始准备走,我当时还是一脸懵逼状态,想在公司多待会,再稍微适应下。然后Fox,过来和我说一起走吧,我不肯,然后其他几个人开了个加班的玩笑,他又劝我一起离开。我不好显得太不合群,只好和他们一起离开。(提到这段是因为,第二天角色对换,我劝说Fox
一起下班,Fox 并没有被说动。并且Fox 从第二天开始每天加班。这里注意下,是否和其他实习生合群是不重要的,重要的是要和FTE合群。我说下 Fox 的
加班策略 吧,周末加班两天干活,并在周一对上级谎称两天的活自己是用两个小时做完的。这个策略的效果特别好,后面的同学可以试一下。)

第二天,我的 manager 开始上班。于是我在 Skype 上问了下工作内容,等待 manager 回复。这期间 Fox
表达了他不知道要不要去问的纠结。然后我等到 manager 的回复, 他说到他那里去聊下,然后我就叫上了Fox 一起去。一开始我对 Fox
的印象还是很好的,而且既然是同一个manager,就很顺理成章互帮互助。(这里要学习的点,同学们如果有什么纠结和犹豫的要不要做的事情,可以忽悠其他实习生先做,如果他们错了他们挨骂,他们对了你可以搭车)

然后被分配一个数据处理的任务,后面的时间我就都在忙自己的事了。这期间Fox 也被分配了他的工作。

第三天,前一天 Tensorflow
的环境已经搭好,并且写了几个小程序测试,也没问题。就差数据了,于是上午去问manager指定的人,他又询问了一些人后,得到没有数据权限的结论。于是我又无事可做。然后我写了个
.net 的 web server 的 hello world,运行没有问题。我再尝试VS的其他框架的模板(不知道为啥 .net
的项目模板有一堆),其中有个hello world 运行不起来,我试了半天还是无解,鉴于Fox 说他对C#
比较熟,我就去问了下(这是我犯的第一个大错!),然后 Fox 先是 说他从没见过在一个solution下放多个
project,然后我用很轻语气的反驳说这其实是十分常见的做法,然后Fox 试了下并没有解决我的问题,然后他突然把VS关了,重新打开后我的hello
world 就可以运行了。 于是Fox 通过重启VS 解决了 他被问的第一个问题,然后他就开始bragging 万能的重启。(VS 这种神奇的需要重启的
bug,成为 Fox 在四人中树立威望的第一步。另,如果后来的同学遇到什么bug,首先建议重启。)

下午晚些时候,manager找了另一个任务给我,做一个 bot。指定使用 Dorado 做,发布到 Cortana 上,作为一个Cortana 的
skill 。然后我开始研究manager 邮件发给我的链接。这一天是周四。周五也在看这个东西,写了个小的bot。

玩了一个周末,周一回来,向 manager 汇报,并商议结合微软图像识别 API 小
bot,我就是在这时嘴欠向manager提出能不能接触一些和项目有关的事情的(这是我犯的第二个大错)。 此时 Fox
做的事情也有很大的进展,他的任务是把一些数据迁移到一个 team 没用过的数据库,他从坐在他旁边的 Hippo 以及其他 FTE
那里得知了这个数据库具体使用方法。下午晚些时候,我未来的mentor(Monkey)到我们的会议室,和Fox确认Fox的想法,两人都认为这个数据迁移没有意义。Fox
和 Monkey 很能聊到一起去。(实际上Fox 和除了我之外的任何人都能聊到一起,而这点的要比 一个人的技术水平
重要一个数量级。此处注意一点,整个三个月的实习Monkey 和我面对面交流的时间 总共不到5分钟,还是我到他工位那里去。但是这一次他在Fox的工位和Fox
面对面聊了半个小时以上。)

然后Monkey教Fox 向 Manager 说 他们的共同结论,并且说他不方便直接向Manager 说,于是Fox 去向 Manager 说 ,
Manager 回复他(这句是从后来被转发的邮件中找到的):

要不要做的事情让 老大们 去决定。
我们要做的是全力以赴的搞定它 如果有问题及时让老大们知道

此时,Fox
一脸委屈地向我们说,他被manager骂了。(这个技能一般是女生用的,比如一些女生会在考试后声称没考好求安慰,你好心去安慰,结果成绩出来,人家的没考好是95分,你只有80+)

第二天上午,我和Fox 被 manager
叫到另外一个会议室,要求交换任务,然后manager大致给我讲了下,我并没有听太懂,我没有继续问,因为感觉我可以后面问Fox。

然后我们开始交换任务。我的那个任务由于是后分配的一共就做了两天(前面两天在看
tensorflow),也没多少可以交接的。但是他这个相当于做了4天(后来知道他会加班,所以实际上是6天的工作量),所以要交接的比较多。这个地方可以看到,工作的连续性也是很重要的。

我把前面我写的Dorado相关的文档以及官方文档发给他,并且讲了下官方文档,以及我后面计划做的东西。

他把一堆官方文档的链接发给我(他其实写过文档一类的东西,但是没有发给我,是 manager 后面把这份东西转给我的),和一些Skype
的聊天记录。注意,这个并不是全部信息,因为他的信息很多是和人面对面或者语音得到的,所以我得到了总信息量不到1/4的干梆梆的文字,我好像问了一堆问题,但是他也并没有给我解释清楚,我当时唯一明确的是我需要去填一个web表单,然后点submit。第二天下午我去找
Monkey(因为 Monkey 下午才上班),这是 Monkey 和我第一次见面,他很不高兴的样子,我和他解释 manager
让我接手这个事情。然后我们再次确认 下一步应该就是去网页上填那个表单点击提交,但他说 prod 的 log 不能拿来做实验,然后我问有没有可以拿来做实验
dev 的 log,他说要现做一个,有点麻烦,不过他又说提交那个表单只是会把数据复制一份,并不会影响 prod 的 log 数据,所以我问他,既然不会影响
prod 的 log 这样不就可以直接拿 prod 做,然后被他回,“你是傻逼吗?我刚说 prod 不能直接做。”

我没什么好说的,只能回到工位等他创建个 dev 数据库。

注意到这件事奇怪的地方了吗?数据库的操作权限只有 Monkey 有,我只有填那个表的权限。所以整件事的工作量完全在 Monkey 那里,我只好等他搞好
dev 的 log。(你可能看出来了,这里其实还有一个问题,为什么的dev 环境是没有 log 数据库的?MS 的 CI 的混乱?而 Monkey
应该是运维类的职位。)还有就是,从开始接任务到这一刻,没有任何人跟我提过数据库中的内容只是用来做网站性能分析的log,很久后我搜邮件,只有Fox
给的一堆东西的某个角落里提到了故障排查几个字。所以在之后的一个半月中,我都是不知道自己操作的数据是什么的。

他创建后,我去填那个表,参数很多不知道怎么填,我逐一问过他,提交时一直报错,找不到原因。(
这个时候我不知道填那个表格的平台是做什么的,也不知道那个网站和我要migrate的源数据库和目标数据库的链接关系,更没有查询数据库log的权限,从网页上显示的简短的出错信息上又猜不出是什么原因。)当然现在的我知道可以直接去问
目标数据库的 或者那个网站平台的
客服一类的人(虽然依然可能无解)。不过当时一脸懵逼,怀疑是自己的表格填错了,于是尝试各种组合(我只有填表格的权限),还是错的,尽管有不同的出错信息。


然后,从现在的角度,一个比较自然的想法是再建个源数据库试一下,但是我没有权限,我需要向Monkey请求。(我不知道是否因为中午的嘲讽和侮辱,我没有问,这点算我的错吧。)我当时只是把错误上报,等待Monkey下一步指示,但并没有指示。周三上午Manager帮我和Monkey向使用目标数据库的隔壁组
schedule 了一个远程 meeting。

下午Monkey 告诉我他直接用 prod 的 log
去尝试依然是失败的,并且他向隔壁组发了邮件询问。(由于prod这个做法我是不能试的,节奏完全是由他来掌控的,我由于没有足够权限什么都做不了。)
由于时区的关系,周四早上早起,参加那个meeting。这里补充下,当时迁移数据的源数据库是定好的,但是我们觉得目标数据库有两个选择:

*
官方提供的测试集群

*
和这个组共用他们的集群

(不知道你是否看出这里的问题。一般来讲应该是有第三个选择的,即,直接从目标数据库团队那里购买集群服务。不知道为什么 这种最正当 的
选择直接被排除掉了,不过还是会为 自己所在的 team 在 这种事情上的 抠门 感到 隐约的不安。)

所以meeting有两个目的:

*
1)我们已经尝试过了使用官方的测试集群,但是行不通,搞明白是哪里有问题

*
2)如果确认1是行不通的,那么可否共用集群,如何获得权限

其实我自觉听力很好,但是由于对方的口音实在很重,我听得不是很清楚,而且我只在 meeting 的一开始说过话,后面就完全被 Monkey
主导,听不清的地方我也没有办法打断问。于是在我一脸懵逼的情况下 meeting 结束了,我像 Monkey
询问,最后一段话我没听懂的话是什么,他没解释那段话,只是把我前面听懂的翻译了一遍。然后让我邮件要求对方的数据库接受我们的 SG 的 Access
请求,我按要求发邮件,然后被对方在第二天周五回复,

As discussed yesterday, please create another sg for your team. I will then
add the sg to list of access groups for the clusters.

(所以没听懂,也要假装听懂,反正邮件是以实习生名义发的,错了只能说明实习生是傻逼)

然后周五上午我按照邮件的要求,去建个 SG ,但是尼玛,SG 要求 owner 一定是FTE,此时 Monkey
还没有上班,我只好四处求助,有人说要我等Monkey来,不过后面Manager直接帮我建了一个,我用建好的SG
回了那份邮件。对方周六回邮件已把数据的权限加好。周一我写个了个不知所谓的回报进度的报告。主要包括目的数据库的使用。但是报告中有一个严重错误的信息,提到了某个人没有回邮件,Monkey
在前面发过那封邮件,在我特意问过这个人是谁的情况下,他也没有告诉我那个收件人是错的。(这里算是个笑话吧,不过你可以想到MS的混乱。)

Monkey在收到周六的会后,大概试了一下,发现了缺少 create 数据库的权限,然后Monkey
独立(没有告诉我,后面被转了邮件才知道)申请了权限,该权限在周一被 approve,此时整个的权限应该就已经配置好,可以进行正式的迁移了。但我被
manager 要求参加 hackthon 。

然后我特意问了 hackthon 和 这个任务的优先级。manager 说 hackthon 优先级高(后面的同学可能需要注意一下
这个,事实上,确实很多最后转正的人都参加了 hackthon ),然后我按照指示填了相关的报名信息,并开始做 android 的 app 的开发,由于
hackthon 的比赛是周三,所以我只有不到两天的时间完成 android 原生 app 开发从入门到放弃的过程。

说下我要做的,从前置摄像头在视频流中 获得图片,使用脸部识别的API,得到手机前面的人(如果有人的话)的表情,然后调用 manager
写好的动画函数,在屏幕上播放相同表情的动画。

其实这也是一件没有什么难度的事情,但我自己的手机是 iphone!!!
Manager开始说他可以在周二给我找个android手机,但是晚上发现公司并没有回上海的班车,所以我只能自己解决了,然而android studio
装在公司电脑上(android 官网被封,只有MS内网可以在短时间吧android
开发环境搭好,所以我回住处借室友手机开发不可行),而用android的小伙伴们晚上都要回家,我就进入了一个无解的局面。于是第一天,我配好环境,模拟器运行了下,大致看了下代码后,就只好不甘心的回到住处,然后我在行李中翻到了一个很老的勉强能用的android
手机。这个手机电池坏掉,拔掉电源线会关机,这个是我四年前的手机,我带着它是为了防止我的iphone
发生意外。我以为是好运,幸好我来苏州时带来它,结果我错了,这个其实是悲剧的开始。周二我用这个android手机写了一天的代码,由于下班时依然没有调好程序,只好在公司熬夜(第二天的上班时间别提那个难受)。由于这个老手机是
android 4.0.x, 用的camera 和 android 5 不兼容,所以我周二熬夜写好的程序周三在往
Snake的android手机上刷时,出现了异常,当时已经来不及改代码。只好又刷回没有摄像头的原始版本去结合 manager 的其他硬件去 hackthon
上 demo,相当于我什么都没做。

我在等待和焦虑中度过上周时,Fox 的 bot 做好了,不过是用 wechat
小程序做的。主要是写个小程序的后台,上传个图片,用图片地址去调个API,把返回的文字返回给客户端,这个难度你们都懂的。不过这件事情神奇的地方在于,这个 bot
并没有满足我被分配任务时的要求(使用Dorado 框架做Cortana 的 skill ),不仅没有满足,而且是两个要求一个都没有满足,我在交接时也特别的和
Fox 说过这两个要求 。一定要做 Cortana 的 skill 的 这个要求 ,Manage 转给我过他 boss
(Tiger)的邮件,似乎是硬性的要求。但是后面点评时又恰是 Tiger 对 Fox 做的这个东西大加赞赏。(微软的管理层的非理性?还是Fox
有我不知道的后台?)


此时他的工作都已就绪,唯一还差个视频。于是周一周二他都在优哉游哉的做视频。如果让我说Fox的技术上最强的是什么,那么绝对是他的视频加工水平。虽然那个视频和他的参赛作品几乎无关,不过那个视频还是很棒的。

他做好视频后,就开始四处嘚瑟。

先是到我工位前装作询问是否需要帮助的样子,然后我说了下我有个没有捕获到的异常,然后他给出各种莫名奇妙的调试建议,比如在一个我已经在外层函数catch
exception的函数中再加个try
catch,我正在想怎么说才能把他打发走,结果他直接动我的键盘和鼠标改我的代码,当然他失败了那个异常还是没捕捉到。然后他又说了一堆装逼且没用的。看到这里,你也许已经看出问题所在。我由于对
android 开发没有任何基础,当时甚至不知道要把 IDE 的 log 窗口打开,我只是在通过运行时的输出去判段出错的位置。然后 Fox 一样不知道
android 开发的常识,却自信满满给我各种建议。(后面的同学可以注意下,在自己不懂的事情上装逼也是很重要的技能。)

同时这段时间,他在未经我同意的情况下,在我调试该死的 android 程序时,偷拍我,并上传到他的小程序作为测试,而当时他和 Snake\Hippo
的关系都比我更亲近,完全没理由拿我做实验。当时我注意力在调试上,没理他,现在想起来,这个行为真的好恶心。

周三,hackthon。由于前一天熬夜,我一整天都处在昏昏沉沉的状态。下午 hackthon 过后,继续做数据库的事情,此时 Monkey
已经把那个表填好,不过还剩下了一个机械的把元数据库的所有table都在网页上填报确认迁移的步骤,于是这种麻烦的事情自然被丢给我做。这步还算顺利。所以分配给我的第一件事情就算完成了,我本来以为后面可以做其他事情了,结果我错了。由于一直是Monkey在主导,于是我后面的工作就变成用powerBI
这个巨难用的东西 去做这些log 数据的可视化,这件事由于在源数据库上已经做过,所以我以为我需要做的只是翻译代码,没想我到又错了。说PowerBi
难用,因为PowerBi
基本是拖控件的风格,我的技术方向是后台开发,十分不喜GUI相关的东西。(后面的同学可能要注意下,外企全栈类职位比较多,如果你更倾向纯后台开发,入职前最好问清楚。尤其在微软是无法积累Linux相关的经验的)

然后是一个会议,Fox 跟我我说他在纠结要不要去,然后拉我一起去,然后我就发现杯具了,是汇报进度的team例会。我的 hackthon
项目并没有做完,hackthon 后的项目也只是刚刚开始,没有任何可以汇报的。而他的hackthon
虽然是个一天就能做的项目,但是却是完整的。这个时候我还没有对Fox有什么看法。(教训是,不要想法太单纯,被人推到火坑里还不自知。)

这段时间,他时常发出各种感慨,并且让Hippo
去看他的屏幕,于是我有时也去凑热闹。有次是我看到他屏幕时,他快速最小化了一个skype窗口,然后短暂的一刻尴尬表情,当时我没多想。最后一次是他当时在改
typescript
那部分的代码,我当时对前端调试一窍不通,于是指着屏幕中我不是很明白的地方去问他。他没回答我,而是指责我戳他的屏幕,然后开始擦屏幕,我就只好识趣离开。

然后是一个 周末,由于hackthon受挫,我想可能自己也应该勤奋些,然后周六也去公司加了会儿班,我是下午才到的,我发现会议室的灯是亮的。Fox
已经在了。周日Fox
同样在加班,那天,我在看文档,看到一个不知道是什么意思的词(英文意思知道,但是在文档中肯定不是那个常用的解释),我看的那个文档他是读过的,于是我就像工作日一直都在做的那样问那个词是什么意思,结果被回,看文档,我以为他没明白我的意思,我又了一遍,Monkey
回,“你自己不会看文档吗?” 然后周一上午Fox 提交了一个PR,并且从前来指导 Fox 的 FTE 口中,得知 Fox 向 manager
说他自己用了两个小时写这个PR。(嗯,nerd 如我就是从这个谎言中开始怀疑 Fox
的,加上前一天的自己查文档事件,然后再回想他之前的种种,觉得相比之下自己是个 64k 纯傻逼。)

下面几个小片段,记不清是何时发生的,不过也许可以从中窥探到一些东西吧。

聊到广东话,Fox会说广东话,我问Fox 能不能教我,Fox回 北方人说广东话难听。

晚上聊天,Hippo 说苏州房租很贵,Fox 回 说,可以找个女朋友平分房租。

一个 online 的talk, Fox 说他想听没有耳机,我提议把门关上,我开机箱的公放一起听,Fox
说好,然后我关门开声音,公放声音比较小,效果很差,不过想想已经答应他了,就忍了。结果后来发现 Fox 并没有听。

一次讨论到域名,我说我的域名在公司内网无法访问,不知道是域名被封还是 vps 被封。然后Snake 捧着我说,并说她也想把这套做一下。Fox
在一旁插嘴,这个东西很简单,我就只好闭嘴。然后 Fox 把他做的同样的事情吹了一通。

四个人吃饭,忘记是什么引出的话题。Fox 模仿女性口吻评论口红的色号,Hippo 和 Snake 给他捧场,我差点吐了。

周四小蛋糕,Fox 拿了两个。(这种蛋糕都是默认一人一个的)

有次聊天,我们提到各公司的笔试题难度比较。Hippo 是 acm 金牌,笔试自然没有什么问题。Snake
没有专门搞过竞赛,不过她后来提到专门请人辅导过算法。我由于本科学校不重视这方面的比赛,也没有参加过,不过我靠自学+刷题的野路子也能全部 AC 很多笔试。Fox
是只有项目经验的。算法能力比较应该是 Hippo >> 我 >> Snake > Fox。然后就提到我们拿到实习的那次笔试,我AC 两道,Hippo AC
一道,Snake AC 一道(还是半道?),Fox 一道都不会所以一道都没做。按理说,看到试题没有AC 就应该已经没有面试资格,但是 Fox
说他后来收到第二次的笔试的短信(由于第一次笔试的难度淘汰了很多人,于是第二轮笔试 MS
出了很简单的题目放了水)。然后是我们对作弊的看法,我坚决反对作弊,Hippo 由于 他本身的 acm 经历也是反对作弊的。但是 Fox
讲了一些他见过的作弊的例子(我记得没有表示过反对),Snake 也说她没觉得作弊有什么不对。