这是一篇自言自语的唠唠叨叨。
正式通过面试
7 月 19 日晚上,在忐忑不安的等待中终于收到了来自 Google 的 interview feedback,我通过了前一个周五的第二轮面试,正式成为了大陆地区第 10 名 Android 方向的 Google 开发者专家(GDE)。
要说为什么忐忑,除了人们对等待未确定结果的人之常情,还有就是我在面试结束时就感到我没有绝对把握必过这轮面试。二轮面试官是个德国人叫 Jossi Wolf,是来自 Google 的 Jetpack Compose 团队的工程师,从 LinkedIn、Google Developers 等平台的公开资料显示,这个哥们在 2018 年高中毕业后没去上大学,先是在汉堡的 3 家本土公司工作了几年,然后在 2022 年加入了 Google 的伦敦办公室,在加入 Google 之前他也是一位 GDE。并且这哥们还挺帅的:
根据我的臆想,通常这类少年天才在跟一个同领域的人对话时,从第一秒开始就在评估眼前这个人是跟他拥有同等才能的智者,还是愚不可及的庸才。一旦被其判定为后者,这类人通常会毫不犹豫地丧失耐心。所以当得知他是我的二轮面试官时我很焦虑,甚至晚上失眠。因为我不知道我与这类人的差距有多大,而且也不想被人当作笨蛋。
当然,以上确实都是我的臆想,实际面试过程中,他的礼貌和友好远超我的想象。而且我能感觉到我因为紧张,英语说得不如平时流利,但他仍然非常耐心,并且频频点头。但这不代表面试很容易,国内许多公司的面试中,你的面试官和你专精的方向不在同一领域是常事,所以有时候对方对你的表现其实是一种"不明觉厉"的感受。但 Google 的面试不同,这位德国小哥和我的专精方向基本吻合,而且比我更胜一筹,面试中的问题无论深度还是广度都极佳,并且有两次触及到我的知识盲区。面试过程友好、礼貌,但严肃、严谨,我全程极尽可能的用我并不算好的英语努力的回答问题。
面试结束后我并没有感到轻松,我心里总在想:"某某问题如果我能用中文描述肯定能回答得更完美"。这也是我认为我未必有完全的把握通过这轮面试的主要原因。
不过好在结果是幸运的,7 月 19 日晚上还没等来结果的我本来准备睡下,在临睡前想起了这位德国小哥说过:"下周一到周二别忘了检查邮件,特别是垃圾邮件"。于是我翻了翻垃圾邮件箱,果然收到了面试通过的反馈:
所以,众所周知,"垃圾邮件"里的邮件通常都是最重要的邮件。
在这之后我发邮件感谢了 Jossi,告诉他我会持续提高英语水平和技术能力。他也相当 nice 的给了我回信,这是部分节选:
Ultimately, our decision hinges on whether we think the candidate brings something to the community and is knowledgeable. That's definitely the case here!
Your English skills were definitely good enough to have a professional conversation, but I'm happy to hear you will continue learning. Looking forward to meeting at a conference!
现在想想,我目前认识的所有 Google 员工真的都非常 nice。
提交申请之前的故事
我想我可能比其他几位 Android/Kotlin GDE 的申请故事更曲折。故事要往前捯的话,也许要到 2021 年。当时 Google 开发者社区团队的 Tracy 和 Lily 邀请我们 Kotlin 中文社区(那时候国内的 KUG 几乎都还未起步)的三个人(我、贾哥、丙乾)申请 GDE。丙乾大家都知道,顺利通过,目前是国内唯一一个纯 Kotlin 方向的 GDE(可能也是最后一个)。贾哥因为工作太忙搁置了。而我提交申请后被拒绝在了履历审核阶段,Google 全球 GDE 项目 Android、Kotlin 方向的负责人 Ben Weiss(巧的是他也在伦敦)给我的拒绝理由是:我关注的技术领域过于集中,希望我能多尝试不同方向。后来回想起来,我 2021 年过于集中关注 Kotlin Multiplatform 领域,进行过好几次相同主题的分享,确实在广度上有所欠缺。
当然,Ben 也非常礼貌,他在回信的最后告诉我说:"这不是拒绝,只是想再观察一下我后续的发展和成长"。但事实上这的确是拒绝,至少在那次是。如果在这之后我什么都不做,注定会被他遗忘。
再往后就到 2022 年了。2022 年的我已经成为了在 JetBrains 注册的上海 Kotlin User Group 的 orginizer,并且还拥有了自己的 podcast(跟 JetBrains 的圣佑以及 Maggie 一起主持)。并且我在 2022 年上半年在工作中取得了不少成果,我计划在下半年多参与一些社区活动,将这些成果分享出来,能扩大自身和公司的影响力的同时也为再次申请 GDE 做准备(GDE 的履历审核中需要有近期做过社区公开技术分享的内容)。
9 月底我参加了 Google 2022 DevFest Shanghai,在主会场的最后一场分享中我又重新介绍了 Kotlin Multiplatform 的最新进展。由于疫情,这是自 2019 Kotlin/Everywhere GDG Beijing 之后,时隔三年我又站在了线下活动的演讲台上。活动结束后,我跟来到现场的 JetBrains 的 Sue、Lenyo 等三人成功面了个基。
11 月我又自告奋勇的去找圣佑希望他能给我一个在 JetBrains 2022 中文开发者大会上做分享的机会。我介绍了公司刚刚开源的项目------SQLlin,它是我首次在正式项目中构建了自己的 DSL 语法并第一次使用了 KSP,算是凝结了我 2022 年所有的学习成果。
12 月我又联系了 Google Developer Group(GDG)上海的核心组织者马萍,希望她能帮我引荐一下,在最近的 GDG 上海的活动中帮我安排一场。马萍也是我在携程的同事,之前的 DevFest 也是靠她引荐。我这次也刻意岔开了 Kotlin Multiplatform,讲了下函数式编程。
朋友们在听说我要申请 GDE 时,都毫不吝啬地为我提供了帮助。
其实到这个时候我就决定开始申请了,但此时正值西方圣诞节和元旦的连休,Google 在欧美的办公室基本都进入了"冬眠",只能等待 2 月初再提交申请。后面 Lily 认为为了保证履历审核更稳当一点,建议我在 2 月的 Google Ctalk 线上活动上再讲一场。于是我又准备了 Andoid Instrumented Test 及 CI/CD 的主题。
连续小半年的连轴转已经让我有些疲惫,为了应对英语面试,我从 2022 年的 11 月份起,就开始每周 5 次,每次一小时的上英语口语课程。为了防止晚上下班太晚,或者下班后太累,我通常将课程安排在早上,所以我几乎每个工作日都是早起 1 小时上课。持续的坚持除了让英语水平提升速度非常快以外,也让我的精神能量消耗的非常快。在结束了那场 Ctalk 活动后,我准备了两周并重写了 CV 准备再次申请。结果又被时间开了一个玩笑。我在 3 月 8 日填正式申请表的时候发现 Kotlin 居然在 Category 中消失了......咨询了一下 Google 才知道,Kotlin 是在 3 月 6 日关闭的,如果按照美国西部时间算,关闭的时候中国是 3 月 7 日...... "我真的就这么背吗???"。关闭的大概原因是受年初 Google 大裁员影响,负责 Kotlin 方向 GDE 的团队暂停了该方向的申请。我倒是没想到我会以这种方式卷入到一则"科技新闻"中。在这之后我只能选择等待 Kotlin 方向再开或转申 Android 方向。如果立即转申 Android 方向,我的履历可能稍微有点偏离,毕竟近些年出彩的成果都集中在 Kotlin 领域。Lily 帮我咨询了 Ben 能否转申 Android 方向,Ben 给出的回复是:"这位申请者在 Kotlin 领域无疑是杰出的,但在 Android 领域还需要积累"。于是我又相当于被"暂拒"了,但我猜 Ben 可能真的忘记了我是谁。
之后,我决定先去旅游,休息一下身心,暂缓思考这些令人头疼的事情。于是我在清明节前往了新加坡,约了 AB(2BAB,大陆第 8 位 Android GDE),还偶然得知 JetBrains 的 Sue 也在新加坡度假。于是我们 3 个找了一家娘惹菜餐厅约饭,还受圣佑所托,临时录了一期炉边漫谈(《Kotlin 炉边漫谈》第 9 期,现已发布)。我们聊了很多关于科技行业、新加坡生活的话题,还留下一张合影:
完全不同的环境总能让我很放松,而且我也非常乐于接受新鲜事物和信息,和这两位的聊天也让我很开心。最后临离开新加坡之前买了一台 Pixel 7 Pro,算是充值了一下信仰,借此希望等我回国再申请的时候 Google 看在我充值了信仰的份上不要卡我(玩笑话):
回国之后在 4 月份,我以上海 Kotlin User Group 的名义举办了一场线下活动,活动的名字是 KotlinConf Global ------ Shanghai Meetup。向公司申请后,把地点设在了公司的大会议室。这次不同的是我是组织者,没有亲自分享。我找来了三位巨佬(付博、陈轲、张林;陈轲和张林原本也都是 AB 的朋友,这里得感谢一下 AB),分享了三个主题。第一次作为组织者也还算成功,线下来了 27 位参与者,线上有 50+。
时间来到了 5 月底,2022 年 12 月暂停的 Go 语言方向 GDE 在此时已经恢复了申请,但 Kotlin 仍然没有恢复的迹象。Lily 这时来问我要不要在 6 月的 Google Ctalk 上再讲一场,然后申请 Android 方向。我觉得此时也必须做决定了,因为此时距离 2022 年的 Google DevFest 活动已经 8 个月了。于是我又在 6 月初的 Ctalk 上分享了 Compose 底层渲染机制的主题。之后又用了一周修改 CV,准备再次提交。通常的 GDE 申请者在一年内会有 3 到 4 次公开技术分享活动,而此时我已经有了 6 场。
在正式提交之后 Ben 这次给我秒通过了,在被"拒绝"两次之后,第三次他终于给了我通过,现在我们看看 Ben 长什么样吧:
果然是强者发型啊~
之后的第一轮面试其实我也非常紧张,那次是真正的第一次英语面试。面试官叫 Andrew Kurniadi,是个和蔼的印尼老哥。我之前非常担心东南亚口音的英语会非常难懂,但幸运的是这个老哥的英语很标准。他没有给我任何压力,而是从面试一开始就主动进行了自我介绍,我们聊了很多 Android 开发的现状和历史,在这些有趣的话题中他会自然的提问,整个过程就像轻松的聊天,他提到他是 2008 开始做 Android 开发的,2007 年是第一代 iPhone 发布的年份,2008 年第一款搭载 Android 系统的手机 HTC G1 发布,所以,这位老哥算是 Android 元年时代的人物。
在这之后第二轮面试的故事最前面已经说过了。
所有的点最终都会连成线
7 月 20 日是我签署完和 Google 的协议,正式成为 GDE 的第一天。我被拉入了各种群组,包括全球 GDE 邮件组、中国 GDE 的微信群、全球 GDE 的 Slack 频道...... 甚至还有一个差旅报销网站,如果以后以 GDE 身份参加Google 组织的活动,Google 会通过这个网站报销差旅费用。我登入了 GDE 的内部平台,查看了一下国内现有的 11 位 Android/Kotlin GDE(Android 10 名,Kotlin 3 名,朱凯和朱涛二位同时持有 Android 和 Kotlin 两个方向):
我发现除去我自己以外的这 10 位中,我认识其中的 8 位。
丙乾自然不用说了,自 2018 年在北京认识以来,一直是我的亦师亦友。除了技术上时常为我解惑,还曾给我介绍过华章出版社,这个机会让我出版了自己的译作《Kotlin 编程实践》。
2BAB 老师在前文也出现过了多次,在最近两年给我提供了许多指导,除了 GDE 申请前给我分享了许多社区经验,最重要的是他教会了我如何练习口语。他拥有自己的 podcast 节目《二分电台》,在《Kotlin 炉边漫谈》刚起步时,同样给了我们三人很多帮助,至今他也来《Kotlin 炉边漫谈》串台过 4 期。
王鹏老师和我同为 JetBrains 2022 中文开发者大会的分享嘉宾,今年 7 月在北京的 KUG 线下聚会上,我也第一次见到了他真人。
叶楠 老师和张拭心老师在我 GDE 申请和面试前给我都给我分享了许多经验,巧的是张拭心老师和我拿到 GDE 是前后脚,他比我早刚好两周。
我大学期间最初开始学习 Android 开发就是读的郭霖老师的《第一行代码》,属于是看着他的书"长大"的,很荣幸在去年 Google 2022 DevFest Shanghai 活动上,我也与他同为分享嘉宾。
朱凯老师是我在读大学期间找第一份实习工作时的面试官,那时他在 Flipboard 做 Android 工程师,那时他还没有全职做编程教育。当时虽然我的面试没有通过,但他告诉了我正确的学习方法,以及如何获取正确的学习资料。在 2019 年的 GDG 北京举办的 Kotlin/Everywhere 大会上,我第一次和他同为分享嘉宾。
朱涛老师同样是我在 GDG 2019 Kotlin/Everywhere 大会上认识的分享嘉宾。
现在回想起来,如果我 2021 年通过了履历审核,进入了 GDE 的面试会怎样?我当时的英语水平就算不是 0 分,也顶多只有 10 分。进入了面试阶段只有被挂这一条路等着我。那今年 3 月如果成功赶上了 Kotlin 方向的末班车会怎样呢?我记得那时候我的口语练习总时长是 70 小时,可能仍然不足以应对专业面试,毕竟在拥有 150 个小时的总练习时长的现在,我仍然感到不完美。从结果上来看,所谓的倒霉也未必真是坏的,因为一旦面试正式被挂,会有半年的冻结期不能再次提交申请。现在既然已经得到了最好的结果,不如接受之前的失败。
我喜欢记录一些真实的故事,这也是我最早想做《Kotlin 炉边漫谈》的原因,记得大学的时候常常一个人听《IT 公论》、《内核恐慌》,它们给我带来的就是这些真实的故事。有趣的故事总能激起人们对未知世界的好奇,并给听众那么一点点动力。我总说我希望自己每年都能做过或做到一两件之前未曾尝试或完成的事情,因为新鲜事物总能让我兴奋,在这个过程中无数次突破"第一次"的障碍时,总能让自己感受到逐步迈向曾经未知的领域的激动。从 2015 年大学时第一次接触 Android 开发来算,已经有 8 年时间,无数曾经的经历在今天来看,都已经在此时汇聚。每个故事从来都不是孤立的,最终它们会串成一段完整的经历。GDE 对我来说算是一个阶段性的检验,无论是技术能力还是英语,它也再次验证了付出终有回报。既然这个阶段圆满结束,那下一段旅程又会前往何方?
人物介绍
本文出现了大量人名,为了避免读者记混,我效仿了 Chet Hases 的书《Android 传奇》,给出了本文中出现的人物的简介。
Jossi Wolf ------ Google 软件工程师,我的第二轮面试官,德国人,现居伦敦
Tracy ------ 前 Google 中国开发者社区经理,现已离开 Google
贾哥 ------ 贾彦伟,Kotlin 中文站负责人
霍丙乾 ------ Benny Huo,Google 开发者专家(Kotlin 方向)
Ben Weiss ------ Google Android 开发者关系工程师,目前也是全球 Kotlin 和 Android 两个方向的负责人,现居伦敦。
范圣佑 ------ JetBrains 技术布道师,也是 podcast 节目《Kotlin 炉边漫谈》的合伙人
Maggie ------ 台湾 Kotlin 开发者,也是 podcast 节目《Kotlin 炉边漫谈》的合伙人
Sue ------ JetBrains 市场经理
Leyno ------ JetBrains 中国执行董事及总经理
2BAB ------ Google 开发者专家(Android 方向),现居新加坡
马萍 ------ 上海 Google 开发者社区的核心组织者,也是我在携程的同事
付博 ------ 携程 IBU Android 工程师,KotlinConf Global ------ Shanghai Meetup 分享嘉宾
陈轲 ------ TapTap Android 工程师,KotlinConf Global ------ Shanghai Meetup 分享嘉宾
张林 ------ 腾讯微信移动端工程师,KotlinConf Global ------ Shanghai Meetup 分享嘉宾
Andrew Kurniadi ------ Google 开发者专家(Android 方向),早期 Android 开发者,我的第一轮面试官,印尼人,现居雅加达
王鹏 ------ Google 开发者专家(Android 方向)
叶楠 ------ Google 开发者专家(Android 方向)
张拭心 ------ Google 开发者专家(Android 方向)
朱凯 ------ Google 开发者专家(Android, Kotlin 方向)
朱涛 ------ Google 开发者专家(Android, Kotlin 方向)