Linux中國

離開 Google:五年以來

大約五年前的今天,我上交了 Google 員工證,然後走出了悉尼 Google 辦公室,開啟了一段自謀職業的嶄新生活。我認為我應該詳述一下這個故事,因為我通過閱讀 Michael Lynch 的作品而收穫頗豐。正如你所看到的,我仍然花費了幾年時間才開始考慮寫這篇文章,但是最終我告訴自己,倘若我不在五周年紀念日寫它,我就永遠也不會寫了。

這篇文章有點兒長,但是我希望它對那些對於在大型技術公司工作感興趣的新開發人員或是想要離職的大型企業僱員能夠有所幫助。我將談談我進入 Google,在 Google 工作和辭職的故事,以及之後我做了什麼。如果你想了解更多的細節,可以隨時詢問,不過我已經有很多博文要寫,所以不能保證有什麼深入的內容。

同樣地,冒著顯而易見的勞工風險:我已經有 5 年不在 Google 工作了,所以請不要以這個故事來作為當今 Google 或是 Google 僱員經歷全貌的字面描述。但是,我認為其中的許多內容仍然與一般性的技術職業有關。

通往 Google 的艱辛道路

2005 年,我獲得了第一份帶薪的編程工作,是在當地的電力公司工作,把一些舊的 Pascal 代碼用不同的編譯器在不同的操作系統上運行。這基本上只是我為了掙外快而做的暑期工,同年我還剛剛開始攻讀我數學和物理的學位。他們很高興有一個本科生能夠勝任這份工作。我被這些大人嚇了一跳,因為他們不僅只是對我的編程愛好感興趣,而且真的還會為此給我錢。

直到 2007 年畢業以前,我一直在做類似的工作。我喜歡編程工作,而 Google 是一家從事著很酷的編程工作的很酷的公司,因此我申請了實習。 Google 的面試過程以困難而著稱,所以我花了好幾個星期時間練習了所有我在網上能夠找到的 Google 面試題。我認為 13 年裡面試流程並沒有發生太大的變化 —— 我提交了簡歷,受邀參加了幾輪電話面試,這些面試問的幾乎都是演算法問題(我記得有一個動態規劃問題和一個分治幾何問題)。我通過了最初的幾輪面試,然後受邀前往悉尼接受了由 Google 的工程師們進行的為期一天的現場面試。我回到家裡,等待 Google HR 的電話,這個過程漫長得像是有一輩子。我被拒絕了。

對於我們收到的拒絕和失敗感到難過很自然,因此我們並不會經常談及它們。但是出於同樣的原因,其他人也不會去談論他們自己的失敗,這隻會使得情況變得更加糟糕。當我後來真的進入 Google 時,我覺得作為一個此前被拒絕過的人,我一定有哪裡做得不對,但是有一天我和一群同事坐在一張桌子旁,開始交談。那時候我才發現,實際上我身邊的很多人都至少被拒絕過一次。我甚至都不是「最差的」。有個傢伙開玩笑說,他肯定是因為 Google HR 厭倦了拒絕他才得以進來的。我說的也是一些相當厲害的工程師 —— 有些人負責著我一直在用的代碼,而我打賭你也在用。

進行面試的公司通常會為每個名額面試兩名或更多的候選人。這意味著比起錄用,會有更多的拒絕,所以一般面試參與者被拒絕的可能性要大於被錄用。然而我們一直忘記了這一點。四個開發人員參加面試,一個被錄用了,其他三個在社交媒體上抱怨這場面試是如何的漏洞百出,因為他們個人被拒絕了。當然,面試遠非完美,但是我們需要停止如此個人化地談論它。

只要你能夠找到問題所在並知道如何去改進自己,拒絕和失敗就沒有那麼糟糕。Google 的面試主要針對演算法,我在其中磕磕拌拌地摸索,但絕對沒有能夠脫穎而出。

在被 Google 拒絕以後,我得到了兩樣東西,並進行了為期一年的休假。第一件東西是澳大利亞商務編號(ABN),我用它來提供數學與科學補習課程,以及技術工作合同。我獲得的另一樣東西是一張大學科技圖書館的借書證。我當時並不打算再次去參加 Google 的面試,但是那次的面試經歷告訴我還有很多東西是我所不知道的。我就在圖書館開設課程給大家做輔導,並在期間閱讀書籍。順便說一句,有些人認為我為我的補習業務所做的所有這些財務工作和其他東西很奇怪,而大多數補習老師都只收現金。但是我學到了許多對我日後生活很有幫助的東西,所以我一點兒都不後悔。

2009 年,我根據一個叫 Persi Diaconis 的魔術師轉行為數學家的作品,進行了一個數學榮譽課程(也就是學士學位四年級)。計算機科學系讓我選修他們的一個演算法單元作為其中的一部分。

就像我所說的那樣,我本來並沒有打算再去 Google 面試,但是讓我快速地講講這是怎麼發生的。我從高中就開始學習日語,因此在 2012 年,我決定嘗試在東京生活。這基本上行得通,除了我犯了一個相當大的錯誤 —— 我沒有任何日語方面的紙質資質證明,因此很難獲得工作面試。最終,我的一個已經被 Google 錄用的朋友建議我再試一次。與 Google 所有的辦事處一樣, Google 東京的官方商務語言是英語,因此他們不要求我具有日語資質證明。

Google 面試,再一次

我的朋友向 Google HR 推薦了我。這絕對有幫助,但是如果你自己得到了被推薦的機會,也不要太過於興奮。它所能夠確保的是你的簡歷會被注意到(不是小事)並且免去一次電話面試,但你仍然得通過剩下的電話面試和現場面試。

這一次我用來自 Project EulerGoogle CodeJam 的題進行練習。電話面試過程中,我不得不在 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.

我的首個面試非常糟糕。我的腦子僵住了。我知道我能夠解出那些題目,但是直到面試官走出房間我才想出答案。我立刻就感到很放鬆,並且意識到這是一個三元搜索問題。這是在是很令人沮喪,但是我覺得繼續前進,看看剩下的面試進展如何。

其中的兩道面試題很糟糕。其中之一直至今日仍然是我遇到過的最糟糕的面試問題。面試官說:「你用同一輸入運行一個程序兩次,得到了兩個不同的結果。告訴我這是為什麼。」我回答道:「當這種情況在現代計算機上發生而且並不在我的預期之中時,通常是競態條件。」他只說:「不,這不是競態條件。」然後看著我等著我的下一個回答。如果他有興趣討論一下的話,這個問題本該是一個很棒的問題,但是很顯然他實際上只想玩「猜猜神秘數」。對於我所說的幾乎全部內容,他只是回答:「不。」顯然,該程序完全是確定性的,不存儲任何狀態,並且不依賴於環境(例如磁碟或是實時時鐘),但卻在每次執行時都給出不同的結果。我懷疑我們對於「被存儲的狀態」或是「環境」的含義還是某些東西有著不同的理解,但是我無法區分。有一次(變得絕望了)我試著問電子元件的溫度變化是否會有影響,而他說:「不,那會是一個競態條件,我已經告訴過你這不是競態條件了。」最終,面試結束了,而我仍然不知道那個秘密數字是什麼。

我講這個故事的原因是,我聽說過許多更為平淡的恐怖故事,用以證明面試官是憎惡面試者的壞人。然而,與流行的刻板印象所相反的是,當天的大多數面試基本上都還可以,面試官也很友好並且很尊重人。面試也著實很困難,因此最好減少面試官的工作量。希望那個「猜數字」面試官從 Google HR 那裡得到的反饋是,他的問題對於作出聘用決定沒什麼幫助。

這次,面試帶來了一份要約,但是有一個小問題:這份工作在悉尼,擔任站點可靠性工程師(SRE)。我以前從未聽說過 SRE,但是我和一位悉尼的資深 SRE 通了電話,他解釋說他注意到了我在天然氣行業從事嵌入式工程的經歷,並且認為 SRE 會和適合我,因為同樣強調可靠性與擬合緊密約束。

在東京花了大約一年時間來建立起自己的生活,我不想拋棄一切然後搬到悉尼,但是我絕不可能會拒絕一份來自 Google 的要約。與招聘人員交談時,我確實犯了一個非常愚蠢的錯誤:我被問到當時能賺多少錢,然後我就脫口而出。別這麼做。這意味著不管在面試中發生了什麼事情,或是你上一份工作中被底薪了多少,或者其它什麼。你可能會被拒絕,或者會在原來的薪水基礎上得到一些象徵性的提升,並且如果你試圖進一步協商,會被認為瘋狂而又不合理。就我而言,我的收入甚至遠遠低於 Google 的入門級職位。我無法肯定地說全是這樣,但是在 2013 年我搬到了悉尼,在 Google Maps 成為了一名新畢業生級別的 SRE。

悉尼的 Google Maps SRE

像 Maps 這樣的產品實際上是若干個軟體項目,每個都有自己的開發人員團隊。甚至諸如路線查找之類的功能實際上也是多個軟體項目 —— 從交通時刻表數據收集,到線路計算,再到結果渲染,等等等等。 SRE 的工作包含兩個方面:一方面是為各個項目提供待命,實時響應任何生產事故;另一方面(在無需救火時)則是將生產事故中所積攢的經驗應用到其他項目中去,並且發現其中可能出錯的方式,或是發現使其性能更好的機會。Google 的 SRE 還需要像開發人員的內部諮詢小組一樣,對部署實踐、自動化、監控或是類似的問題提供諮詢。

這項工作相當緊張。作為一個團隊,我們每周至少需要處理一次生產事故,否則就要為更多的服務提供支持。每個禮拜,悉尼的所有 SRE 都會聚在一起,交流發生過的故障事件或是有關如何使事情更好地運轉的新技巧。學習曲線的感覺就像是再次成為了一名本科生。

我有時會感到震驚,聽說我選擇離開 Google 的人會問:「但是你不會想念那些福利嗎?!」物質上的福利(例如伙食等等)絕對很棒,但是它們是你可以買到的東西,因此,不,它們不是我所想念的東西。如果你問我所想念的是什麼,我會說是在那裡工作的人們。與你可能聽說過的不同,傲慢的人不喜歡在 Google 之類的地方工作。有一個臭名昭著的故事,一個自戀的人在 Google 找了份工作,並假裝自己是各方面的頂級專家,讓自己尷尬不已。他待了不到半年就離開了。總的來說,與我工作過的其他地方相比,這裡的文化在傲慢、指責以及政治方面很少。另一方面,Google 並沒有壟斷好同事。

不過,有一種公司政治是個大問題。晉陞需要「展示影響」,而眾所周知的是,要做到這一點最簡單的方法是發布一些新事物(不是惟一的方法,但是最簡單)。結果是 Googler 們比起改進現有的解決方案,對於推廣他們自己內測品質的原型方案更感興趣。在 SRE 之間,我們經常開玩笑說, Google 內部有兩種軟體:一種是老的東西,工作得很好,但已經廢棄了,甚至連考慮使用都是不夠谷歌化的;另一種是熱門的新東西,儘管它們還不能用,但卻是今天 100% 可以使用的官方工具。作為 SRE,我們經常親眼看到新的熱點事物出了什麼問題(有時甚至在沒出 alpha 之前它就已經成了過時的舊東西)。(我此前已經對這類事物進行了更為深入的討論。

這不是我們這些憤世疾俗的 SRE 所想像的東西;這在公司中被公認為是一個問題,而我記得有人向我保證,晉陞委員會已經開始通過維護工作等方式尋找關於其影響的證據。

晉陞申請

2015 年,在 Google 工作了兩年之後,我的經理告訴我,現在是時候申請一個高於我新畢業生水準的晉陞了。晉陞過程是每年兩次由晉陞委員會進行集中管理的。你可以先提出申請,然後加上一份對你所從事過的項目的簡短描述,再加上同事的推薦信。委員會將會進行審查,然後給你贊成或反對的意見。僅僅有你經理的推薦是不夠的,因為你的經理有想讓你獲得晉陞的動機。手下有高級別的員工有助於你自己的職業發展。

長話短說,我提交了我的申請,而委員會說不。事實上,這是個相當糟糕的拒絕。我不記得詳細的答覆了,但感覺就像是委員會在我的申請中尋找可以不屑一顧的東西。例如,我從事過的一個項目是一個內部工具,它出現了功能需求的積壓。我查看了這個項目,發現根本問題在於它已經超出了構建它的鍵值存儲,需要一個合適的資料庫。我主張切換到關係資料庫,並實現了它:模式、數據遷移、查詢、實時站點遷移等等。新查詢的速度要快得多,而且(更重要的是)可以有效地支持新功能。在進行遷移之前,我必須要解決的一個問題是大部分代碼沒有被測試所覆蓋,而這是由於大部分的代碼都不可測試。我使用依賴注入以及我此前討論過的其他技巧重構了代碼,而這使我能夠構建一組回歸測試套件。我記得這個項目被駁回主要是被評價為測試單元的編寫是「新畢業生水平的工作」。

我的經理真的很支持我,並且寫了上訴。他沒有給我看,但是我認為這是可以被縮減成 「WTF」 的若干頁(更雄辯而詳盡地論述)。以下是一些我也認為這一回復有點 「WTF」 的原因:

Google SRE 有一種「關鍵人物」的概念。一個項目的關鍵人物有兩個角色:一個是比起其他 SRE 對於軟體項目有著更為深入的了解,以便你能夠回答他們可能會提出的問題;另一個角色是作為項目本身的開發人員的第一聯絡人,以便他們的所有 SRE 問題都能得到回答。 Google 的職業階梯指南說,關鍵人物不應該處於「新畢業生水準」,而應該晉陞。正如我在申請中所寫的,我是三個項目的關鍵人物。

我的關鍵人物經歷使得想要找到同意支持我的晉陞申請的資深開發人員很容易。當他們發現我是新畢業生級別時都十分震驚。他們都同意支持我的申請,認可我已經處在了一個更高的級別。

在我的申請之中,我提到曾擔任過一組新畢業實習生的導師。當我提出申請時,他們之中的許多人都已經被聘用為了正式僱員。我足夠資深,可以去擔任他們的導師,但是還絕不足以晉陞到比他們更高的級別。

給我經理上訴的回復與最初的審查截然不同。這次,我「大大超出了對於我『新畢業生』級別工作的期望」,但是問題在於他們需要稍多一些時間來確保我能夠晉陞到新畢業生加一的級別。我被告知在接下來的 6 個月時間裡,倘若我能夠繼續超出預期,直到下一個晉陞周期,也許那時我就會得到晉陞。上訴結束了;這就是最終結果。

我寫了一封電子郵件,表示我要採取另一種選擇。就像許多科技公司一樣, Google 也有員工持股計劃。在開始工作時,你會得到一筆象徵性的補助金,而在各個「投資」里程碑時刻,你會收到真正的股份。我的下一次股票授予是在幾個月之後。從那以後,我將不再為 Google 工作。

我離開的原因

任何辭職的決定並不容易,而某天你或許會面臨同樣的抉擇。以下是一些有助於我作出決定的因素。(我在以前的一篇貼子里對一些這類想法進行了更深入的解釋。

如果你思考一下,考慮到我並不是字面意義上真正的應屆畢業生, 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 工作,一家政府建立的面向孩子們的道路安全網站。那裡的薪水較之於 Google 是一個巨大的縮減,尤其是考慮到這是我幾個月以來的第一份工作。但是,你知道,我真的很享受這個項目。當然了,它不像 Google 那麼「酷」,而且可能一些學校里的孩子也不覺得它酷。另一方面,在 Google,我只是機器中的一個螺絲釘。 Safety Town 有一個小團隊,每個人都扮演著至關重要的角色。在 Safety Town 項目中,我是後端工程師, Safety Town 當時是我唯一需要費心的事情。而且可能一些孩子已經在這個網站上學到了一兩件有關道路安全的事情。從那以後,我做了很多項目,大多數都更大,但是我仍然會向人們展示 Safety Town。

Screenshot of Safety Town home page, owned by Australian NSW government.

我記得 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 選題:lujun9972 譯者:JonnieWayy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國