早上蓬頭垢面、披頭散髮的起床後,匆匆刷牙洗臉。對著鏡子裡終於略顯人模人樣的自己,開始例行的自我催眠:「你是最棒的!你可以的!有考古題可以刷,總比沒有考古題可以刷好!」;「總共不過 8 、 9 百題,鐵杵也能磨成繡花針的!」;「加油!今天再多寫幾題吧!」??
你問我是在準備學測嗎?還是托福、GRE、GMAT?答案是以上皆錯——這是身為矽谷工程師面對職涯挑戰必要的「自我進修」。你問我是不是準備跳槽、馬上有面試要來了?也錯!這只是現在一般矽谷軟體工程師常見的「日常功課」。
「生命不止,刷題不息。」這是為了可能在未來幾個月後、甚至一兩年後「還未發生的面試」預作準備。至於為什麼要這麼早開始準備?請見我的上一篇文章:《矽谷的「適者生存」叢林法則:天真相信金飯碗?裁員才是家常便飯》即知原因。而如今在矽谷的每一天,這個「刷題例行工作」,更是許多不論資深或資淺的工程師,在上班時間外的「必做功課」之一。
龜兔賽跑裡,最可怕的就是不休息的兔子。而矽谷滿坑滿谷都是不休息的兔子——優秀勤奮且刻苦耐勞的菁英人才。
矽谷特異獨行的「入職考試」
7、 8 年前的矽谷,其實並不是這樣子的——那時候網路上還沒有這麼多的「考古題」。科技巨頭們大部分是「實務派」,徵人時不會考太多程式演算法,比較多的是問你曾經做過甚麼項目、用甚麼技術來做這些項目,並且看你的溝通能力和個性。
當時,只有谷歌(Google)特異獨行會考「益智題目」(brain teasers),問些稀奇古怪的問題,來測驗面試者的估算、創意、分析能力:如經典題目像是「一架波音747 飛機可以裝多少個足球」之類的。面試者必須要能迅速估算出飛機大小、足球大小,一架飛機大約可以容納體積的多少比例??等。這樣的題目並沒有標準答案,主要是看面試者如何推理和測試智商。
你問我這跟工程師有甚麼關係?還真沒有甚麼關係。但谷歌只想要智商高的天才——因為通常大部分的工作,產品經理都會先把產品要求寫好,而工程師則要用「最有效率」且「聰明」的方法完成它。
不過基本上,倒是沒有哪位工程師需要在工作中,估計「一架飛機可以裝多少足球」。連谷歌前 CEO Eric Schmit 都承認過,自己無法解答這些「益智」題目——這也成為大家一直詬病之處。後來,谷歌就不在面試裡問這樣的「益智問題」了。
「演算流」與「實務流」的兩大徵才方式
於是,矽谷的面試來到了下一個歷史階段:一派是以軟體科技業四大龍頭 “ FANG” (Facebook, Amazon, Netflix, Google)為首的 coding challenges ,專門考演算法(algorithms);另一派則是維持「實務派」,從應徵者過去的工作經驗中判斷其能力。
有趣的是,通常比較有名的大公司反而考的是「演算流」;而很多新創小公司則是「實務流」——這或許與小型公司更需要員工的「即戰力」有關。
總之,隨著採用「演算流」徵求工程師的知名大公司越來越多,考古題在網路上也越來越氾濫,其結果是要在這類「演算法流派的面試」中取得好成績,也變得越來越難:
例如,一開始公司要求應徵者做的題目「正確」即可;後來要求得用「最優法」解答;現在則是演化到「不但要做得正確、使用最優法解答,速度還要夠快!」
換言之,如果工程師想進入 ”FANG” 四巨頭工作,可得對這些演算法題目知之甚詳、有所準備才行。
考古題「不刷不行」,近年成矽谷工程師常態
現在業界最流行的「演算法考古題網站」,名為 LeetCode 。裡面從一開始的 300 多題、到現在的 900 多題,題庫爆炸性成長。裡面的題目按照難易程度分類,並且如果用戶付錢的話,還可以看到「哪些題目、是哪些大公司經常考的」,藉以縮小準備的範圍,更精確地練習那些你想進入公司的考古題。
現在中午吃飯的時候,工程師聊天的話題經常是「你刷了幾題?你刷題刷了多久?」;「我刷半年了。我現在一天可以刷四十題。」;「我刷好幾遍了。要刷到馬上寫出來才行!」??
每天利用時間刷題,連續這樣刷上幾個月到一兩年,在矽谷是司空見慣的:最近我有兩個同事離職去了優步(Uber),他們在此之前分別刷了一年和整整兩年的考古題目;另一位同事刷了半年的題,進了亞馬遜(Amazon)。
工程師不刷考古題,進得了矽谷知名大企業嗎?
為什麼這些大公司,都要用演算法題目來篩選工程師呢?原因和其現在發展規模龐大後的「人事招聘結構」有關。
通常會使用演算法題目的大公司,都有一個「中央招募流程」(central hiring process):也就是說不像一般公司,多由各部門的經理單獨按需求招人;而是由公司統一招人後、再分發到各個組裡。通常一次的工程師招聘規模,更常多達數百人。
因此這樣「統一考試」的好處,是消除裙帶關係的影響,避免招進不適任的人;並且確保能夠進入面試階段的候選人、至少都有一定的技術水準。對公司來說,招來的人才較不會參差不齊,也可以過濾掉那些講得口沫橫飛、但做不出實際成果的「嘴上工程師」。
噴砂玻璃/雕刻玻璃:噴砂(珠擊法)是針對玻璃表面進行的一種破壞性的加工方式;利用高壓氣體夾帶細小的研磨砂材顆粒(氧化鋁砂)對玻璃表面衝擊,讓表面產生像顆粒化般的凹陷使之形成霧面或侵蝕面,而達到砂面有層次或有深淺似雕刻般的效果。為求表現圖案,我們使用膠膜來遮住不需要被破壞的部分,未貼膠膜的部分則被破壞,從而得到兩種不同的層次,形成圖案;依此法,我們可將圖案分成更多的層次,進行不同層度的打擊,或加上肌里膠使打擊後的玻璃產生各個不同的層次而形成圖案。
手工刻圖:在早期,需要由人工在貼好膠膜的玻璃上直接繪圖,然後將膠膜分割開來,撕去需要噴砂部分的膠膜。
機械刻圖:現在的噴砂則不再需要人工直接在玻璃上繪圖,而是用矢量軟體,如CorelDraw、Illustrator等軟體繪制出線稿,再交由“刻字機”將膠膜刻開,再進行噴砂。
噴砂設備:主要的設備有 1.空壓機 2.噴砂機(台)或噴砂房 3.砂桶 4.噴砂鎗或噴砂嘴。
看到這裡,想必你會有個疑問:「那如果我就是天縱英明,不用刷考古題,應該也能進這些知名大公司吧?」
但實際狀況是,非常、非常、非常的困難!怎麼說呢?
矽谷業界有個「 open source 大神」,名為 Max Howell(AKA mxcl)。他可是寫 open source projects 、 homebrew 的業界赫赫有名大人物。但他曾自曝因為沒刷題,解不出來某個演算法題目,而被谷歌狠狠地拒絕——連業界知名大神不刷題都進不去,更何況一般的工程師?
當然,近年這樣有如聯考的招募方式,在矽谷業界也引起非常大的爭議。但到目前為止,這仍然在業界被廣泛使用、也被業者證明「相對有效」的大型招募方式。此外,還有另外一種巨頭們「自圓其說」的講法:「如果你連刷考古題都懶得刷,其實你大概也沒有那麼想進我們公司吧?」;「如果你真的非常想進我們公司,為什麼不花點時間準備呢?」
考古題「背好背滿」然後呢?後面還有難關
除了「演算流」和「實務派」之外,這兩年矽谷又風行一種新的面試方法:給面試者一道「自由發揮的軟體設計題目」。面試者可以先有數天的時間寫程式,然後在面試的時候,將設計出來的軟體仔細講解給面試官聽。
這等於是「實務派」面試的加強升級版:你不但要會說、會做,還要做給面試官看;同時還要回答、申辯面試官們的犀利提問!
至於題目,則大多像是:「請設計一個訂單系統」之類,倒是不至於要你寫出可以載人上火星的太空梭控制代碼。但你需要一一解釋:為什麼這樣設計?中間考慮了甚麼可能的錯誤狀況(error cases)?系統的速度優化程度???等等。
這個考試項目,就真的可以說是「照妖鏡」了:你的 coding 程度到哪、心思多麼縝密、實務設計經驗豐富程度等等,可說一覽無遺。就算你找別人代寫,面試官只要多問幾句深入的問題,馬上就穿幫了。
通常現在矽谷的巨頭公司,會用這個方式再搭配前面的「演算法題目」,確保面試者確實有一定的水準,也等於是雙重保險、層層把關。
「逆水行舟不彩繪玻璃進則退」:一邊「靠北」,一邊還是得隨時做好準備
矽谷變化萬千,連徵才、面試的方式,也在不停地推陳出新。因為人才就是軟體公司最大的資產,各公司無不絞盡腦汁,想著如何招到真正最適任、最優秀的人才。
而為了豐厚的薪水、福利,這裡的工程師也得拼了命地不斷強化自己、終身學習,以跟上時代的潮流。
矽谷的工程師們,如今總是一邊「靠北」轉職、入職面試越來越變態,大罵當初真是瞎了狗眼上了賊船??回家後還是得認命地、默默地埋頭刷題,正所謂「口嫌體正直」、也是「痛並快樂著」:
「痛」在矽谷永遠競爭壓力極大、刷題好累;「快樂」的則是一旦通過窄門、入職(轉職)成功,往往薪資和福利就是指數型成長,並且很有「脫穎而出」的成就感。
走筆至此,不能再多說了??我要去玻璃屏風刷題了!
※本文由換日線網站授權刊載,原標題為《 工程師要怎麼進矽谷的四大軟體巨頭 “FANG”?——「不廢話,先刷 900鑲嵌玻璃 道考古題再說!」》,未經同意禁止轉載
【關聯閱讀】
矽谷 10 年,有實力也得有「氣場」:我靠這三招,翻轉亞洲女生「溫柔、害羞、任勞任怨」的刻板印象
「男人國」裡的程式女孩──矽谷的性別鴻溝有多嚴重,又該如何翻轉?
作者簡介:
南加大工業工程系、賓州大學資工碩士畢業。從小夢想當作家的文藝女青年,一晃眼卻變成在全球菁英群聚的矽谷、打滾了數年的資深女工程師。熱愛美食和旅遊。現在的夢想是環遊世界,踏遍五大洲。
留言列表