在 Google 工作能學到哪些不一樣的東西?
原作者:@王詠剛來源:Google Cache轉載已經過自我審查,審查策略包括但不僅限於:1. 當地法律法規;2. 知乎社區管理規定。轉載包含自我審查,但不代表轉載者或原作者支持審查或自我審查。以下是經自我審查後的原文:我 2006 年 3 月加入 Google,2016 年 9 月離開。離開時的頭銜/職位是 Staff Software Engineer / Manager。前後 10.5 年,大致分三期:
前兩年關注 Linux 桌面搜索產品和 Google 的開源項目。
中間三年花了許多力氣在 Google 中國相關的產品上,諸如輸入法、谷歌音樂之類。
後面四五年大致都在 Knowledge Graph 的範疇內工作,這些工作和 Google 搜索、Google Now 最近幾次大幅度的變革密不可分。
其間,代碼寫了不少,團隊也帶過好幾個。除此以外,這些年還長期在 Google Doodles 團隊作為 20% 的開發人員幫忙開發那些好玩的首頁塗鴉——嗯,這是真的,好多好玩的 Doodle 裡面,都有我的一點小貢獻。
學到了啥?嗯,很多,很雜,揀最重要的三四條來說說:一、第一次真實地生活在一個差異化的世界裡國內教育氛圍向來是不喜歡差異化的,個人愛好、冒險精神、特立獨行之類的語詞,總會讓家長、老師乃至領導、官員操碎了心。從小到大,我基本生活在一個試圖將所有孩子圈養在尺子、框子、籠子里的世界;可以想像,像我這樣的 70 後一腳踏入 Google 時,會有怎樣的感慨。Google、Apple、Facebook、Twitter……對僱員來說,這些公司本身就是一種鼓勵差異化生存的大家庭、大社會。其中,Google 又總是扮演引領者的角色,這是在 Google 工作很值得驕傲的一件事。差異化的最大好處,就是你有機會認識形形色色的神奇人物,然後,當你和人生觀、生活方式、個人愛好乃至行為習慣差異巨大的人一起工作時,你會真真切切地感受到,自己生活的這個世界一點兒也不單調,這裡有太多好玩的人、好玩的事等著你去發現。在 Google,看見什麼樣的差別都不該奇怪。往小了說,身邊既有縮在角落裡悶頭寫代碼,討厭和人交流的社交恐懼症患者,也有精神煥發的社交明星。辦公室里,有帶狗上班的愛心族,有重視家庭的好爸好媽,有整夜整夜奮鬥的夢想家,有痴迷奇特愛好的技術極客……就拿愛好來說,跟我一起工作過的同事里,說起來好玩的愛好就包括:天天在車庫裡打造奇形怪狀的自行車,休一個無薪假期去幫別人競選總統,每個周末都跑到一個從沒去過的地方留下到此一游照,研究古音韻學,出遠海調查海洋生物,長期倒賣二手攝影器材,寫科幻小說,嘗試大氣層外跳傘並打破世界紀錄……當然,要尊重差異化,你就沒法阻止任何人從早睡到晚然後每天只花兩個小時幹完別人十二個小時才能幹完的活兒。
往大了說,Google 對 LGBT 群體的支持眾所皆知。我當初更多地將這種支持理解為「政治正確」層面的東西。沒過多少時間,我就知道我的理解有多麼膚淺。有一次,Google 舊金山辦公室一對男同在公司餐廳的浪漫求婚視頻廣為傳播,感動了許多同事。事後我才想起,自己曾在矽谷一次會議上,見過那對幸福戀人中的一個。另有一次,自己所在的整個團隊收到了一位高管宣布自己性別改變的郵件,說從那天開始,大家需要稱呼他為「她」。與許多人理解的相反,這些發生在身邊的事情並沒有時時提醒你 LGBT 群體的存在,反之,經歷愈多,你會愈加淡化對他們的注意——他們或她們就是人類的普通成員,與你我並沒有太大的分別。去年在 YouTube 上追看 Google 推介的紀錄片 HUMAN 時,我已經很清楚,Diversity 這個詞早已是自己血液的一部分,我的大腦與紀錄片製作者的大腦之間,完全沒有任何隔閡。那時,我會對著屏幕上一張張陌生的面孔陷入冥想。我覺得,這個世界最可笑的一件事就是人類進化明明得益於基因與性格的差異,許多人竟會嘲笑別人與自己的不同之處,並竭力迫使他人改變,恨不得全世界的人都如自己一般固執、愚昧。性取向如此,戀愛、婚姻、家庭、工作、事業無不如此。Google 員工經常面臨一個典型的兩難困境:因為許多同事早早離開 Google 去融資、創業、上市、發財,像我這樣安心在 Google 工作了十年的普通工程師就變成了另類——當面問我「為什麼還沒離開 Google」的人,他們眼睛裡鄙夷的目光藏都藏不住;反過來,在家人眼中,我打算離開 Google 的舉動無異於自己砸碎金飯碗,放著穩定的收入和豐厚的福利不要,非要和不確定性為伍。其實,如果懂得「多樣性」的重要,這種左右兩難的困局就不再成立。既然有人選擇快節奏和世俗生活,為什麼我就不能辭了職,慢悠悠地隨著自己的興趣,由著性子,從不同的角度理解這個世界與自我的關係?為什麼「慢生活」就必須是一種逃避?宇宙很大,人很渺小。安全感是扯淡,特立獨行地活著才最重要。二、看技術的心態完全不同了
這個主要是說我自己。到 Google 以前,我在國內做銀行業的業務軟體研發,給工行、中行之類的大企業做軟體。這和 Google 這種面向最終用戶的互聯網背景是有天壤之別的。
以前看待技術,覺得是身外之物,是工具,是磚木,是用來解決用戶需求的必需品。這個心態其實也沒什麼錯,但不自覺地就把自己放在技術追隨者的位置上了。
那時的我,很多時間都拚命在了解、學習和追趕新技術,生怕落伍。有時會在 CSDN 寫技術文章,也主要是因為 CSDN 的追隨者氛圍最強烈。從這個語言追到那個語言,從這個框架追到那個框架,從這個模式追到那個模式,從這個平台追到那個平台……根本停不下來。那時的我只是個技術的「用戶」,就像搬磚蓋房子,如果不天天關心今年流行什麼材質的磚,明年流行什麼樣的房子架構,後年流行什麼樣的房子外觀,那肯定被客戶和其他程序員罵「老土」。
到 Google 擼胳膊挽袖子一忙活,才發現以前的自己狹隘了,小氣了,井底之蛙了。原來以前追的好多頂尖技術,根本就是 Google 工程師主導或參與鼓搗出來的。而且,Google 內部還藏著許多外界不大知道的神奇玩意兒。最最重要的不同是——自己現在是引領技術潮流的大團隊中的一員了。以前是不斷學別人怎麼設計房子,看別人推薦什麼材料蓋房子。現在,最頂尖的房屋設計專家、材料專家就在身邊,自己也很快就能和他們一樣指導別人蓋房子了。這種感覺,就像跳進了一個大寶藏,還清楚地知道自己並非盜賊,而是寶藏的主人。盜竊寶藏 vs. 創建寶藏,這兩者間的差別很微妙。
心態一下子大不一樣了,從技術的「用戶」變成了技術的「主人」。
比如,有段時間要解決 C++ 的 ABI 相關問題,猛想起 C++ 標準委員會的相當一部分人都是在 Google 工作的,有一年的全體大會還是在 Google 總部開的——那直接拉著既是同事也是 C++ 權威決策人的傢伙一起開會討論不就是了?類似的,Linux 內核的維護者、Python 的發明人、UNIX 的元老、Google Brain 的創建者……跟那麼多牛人在一個公司里工作,你肯定不好意思只是單方面地跟人討教,但凡有機會,你總會希望自己也像那些牛人一樣,為技術發展做點兒貢獻,哪怕只是一丁點兒。
再比如,像 MapReduce、Bigtable、TensorFlow 之類由 Google 原創、對業界影響深遠的技術,在 Google 內部可不僅僅是身外的工具,它們都是 Google 工程師這個大集體的作品和驕傲。因為大家都是主人,對哪些東西不爽,可以去鼓搗源代碼,可以去提交自己的補丁或者新功能,甚至推翻重做。別小瞧這推翻重做,雖然很難很難,因為你得一邊說服老闆和用戶,一邊找到足夠的開發人手,但事實上, Google 內部重新發明一遍、兩遍、三遍的框架、工具、庫、介面、服務比比皆是。一言不合就動手做個新版本、新系統,這毛病既帶來數不清的流程混亂,也帶來一山又比一山高的良性競爭——表面的混亂之下,良性競爭引發的技術飛躍常常超出想像。在 Google,工程師有好幾萬,不能說每個人都渴望做技術的主人,但躊躇滿志的大有人在。因為 Google 走在技術最前沿,有追求的工程師確實沒臉當個純粹的技術追隨者。當然,我的意思不是說 Google 里沒人去做那些不那麼酷的「苦力活兒」,而是說大多數人都有個爭強好勝的心態,即便是做相對簡單的技術工作,也時常會想想怎麼能做出世界一流的效果來。拿面試來說,有個工程師想出了一道與月球相關的面試題,把演算法、編程、設計、維護問題放在太陽系的大背景下,層層追問。我在一次內部面試技術培訓時拿這道題當過樣例。結果,參加討論的工程師表達了截然相反的兩種意見,有人說這題設計精妙如天馬行空,另一些人則批評這題目遠離實際如鏡花水月。其實,Google 的技術宅們幾乎每天都在深入實際與憧憬未來這兩個極端的對位、矛盾、轉化中工作。常說的「仰望星空、腳踏實地」遠不能形容 Google 工程師的兩面性。一方面,工程師們深知自己的代碼是如何參與了這個地球乃至這個星系裡最前衛、最大膽的計算機系統,如何為諸如十年後的搜索引擎、擁有人工智慧的手機或機器人、量子計算機、基因工程、無人駕駛汽車等貢獻力量;另一方面,工程師們「極客」和「宅」的一面常常在外人難以注意的工作細節里表露無遺——這裡有十數年如一日致力於優化編譯器的語言高手,有設計最好的代碼審讀系統的工具專家,有親自動手實現軟硬體原型的技術總監,有堅持為地球上每一種人類語言提供輸入輸出解決方案的國際化團隊……這是心態的差別,或者說,是技術境界的差別,烙在 Google 工程師的基因里,旁人想學也未必學得到。
三、「管理」二字的意義完全不同了
在 Google,有時候工程師很難管理,因為大多數人都想法新、主意多、眼光高、個性強。在 Google,有時候工程師也很容易管理,只要鼓勵他們把一件看似普通的事兒做出世界級的水準,他們自己就有足夠優秀的執行力,用不著督促。
在 Google 做技術經理帶團隊,和我以前在其他公司帶團隊,完全是兩碼事。這也許和技術團隊的平均水平有關,但根本還是管理境界的問題。
記得以前在別的公司,花大力氣搞開發流程管理,現在想想,大多是繁文縟節,程式化,教條化,最極端的像 ISO9000 之類的流程認證,弄得所有人筋疲力盡,效果未必有多好。
到了 Google,發現一個秘訣,再多的規章制度,再多的流程,不如一套好用的工具來得有效。比如 Code Style 和 Code Review,以前能把技術經理煩死,三令五申也執行不下去,頂多三天熱度之後,大家就陽奉陰違了。在 Google,這件事不完全是個制度的問題。剛進來的工程師沒有過 Readability Review,他就沒法方便地自主提交代碼,這是代碼管理工具設置的硬性限制。這直接把工程師們送到評審委員會那裡接受「再教育」,沒錯,真的是「再教育」,連 Python 之父 Guido van Rossum 也花了挺大力氣才通過了 Python 語言代碼的 Readability Review。接下來,提交新代碼前,各種靜態、動態檢查工具自動運行,幫你報出一系列風格錯誤、編譯錯誤、單元測試錯誤和簡單的邏輯錯誤,你得先依著工具的提示,把這些低級別錯誤改一遍,然後才進入 Peer Review 的環節。整個 Code Review 都在非常方便的網頁工具里完成,寫代碼的和審閱代碼的人可以方便地交互、討論,甚至在線修改代碼。工具的「強制性」保證了制度的執行,工具的「便捷性」最大程度減輕了工程師執行制度的負擔,二者相輔相成。當然,Google 內部也不乏對制度敷衍了事的,但相對其他公司,Google 的確做得更好些。
說到管理,在 Google 帶技術團隊的其實都苦哈哈的。我就先後兩次把團隊交給別人帶,自己樂得去做些單純的代碼工作。道理很簡單,頭銜是 Manager,可你沒法高高在上指手畫腳,Google 最好的團隊帶頭人都是沖在第一線帶著大家一起干,除了主動包攬大家不想乾的臟活、累活、雜活之外,還要做管理者必須的非技術工作,比如給每個人寫評語、定獎金,幫每個人申請升職,跟心理負擔重的談心……一個人做兩份工,吃力不討好,對團隊成員的晉陞也沒有決定權(這事兒也挺神的),這種 Manager 的活兒,誰願意干誰干去,我是不大喜歡乾的。不過,不喜歡歸不喜歡,Google 這種挺不一樣的管理既顯著混亂無序,又運行良好,確實很神奇。
嚴格地說,聰明人在一起,只需要激勵,不需要管理,Google 的辦法主要也是強調這一點。
必須坦白,我加入 Google 時,工程師才三千人上下,無序管理、自發管理、扁平管理佔主流。Google 越來越大以後,大公司病也如約而至。流程越來越複雜,層級越來越多,職權重疊和模糊越來越嚴重,不同團隊之間管理風格的差異也越來越大。但即便如此,Google 基因里那種蔑視陳規、抵制辦公室政治、抗拒繁文縟節的管理風格還是能在許多團隊帶頭人的身上找到——這是 Google 肌體里的健康因素,活力因子,彌足珍貴。
順便說一句,最近中文圈子熱傳不寫代碼/不會寫代碼的 CTO 一事,許多 Google 工程師出身的 CEO/CTO 都在朋友圈裡曬自己寫的代碼,以表明態度。我自己對技術管理者寫不寫代碼沒啥傾向,寫不寫都可以是好的管理者,但如果「不會寫代碼」還以此為榮,就完全沒法接受,這個是底線。我在 Google 面試了不少 Manager 和 Director 的候選人,都考過對方寫代碼或者至少討論一段代碼的能力——不是要他一定在管理過程中寫代碼,而是怕他和 Google 工程師沒法交流,和 Google 技術基因沒法共存。
在 Google 做技術管理,學不到啥成文的規矩,能學到的其實主要靠「悟」。
四、看待職業生涯的心態也完全不同了
這個要因人而異,很多人來 Google 還是奔著一份優越的薪資待遇來的。所以,這裡只談我自己。
有一種感覺是我開始在 Google 工作才有的。而且,那感覺越來越清晰,越來越吸引人,以至於十年下來,我幾乎把這種感覺視為我工作時的第一推動力了。怎麼說呢,這種感覺可能很多人都有,描述出來大概是:
在整個職業生涯里,至少要有一部分(哪怕是一小部分)時間,可以比較純粹地為了開心而工作。一家公司是否適合自己,主要就是看這家公司能不能,或者在多大程度上能滿足這個需求。
我在 Google 做不同項目,有時很吃力,有時很痛苦,有時很緊張,當然有時也會開心。但普通項目沒法讓我比較純粹地享受那種開心、愉悅的幸福感,於是乎,我在最近五六年里,把我的 20% 時間,都投入到了 Google Doodles 這個既有趣,也適合我的項目里。Doodle,嗯,首頁塗鴉,純粹為了讓用戶開心而設立的項目。這項目既需要畫畫的藝術家,也需要寫動畫、音效和遊戲代碼的成員,不但好玩,還特別有品,特別有文化。因為參與其中,我有機會跟 Google 總部那些厲害的藝術家一起合作,真的開心。
有一次做 Google 生日的 Doodle,大家選中的是美國小孩子在生日常玩的一種叫 Pi?ata 的遊戲。在電腦里實現這樣的遊戲,需要簡潔的美術風格,支持 JavaScript 的物理引擎,還有平滑、高效的動畫引擎,這些是技術細節,不展開談。可在技術之外,我們這群追求開心的人硬是嚷著要親自玩一次現實里的 Pi?ata。那次在 Mountain View,就在 Google 總部有一隻霸王龍骨架的那片空地上,我們把一個真的 Pi?ata 掛在樹上,輪流用竹竿去打,直到打出一地的糖果來。十幾個藝術家和工程師開心得像小孩子。
就是很純粹的,很簡單的,很開心的那種體驗。無論工作里有多少煩惱,至少要給自己保留這樣一塊空間,叫心情家園也好,叫隨便什麼名字也好,哪怕再小,也得有那麼一個。對我來說,在參與 Doodles 項目的過程里,可以和 Doodles 紀念的偉大科學家、藝術家們跨時空交流,可以和正在設計、製作的小動畫、小遊戲隨時互動,可以預測到最終用戶看到每個 Doodle 時的快樂,這的確是一件超贊的事。
很幸運,Google 可以為我這樣追求開心的人提供合適的機會。很不幸,(我確切地知道)不少公司從不考慮員工的這種需求。這大概也是公司基因決定的事,沒法強求。正因為有了在 Google 的十年工作經歷,我才會毫不猶豫地將職業生涯中最重要的追求定義為「開心」。
看到大家不齒於題主(也是最高票答主)自問自答;這裡友情提示一下:最高贊答主是google Staff Software Engineer;按照微軟SDE到google SDE mapping:63 at Microsoft = Above median SWE III at Google65 at Microsoft = Above median Senior at Google66-67 at Microsoft = Staff at Google答主大概高輪子4到5級,高 叛逆者3到4級;秒殺知乎上一眾技術網紅那是不用說了,鑒於知乎快要淪為low乎的現在,關心技術的各位可以關注一下。
推薦閱讀:
※使用全套谷歌服務是種什麼樣的體驗?
※【谷歌正式宣布在中國設立AI中心】李飛飛:我和我的團隊今天回到中國
※谷歌真的毫不在乎中國市場么?
※匯總:中國谷歌開發者重要網站(不定期更新)