mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-23 21:20:42 +08:00
140 lines
25 KiB
Markdown
140 lines
25 KiB
Markdown
|
[#]: collector: (lujun9972)
|
|||
|
[#]: translator: (JonnieWayy)
|
|||
|
[#]: reviewer: ( )
|
|||
|
[#]: publisher: ( )
|
|||
|
[#]: url: ( )
|
|||
|
[#]: subject: (Leaving Google: Five Years On)
|
|||
|
[#]: via: (https://theartofmachinery.com/2020/08/04/leaving_google.html)
|
|||
|
[#]: author: (Simon Arneaud https://theartofmachinery.com)
|
|||
|
|
|||
|
离开 Google:五年以来
|
|||
|
======
|
|||
|
|
|||
|
大约五年前的今天,我上交了 Google 员工证,然后走出来悉尼 Google 办公室,开启了一段自谋职业的崭新生活。我认为我应该详述一下这个故事,因为我通过阅读 [Michael Lynch][1] 的作品而收获颇丰。正如你所看到的,我仍然花费了几年时间才开始考虑写这篇文章,但是最终我告诉自己,倘若我不在五周年纪念日写它,我就永远也不会写了。
|
|||
|
|
|||
|
这篇文章有点儿长,但是我希望它对那些对于在大型技术公司工作感兴趣的新开发人员或是想要离职的大型企业雇员能够有所帮助。我将谈谈我进入 Google,在 Google 工作,以及退出 Google 的故事,还有我自开始以来所做的事情。尽管我已经写了很多博文,但是如果想知道更多关于某事的细节的话,随时可以提问,因此我无法立即保证任何深入的事情。
|
|||
|
|
|||
|
同样地,冒着显而易见的劳工风险:我已经有 5 年不在 Google 工作了,所以请不要以这个故事来作为当今 Google 或是 Google 雇员经历全貌的字面描述。但是,我认为其中的许多内容仍然与一般性的技术职业有关。
|
|||
|
|
|||
|
### 通往 Google 的艰辛道路
|
|||
|
|
|||
|
2005 年,我获得了第一份有偿编程工作,是在当地的电力公司工作,采用一些旧的 Pascal 代码并使其能够在另一款具有不同编译器的操作系统上运行。这基本上只是我为了挣外快而做的暑期工,同年我还刚刚开始攻读我数学和物理的学位。他们很高兴有一个本科生能够胜任这份工作。我被这些大人吓了一跳,因为他们不仅只是对我的编程爱好感兴趣,而且真的还会为此给我钱。
|
|||
|
|
|||
|
直到 2007 年毕业以前,我一直在做类似的工作。我喜欢编程工作,而 Google 是一家从事着很酷的编程工作的很酷的公司,因此我申请了实习。 Google 的面试过程以困难而著称,所以我花了好几个星期时间练习了所有我在网上能够找到的 Google 面试题。我认为 13 年里面试流程并没有发生太大的变化 —— 我提交了简历,受邀参加了几轮电话面试,这些面试问的几乎都是算法问题(我记得有一个动态规划问题和一个分治几何问题)。我通过了最初的几轮面试,然后受邀前往悉尼接受了由 Google 的工程师们进行的为期一天的现场面试。我回到家里,等待 Google HR 的电话,这个过程漫长得像是有一辈子。我被拒绝了。
|
|||
|
|
|||
|
对于我们收到的拒绝和失败感到难过很自然,因此我们并不会经常谈及它们。但是出于同样的原因,其他人也不会去谈论他们自己的失败,这只会使得情况变得更加糟糕。当我后来真的进入 Google 时,我觉得作为一个此前被拒绝过的人,我一定有哪里做得不对,但是有一天我和一群同事坐在一张桌子旁,开始交谈。那时候我才发现,实际上我身边的很多人都至少被拒绝过一次。我甚至都不是“最差的”。有个家伙开玩笑说,他肯定是因为 Google HR 厌倦了拒绝他才得以进来的。我也在谈论一些相当令人印象深刻的工程师 —— 有些人负责着我一直在用的代码,而我打赌你也在用。
|
|||
|
|
|||
|
进行面试的公司通常会为每个名额面试两名或更多的候选人。这意味着比起录用,会有更多的拒绝,所以普通的面试参与者被拒绝的可能性要大于被录用。然而我们一直忘记了这一点。四个开发人员参加面试,一个被录用了,其他三个在社交媒体上抱怨这场面试充满了缺陷,因为他们被拒绝了。当然,面试远非完美,但是我们需要停止如此个人化地谈论它们。
|
|||
|
|
|||
|
只要你能够找到问题所在并知道如何去改进自己,拒绝和失败就没有那么糟糕。 Google 的面试主要针对算法,我在其中磕磕拌拌地摸索,但绝对没有能够脱颖而出。
|
|||
|
|
|||
|
在被 Google 拒绝以后,我得到了两样东西,并进行了为期一年的休假。第一件东西是 Australian Business Number ( ABN ),我用它来做数学与科学课程,以及技术工作合同。我获得的另一样东西是一张大学科技图书馆的借书证。我当时并不打算再次去参加 Google 的面试,但是那次的面试经历告诉我还有很多东西是我所不知道的。我会在图书馆开设课程,并在期间阅读书籍。顺便说一句,有些人认为我为我的学费业务所做的所有这些财务工作和其他东西很奇怪,而大多数导数都只收现金。但是我学到了许多对我日后生活很有帮助的东西,所以我一点儿都不后悔。
|
|||
|
|
|||
|
2009 年,我进行了一个数学荣誉年(又称学士学位四年级),基于一名由魔术师转行的名叫 Persi Diaconis 的数学家的工作。计算机科学系让我将他们的算法单元之一作为其中的一部分。
|
|||
|
|
|||
|
就像我所说的那样,我本来并没有打算再去 Google 面试,但是让我快速地讲讲这是怎么发生的。我从高中就开始学习日语,因此在 2012 年,我决定尝试住在东京。这基本上行得通,除了我犯了一个相当大的错误 —— 我没有任何日语方面的纸质资质证明,因此很难获得工作面试。最终,我的一个已经被 Google 录用的朋友建议我再试一次。与 Google 所有的办事处一样, Google Tokyo 的官方商务语言是英语,因此他们不要求我具有日语资质证明。
|
|||
|
|
|||
|
### Google 面试,再一次
|
|||
|
|
|||
|
我的朋友向 Google HR 推荐了我。这绝对有帮助,但是如果你自己得到了被推荐的机会,也不要太过于兴奋。它所能够确保的是你的简历会被注意到(不太过潦草)并且免去一次电话面试,但你仍然得通过剩下的电话面试和现场面试。
|
|||
|
|
|||
|
这一次我用来自 [Project Euler][2] 和 [Google CodeJam][3] 的题进行练习。电话面试过程中,我不得不在 Google Doc 上进行一些在线编程,这有点儿尴尬,但是除此以外电话面试一切顺利。然后我受邀前往六本木的 Mori Tower 办公室进行了为期一天的现场面试。
|
|||
|
|
|||
|
![Mori Tower in Tokyo, where I interviewed for Google. It's the sixth tallest building in the city, which means it's huge. \(Photo from here.\)][4]
|
|||
|
|
|||
|
我的首个面试非常糟糕。我的脑子僵住了。我知道我能够解出那些题目,但是直到面试官走出房间我才想出答案。我立刻就感到很放松,并且意识到这是一个三元搜索问题。这是在是很令人沮丧,但是我觉得继续前进,看看剩下的面试进展如何。
|
|||
|
|
|||
|
其中的两次面试很糟糕。其中之一直至今日仍然是我遇到过的最糟糕的面试问题。面试官说:“你用同一输入运行一个程序两次,得到了两个不同的结果。告诉我这是为什么。”我回答道:“当这种情况在现代计算机上发生而且并不在我的预期之中时,通常是竞态条件。”他只说:“不,这不是竞态条件。”然后看着我等着我的下一个回答。如果他有兴趣讨论一下的话,这个问题本该是一个很棒的问题,但是很显然他实际上只想玩“猜猜神秘数”。对于我所说的几乎全部内容,他只是回答:“不。”显然,该程序完全是确定性的,不存储任何状态,并且不依赖于环境(例如磁盘或是实时时钟),但却在每次执行时都给出不同的结果。我怀疑我们对于“被存储的状态”或是“环境”的含义还是某些东西有着不同的理解,但是我无法区分。有一次(变得绝望了)我试着问电子元件的温度变化是否会有影响,而他说:“不,那会是一个竞态条件,我已经告诉过你这不是竞态条件了。”最终,面试结束了,而我仍然不知道那个秘密数字是什么。
|
|||
|
|
|||
|
我将这个故事的原因是,我听说过许多更为温和的恐怖故事,用以证明面试官是憎恶面试者的坏人。然而,与流行的刻板印象所相反的是,当天的大多数面试基本上都还可以,面试官也很友好并且很尊重人。面试也着实很困难,因此最好减少面试官的工作量。希望那个“猜数字”面试官从 Google HR 那里得到的反馈是,他的问题对于作出聘用决定没什么帮助。
|
|||
|
|
|||
|
这次,面试带来了一份要约,但是有一个小问题:这份工作在悉尼,担任站点可靠性工程师( SRE )。我以前从未听说过 SRE,但是我和一位悉尼的资深 SRE 通了电话,他解释说他注意到了我在天然气行业从事嵌入式工程的经历,并且认为 SRE 会和适合我,由于类似的可靠性与拟合紧密约束方面的重心。
|
|||
|
|
|||
|
在东京花了大约一年时间来建立起自己的生活,我不想抛弃一切然后搬到悉尼,但是我绝不可能会拒绝一份来自 Google 的要约。与招聘人员交谈时,我确实犯了一个非常愚蠢的错误:我被问到当时能赚多少钱,然后我就脱口而出。[别这么做。][5] 这意味着在面试中发生了什么事情,或是你上一份工作中你的工资有多低,等等都无关紧要。你可能会被拒绝,或者会在原来的薪水基础上得到一些象征性的提升,并且如果你试图进一步协商,会被认为疯狂而又不合理。就我而言,我的收入甚至远远低于 Google 的入门级职位。我无法肯定地说这就是整个故事,但是在 2013 年我搬到了悉尼,在 Google Maps 成为了一名新毕业生级别的 SRE。
|
|||
|
|
|||
|
### Google Maps SRE 在悉尼
|
|||
|
|
|||
|
像 Maps 这样的产品实际上是若干个软件项目,每一个都有自己的开发人员团队。甚至诸如路线查找之类的功能实际上也涉及多个软件项目 —— 从交通时刻表数据收集,到线路计算,再到结果渲染,等等等等。 SRE 的工作包含两个方面:一方面是为各个项目提供待命,实时响应任何生产事故;另一方面(在无需救火时)则是将生产事故中所积攒的经验应用到其他项目中去,并且发现其中可能出错的方式,或是发现使其性能更好的机会。 Google 的 SRE 还需要像开发人员的内部咨询小组一样,对部署实践、自动化、监控或是类似的问题提供咨询。
|
|||
|
|
|||
|
这项工作相当紧张。作为一个团队,我们每周至少需要处理一次生产事故,否则就要承担更多服务的责任。每个礼拜,悉尼的所有 SRE 都会聚在一起,交流发生过的故障事件或是有关如何使事情更好地运转的新技巧。学习曲线感觉就像是再次成为了一名本科生。
|
|||
|
|
|||
|
我有时会感到震惊,听说我选择离开 Google 的人会问:“但是你不会想念这些好处吗?!”物质上的好处(例如伙食等等)绝对很棒,但是他们是你可以买到的东西,因此,不,他们不是我所想念的东西。如果你问我所想念的是什么,我会说是在那里工作的人们。与你可能听说过的不同,自大的人不喜欢在 Google 之类的地方工作。有一个臭名昭著的有关一个自恋者的故事,他在 Google 找了份工作,并假装自己是各方面的顶级专家,让自己尴尬不已。他待了不到半年就离开了。总的来说,与我工作过的其他地方相比,这里的文化在傲慢、指责以及政治方面很少。另一方面, Google 并没有垄断好同事。
|
|||
|
|
|||
|
不过,在有一种公司,政治是个大问题。晋升需要“展示影响”,而众所周知的是,要做到这一点最简单的方法是发布一些新事物(不是惟一的方法,但是最简单)。结果是 Googler 们比起改进现有的解决方案,对于推广他们自己质量一流的原型方案更感兴趣。在 SRE 之间,我们经常开玩笑说, Google内部有两种软件:运行良好但是已经过时甚至不被考虑使用的旧东西,以及现如今正在作为 100% 官方工具使用的热门新东西,即使它们还尚未能正常运行,作为 SRE,我们经常亲眼看到新的热点事物出了什么问题(有时甚至在脱离 alpha 之前它就已经成了过时的旧东西)。([我此前已经对这类事物进行了更为深入的讨论。][6])
|
|||
|
|
|||
|
这不是我们愤世疾俗的 SRE 所想象的东西;这在公司中被公认为是一个问题,而我记得令人放心的是促销委员会已经开始通过维护工作等方式寻找关于其影响的证据。
|
|||
|
|
|||
|
### 晋升申请
|
|||
|
|
|||
|
2015 年,在 Google 工作了两年之后,我的经理告诉我,现在是时候申请一个高于我新毕业生水准的晋升了。晋升过程每两年一次由晋升委员会进行集中管理。你可以先提出申请,然后加上一份对你所从事过的项目的简短描述,再加上同事的推荐信。委员会将会进行审查,然后给你赞成或反对的意见。仅仅有你经理的推荐是不够的,因为你的经历有想让你获得晋升的动机。手下有高级别的员工有助于你自己的职业发展。
|
|||
|
|
|||
|
长话短说,我提交了我的申请,而委员会说不。事实上,这是个相当糟糕的拒绝。我不记得详细的答复了,但感觉就像是委员会在我的申请中寻找可以轻视的东西。例如,我从事过的一个项目是一个内部工具,它建立起了功能需求的积压。我查看了这个项目,发现根本问题在于它已经超出了构建它的键值存储,需要一个合适的数据库。我主张切换到关系数据库,并实现了它:模式、数据迁移、查询、实时站点迁移等等。新查询的速度要快得多,而且(更重要的是)可以有效地支持新功能。在进行迁移之前,我必须要解决的一个问题是大部分代码没有被测试所覆盖,而这是由于大部分的代码都不可测试。我使用依赖注入以及[我此前讨论过的其他技巧][7]重构了代码,而这使我能够构建一组回归测试套件。我记得这个项目主要是因为测试单元的编写是“新毕业生水平的工作”而被驳回。
|
|||
|
|
|||
|
我的经理真的很支持我,并且写了上诉。他没有给我看,但是我认为这是可以被缩减成 “WTF” 的若干页(更雄辩而详尽地论述)。以下是一些我也认为这一回复有点 “WTF” 的原因:
|
|||
|
|
|||
|
Google SRE 有一种“关键人物( point-personship )”的概念。一个项目的关键人物有两个角色:一个是比起其他 SRE 对于软件项目有着更为深入的了解,以便你能够回答他们可能会提出的问题;另一个角色是作为开发人员在项目本身上的第一联络点,以便他们能够获得对所有 SRE 问题的回答。 Google 的职业阶梯指南说,毕业生水准并不需要扮演关键人物,但是看起来很适合晋升。正如我在申请中所写的,我是三个项目的关键人物。
|
|||
|
|
|||
|
我的关键人物经历使得想要找到同意支持我的晋升申请的资深开发人员很容易。当他们发现我是新毕业生级别时都十分震惊。他们都同意支持我的申请,假设我已经处在了一个更高的级别。
|
|||
|
|
|||
|
在我的申请之中,我提到曾担任过一组新毕业实习生的导师。当我提出申请时,他们之中的许多人都已经被聘用为了长期雇员。我足够资深,可以去担任他们的导师,但是还绝不足以晋升到比他们更高的级别。
|
|||
|
|
|||
|
给我经理上诉的回复与原始评论截然不同。这次,我“大大超出了对于我新毕业生级别工作的期望”,但是问题在于他们需要稍多一些时间来确保我能够晋升到新毕业生加一的级别。我被告知在接下来的 6 个月时间里,倘若我能够继续超出预期,知道下一个晋升周期,也许那时我就会得到晋升。上诉结束了;这就是最终结果。
|
|||
|
|
|||
|
我写了一封电子邮件,表示我正在采取另一种选择。就像许多科技公司一样, Google 也有员工持股计划。在开始工作时,你会得到一笔象征性的补助金,而在各个“投资”里程碑时刻,你会收到真正的股份。我的下一次股票投资实在几个月之后。从那以后,我将不再为 Google 工作。
|
|||
|
|
|||
|
### 我离开的原因
|
|||
|
|
|||
|
辞职的决定并不容易,而某天你或许会面临同样的抉择。以下是一些有助于我作出决定的因素。([我在以前的一篇贴子里对一些这类想法进行了更深入的解释。][8])
|
|||
|
|
|||
|
如果你思考一下,考虑到我并不是字面意义上真正的应届毕业生, Google 的评价应该是这样的:“你正在做一些非常错误的事情。”在 X、 Y 还有 Z 方面有所改进之前,你根本不会得到晋升。被告知“你远远超出了预期,但是我们还需要 6 个月左右的时间”,这是毫无道理的。没有人关注我是否有能力做好我的工作。我得到了许多接口,但是没有能够帮助我提高的任何有用反馈。(注意:有时候你必须要明确地要求反馈。经理们可能会陷入捍卫自己所给出的绩效评级的陷阱,而不会去考虑报告是否需要反馈。)
|
|||
|
|
|||
|
我也不确定晋升委员会会在 6 个月里看到什么他们在已经过去的 2 年时间里都没有看到的问题。他们为什么不会在要求 6 个月时间呢?如果我需要花上多年时间来证明自己以获得新毕业生加一的级别晋升,那么我升到新毕业生加二的时候得有多老呢?
|
|||
|
|
|||
|
刚加入 Google 时,我的工作级别无关紧要,因为我当时学到了那么多东西,并且能在我的简历里写入一家著名的公司。两年过后,方程式变得不同了。 Google 所提供给我的未来所具有的价值正在下降,而 Google 之外机会的价值却正在上升。 Google 的职位实际上在 Google 之外几乎毫无意义。在过去的 5 年间,许多人都问过我在 Google 做过什么,但是没有一个人问我在 Google 是什么职位,或是称我为“新毕业生”。尽管我在短期内受到了财务方面的打击,但实际上在我上交员工证的那天我就已经得到了晋升。
|
|||
|
|
|||
|
值得称赞的是, Google 没有做过任何类似于以下的事情,但是在其他公司中却很常见:试图让员工对于要求加薪感到内疚。在几年前我工作过的地方,一些工程师在经历了许多紧要关头的成功发布后要求加薪。管理层扮演起了受害者的角色,并且职责工程师们是在“扭曲他们的手臂”。(大约 6 个月时间后,他们失去了自己大部分的工程团队。)如果你真的愿意就辞职时间进行配合(例如,在发布日期之后,而不是前一周),并且愿意记录下你的知识并在自己之后清理等等,那么你仅仅是由于雇主支付给你的工资不足而“扭曲他们的手臂”。
|
|||
|
|
|||
|
名义上,我在 Google 留下了大量未投资的股票。但是知道你拥有股票时,股票才属于你。我只是得到了未来会有分红的承诺,而我可以将其除以所需的时间来将其转换为同等的工资率。为这项投资工作 2 个月是值得的,为了剩余的投资工作数年不是。不要被禀赋偏见所迷惑。
|
|||
|
|
|||
|
什么时候不应该辞职呢?嗯,与在其他地方相比,你能得到的很多吗?公司的职业发展道路不是天上掉下来的,他们是一系列的业务报价,代表着你将为什么样的公司评估而工作。如果你认为自己能得到很多(考虑到所有的薪酬和像是工作环境之类的无形资产),很好!否则,是时候认真考虑一下下一步该做什么了。
|
|||
|
|
|||
|
### Google 之后
|
|||
|
|
|||
|
我应当警告你的是,我采取了高增长的战略,但是牺牲了短期稳定性。如果对你而言稳定性更为重要,你应该做出不一样的选择。我的 A 计划、 B 计划、 C 计划都失败了,我最终花费了几个月时间苦苦找寻出路。最后,我在一家小型网络商店得到了一份合同,为 [Safety Town][9] 工作,一家面向孩子们的政府道路安全网站。那里的薪水较之于 Google 是一个巨大的缩减,尤其是考虑到这是我几个月以来的第一份工作。但是,你知道,我真的很享受这个项目。当然了,它不像 Google 那么“酷”,而且可能一些学校里的孩子也不觉得它酷。另一方面,在 Google,我只是一件大事的一小部分。 Safety Town 有一个小团队,每个人都扮演着至关重要的角色。在 Safety Town 项目中,我是后端工程师, Safety Town 但是我唯一需要费心的事情。而且可能一些孩子已经在这个网站上学到了一两件有关道路安全的事情。从那以后,我做了很多项目,大多数都要更大,但是我仍然会向人们展示 Safety Town。
|
|||
|
|
|||
|
![Screenshot of Safety Town home page, owned by Australian NSW government.][10]
|
|||
|
|
|||
|
我记得 Google 悉尼办事处的一张海报,上面写着:“飞向月球吧!即使你错过了,你也会降落在群星之中!”人们很容易忘记,即使你不是在为知名公司或初创公司做“登月计划”,你也可以拥有高质量的生活。
|
|||
|
|
|||
|
这儿有一个帮助我获得合同的窍门。我会去参加悉尼的科技活动,站在能看到求职公告板的范围之中,等着直到我看见有人在上面写东西。假设他们正在为一个保险公司项目写 CSS 开发方面的信息。即使我对 CSS 或保险不是特别感兴趣,我也会来回徘徊并说:“嗨,这是个什么类型的保险项目?”这是最容易的开启谈话的方式,因为在他们努力往求职公告板上的狭小缝隙中写字的时候,满脑子都是这个项目。通常情况下,这样的谈话仍然不会为我带来一份工作,但是偶尔也会发现一些我能够帮上忙的东西。有些活动没有求职公告板,但是组织者们往往很乐意把麦克风递给别人几分钟。这为他们的活动增添了社区参与度。
|
|||
|
|
|||
|
在为政府采购网站工作后,我取得了重大的突破,因为我学着不对政府采购一窍不通。很难确切说出这些知识的价值,但是不到一年过后,我签署了一份政府合同,比我此前所期望的要多了 40%。(不过,我如今没有做太多的政府和大型企业工作。)
|
|||
|
|
|||
|
大约一年半过后,我有了自己的一人公司。随着我声誉的建立,我逐渐获得了更多类似于 SRE 的工作。基本上,从事开发工作是我的“工作”,然后几个月后一个需要 SRE/DevOps 帮助并想起了我的人联系了我。我事实上既喜欢 SRE,也喜欢纯开发工作,但是供求关系意味着 SRE 工作是个好工作。我仍然可以在空余时间编程。
|
|||
|
|
|||
|
说起这个,工作与生活的平衡是我在新生活中最喜欢的事情。没有人在两份合同之间给我酬劳,但是我可以通过在业余项目中学习新东西来充分利用这一间隙。在一个漫长而又紧张的合同之后,我休息了一下,[进行了为期一个月的背包徒步旅行,探索了日本乡村][11]。这是我期待了很长时间的一次旅行,但是在入职 Google 之前我需要更多的钱,而在 Google 供职期间我又需要更多的时间。自营职业远非没有压力,也不是适合每一个人的,但是有的压力会让你感到死气沉沉,有的压力则会让你越发充满活力。于我而言,自主营生是第二种,我想说,和在 Google 时相比,过去的 5 年间我的压力总体上有所减轻。对于我来说,至少我能够诚实地说我不后悔当初加入 Google,也不后悔当初离开 Google。
|
|||
|
|
|||
|
--------------------------------------------------------------------------------
|
|||
|
|
|||
|
via: https://theartofmachinery.com/2020/08/04/leaving_google.html
|
|||
|
|
|||
|
作者:[Simon Arneaud][a]
|
|||
|
选题:[lujun9972][b]
|
|||
|
译者:[JonnieWayy](https://github.com/JonnieWayy)
|
|||
|
校对:[校对者ID](https://github.com/校对者ID)
|
|||
|
|
|||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
|||
|
|
|||
|
[a]: https://theartofmachinery.com
|
|||
|
[b]: https://github.com/lujun9972
|
|||
|
[1]: https://mtlynch.io/why-i-quit-google/
|
|||
|
[2]: https://projecteuler.net
|
|||
|
[3]: https://codingcompetitions.withgoogle.com/codejam
|
|||
|
[4]: https://theartofmachinery.com/images/leaving_google/mori-tower.jpg
|
|||
|
[5]: https://www.kalzumeus.com/2012/01/23/salary-negotiation/
|
|||
|
[6]: https://theartofmachinery.com/2019/03/19/hello_world_marketing.html
|
|||
|
[7]: https://theartofmachinery.com/2016/03/28/dirtying_pure_functions_can_be_useful.html
|
|||
|
[8]: https://theartofmachinery.com/2018/10/07/payrise_by_switching_jobs.html
|
|||
|
[9]: https://www.safetytown.com.au/
|
|||
|
[10]: https://theartofmachinery.com/images/leaving_google/safetytown.png
|