你的GitHub爆款項目,面試官可能問都不問

職場 發佈 2020-01-06T17:19:25+00:00

選自towardsdatascience作者:Haebichan Jung參與:Panda W、張倩簡歷上寫了一堆成功的項目,在面試官那兒真的管用嗎?過來人表示:未必。

選自towardsdatascience

作者:Haebichan Jung

參與:Panda W、張倩

簡歷上寫了一堆成功的項目,在面試官那兒真的管用嗎?過來人表示:未必。近日,Towards Data Science 項目主管和 Recurly 數據科學家 Haebichan Jung 發文介紹了他的經歷。他表示,項目做得多、做得好可能在簡歷篩選階段比較有用,但面試官可能根本不關心你的項目,而是通過「智力測驗」決定你的去留。


項目心態
雄心勃勃的數據科學家是如何得到高薪職位的?其實人們對此有很大的誤解,認為這和做過的項目有關。 這裡所說的「項目」是指某种放在 Jupyter Notebook 上的最新機器學習或深度學習算法,而且會被上傳到 GitHub。你可能希望藉此得到面試官的好評。 但猜猜結果如何?那些面試官實際上不會讀多少你的個人項目代碼。如果你認為項目很重要,你就有我所說的「項目心態」。

項目心態:(名詞)心裡想著做的機器學習項目越多,簡歷里的項目越豐富,獲得高薪數據科學職位的可能就越大;但實際上,這不會讓很多人覺得你很厲害。

為什麼這麼說呢?因為我之前就是這樣的蠢蛋。我之前就花了很多寶貴的時間來做各種不同的項目,以便擴展我的「個人履歷」,有些項目還得到了數據領域中某些傑出人物的認可。

但現在,作為舊金山的一位數據科學家,我發現自己做錯了,更糟糕的是還有很多人會步我的後塵。這篇文章是想要向你發出項目方面的警報,告訴你項目究竟能給你提供多少幫助(提前預警:沒多少)。 PS:請記住,我只申請了加州舊金山的數據科學家崗位。因此我的意見可能與你的地理位置或所申請的崗位並不相符。而且這也只是我一個人的意見(實際上是兩個人,後面會說到)。但這個故事裡面有些東西是普適的,因為我看到世界上很多人都被「項目」所帶來的(錯誤的)吸引力和潛力所折服。
項目火得一塌糊塗,但面試官根本不 care


面試之前,先花幾周做個項目

在我申請數據科學崗位之前,我花了 4-5 周的時間來做自己的項目,因為那時候我覺得這才是正確的做法。作為一位專業鋼琴師,我想做一些有關音樂的東西。這讓我注意到了神經網絡,尤其是 LSTM,我想用它來生成新音樂。 我花了整整兩周時間來閱讀有關這一主題的學術論文,現在回過頭看,我大概懂了其中 30%。但在那 30% 中,有些東西真的讓人很困擾。我覺得某些研究 AI 生成曲調的研究者並沒有對音樂的基礎知識有深度的了解。你可以看出來這一點,因為他們使用了非常複雜的神經網絡架構來創造新聲音,但這些架構並不能反映真正的音樂家作曲的方式。

使用 LSTM 創造音樂的學術研究示例
這讓我深感困擾,於是我決定基於隱馬爾可夫模型從頭創建一個算法。我寫了大約 800 行純 Python 代碼,開發出了我自己的音樂生成算法。我稱之為 Pop Music Maker:https://github.com/haebichan/PopMusicMaker。Pop Music Maker 以音樂數據為輸入,分解出其中的音符,然後尋找這些音符之間的統計學關係,最後基於這些統計情況重新創建一首全新的流行音樂曲。

Pop Music Maker 的架構基礎
項目太火,網站崩潰
我在 TowardsDataScience.com 發了一篇文章介紹我的項目。不過幾天時間,這篇文章就火了。每天都有數千人閱讀這篇文章,尤其是當某人將我的文章發到了 HackerNews 之後。當我意識到這篇文章火了時,它已經在 Twitter 和 LinkedIn 上擴散開來。然後,Numpy 的創造者和 Anaconda 的創始人 Travis Oliphant 以及 O』Reilly Media 的 Ben Lorica 都在他們的社交媒體上分享了我的內容。 隨著我的項目越來越為人所知,每天都有數百人通過我建的一個 flask 網站使用我的算法。這導致我的網站不斷崩潰,因為我部署代碼所用的 AWS EC2 實例太小了,不足以處理這麼大的流量。網上有些人開始指責我是騙子,因為他們想試試我的算法,卻發現網站根本打不開。
這就是我的那篇熱門文章:https://towardsdatascience.com/making-music-when-simple-probabilities-outperform-deep-learning-75f4ee1b8e69 不久之後,這些批評很快就在許多社交媒體上發展成了火力全開的爭論。某些擁有博士學位的研究者憤怒地指出我使用的基於貝葉斯的方法完全就是錯的。另一些人則為我辯解,為我的工作做辯護(包括 Ben Lorica)。簡單來說,我在網際網路的某些地方重新點燃了「貝葉斯派 vs 頻率統計學派」的聖戰。 起初,我決定向那些因為某些原因而感到被冒犯的人道歉,我也禮貌地問了他們我該如何改進我的方法。但道了幾天歉之後,我再也受不了了。這場爭辯讓人心力交瘁,我只想讓自己躲開網際網路。我關掉了我的所有電子設備。

然而,應聘時沒人問我項目的事情
你可能會覺得儘管有爭議,但如果把這個項目放在我的簡歷中,定能助我找到數據科學工作。但結果是:並沒有。除了某個小創業公司的一個人問過我,其他人沒人在乎。從宏觀上來看,我所面對的炙熱火焰只是灣區科技界的颶風吹過來的一點小火星而已。 更重要的是,招聘委員會的成員並不會在這些項目上對我進行測試。因為招聘流程不是看你做過了多少項目。但我看到很多數據科學工作的應聘者卻會這麼想。 這可不是我的一家之言,在採訪 DoorDash 的 Jeffrey Li 的過程中,他也說到了在那些雄心勃勃的數據科學家身上看到的缺點: 「在大多數數據科學家身上,我見過的最大缺點是將機器學習模型與商業效果聯繫起來。所以,很多非常非常聰明的人會打造出這種非常複雜的五層神經網絡。它能做出很好的預測,分數也非常高。但當我們深究這個特定模型的商業效果時,他們通常又難以作答。」 如果數據科學招聘不是基於項目,又是基於什麼呢?基於招聘方所說的「智力測試(Intelligence Testing)」。
臭名昭著的「智力測試」

我並不喜歡「智力」這個詞,因為這個詞暗含了生理稟賦的意思(你要麼有,要麼就沒有)。但不幸的是,我在技術招聘世界裡經常(而且是隱秘地)見到這個詞。我總是聽見有人以某種形式在背後說:「對這個技術工作來說,那個人智力不夠/不夠聰明。」我最早是在加州灣區的軟體工程師好友那裡聽到這種說法的。 之前,在我看來,這樣的說法非常具有壓迫性,而且很空洞。但是,在長時間思考了科技界所用的「智力」一詞之後,我開始理解其實際的含義了。了解了它的含義之後,我發現這根本就與「生理」無關——也就是說任何人都可以通過充分的準備來提升。更重要的是,我發現了順利通過數據科學面試的秘訣。 智力測試是所有招聘流程的基礎。這是技術問題測試、帶回家檢驗開發能力以及面試問題的基礎。智力測試有四大主要元素,即:

  • 分析思維
  • 變量提取
  • 邊緣案例檢測
  • 流程優化

前面三個是最重要的,擁有第四個會錦上添花。而且當招聘者在前三個方面對你有所了解之後,他們會問到第四個。這四個方面都是為了了解你在未來的技術崗位上的潛力和能力。 簡要說明:下面四個技能非常重要,但是理解統計學、寫代碼和 SQL 也很重要。我覺得這是每個人都知道的顯而易見的事情,所以這裡就不談那些知識基礎了。
分析思維
分析思維是指將大問題分解成容易解決的不同部分以逐個解決的能力。簡單來說。這是要建立一幅心智路線圖,其中包含多個檢查點,最終達成最後的解決方案。 衡量這部分智力的方式要麼是通過實際的編碼難題,要麼是通過理論上的業務/產品問題。面試官會向你展示一個乍看之下感覺很開放的問題。這是故意的,因為這個問題的答案並不是測試的目的。所以你的解決方案是否真的有效其實無關緊要。這個問題的重點是評估你協調多步計劃來解決複雜問題的能力。 為什麼要測試這種能力呢?因為在實際的數據科學工作中,有的問題是非常複雜的,難以通過一步到位的方法得到解決方案。因此必須制定戰略上的路線圖,要列出每一步對業務和技術方案的影響,有哪些優點和缺點。要做到這一點,數據科學家必須具備一個靈活、有戰略思維的頭腦,才能得到有可識別的檢查點的各種有效的解決方案。 對於想要提升這項技能的應聘者而言,可以去解決儘可能多的 Leetcode 問題。也要讀讀數據科學產品的問題。下面是一個產品問題示例:

一家外賣公司正在發布一款有新 UI 的新應用。其目標是通過增加外賣員的里程數來提升他們的收入。請給出一種測試策略,以便了解這款新應用是否比舊應用更好。


變量提取
變量提取是指為了解決手頭上的問題,你能夠想出多少個相關的變量。舉個例子,給你這樣一個場景:「在一棟建築物中有兩台電梯,一些人抱怨說其中一台比另一台慢。你需要什麼才能確定這些抱怨是否合理?」 這類思想實驗通常是由不太了解數據科學的產品/非數據人員提出,他們想要藉此了解你的「智力」。這裡的智力是指你是否有能力構想出解決這個問題的變量(能不能想到面試官自己所想到的那些)。 但你怎樣才能和一個陌生人想得一樣呢?但好在(我認為)這些實驗中 99% 的變量都屬於這幾大類:

1. 時間(尖峰時間是否影響電梯的快慢?)

2. 位置(也許某些樓層使用電梯的人比其它樓層多?)

3. 技術(也許電梯存在一個技術問題,這在人的內在感知之外。)

4. 用戶統計(建築物中有什麼人?訪客會使用一個電梯而工作者則使用另一個電梯嗎?)

變量提取為什麼很重要?因為其直指實驗的核心。執行實驗需要相關的變量來進行測試,如果你可以提出更合適的變量來提升測試的準確度,甚至超出面試官的構想,那麼這個技能將極有價值。 你可以通過研究儘可能多的不同數據來提升在這方面的智力,像是時序數據、地理位置數據等等。只要能拓展你對不同知識領域數據的了解,都值得一試。
邊緣案例檢測
邊緣案例檢測通常是在你的面試官了解完前面兩項之後出現。在足夠了解了前面兩種智力之後,面試官會給你製造一個難題。他/她會用某種方式完全推翻你為解決問題而想出的路線圖和變量。 這是面試過程中的難點,因為你會感到不安,因為你的邏輯被發現了漏洞。你要冷靜下來,仔細聽經理話語中拋出的暗示。通常來說,他們的頭腦中已經有一些答案了,你必須想辦法找到它。他們會丟出一些線索提示,能提醒你找到他們頭腦中的答案。 他們製造這樣的能使你偏離思考流程的難題是為了了解你在處理從沒遇到過的情況時表現如何。實際上,在數據科學工作流程中,你沒想到過的邊緣案例還有很多,尤其是在開發產品時。 如何練習?這個還真沒法練習。當遇到這種情況時,做個深呼吸,提出問題,搞清楚你需要做什麼,並且緊跟線索。
流程優化
最後這一項是可選的,而且如果時間足夠,通常出現在技術面試的最後。這一技能基於第一項智力測試(分析思維)。一旦你腦子裡面想出了一種特定的方法,經理就會問你還能不能想出解決這個問題的更好方法。 為什麼要這樣做?因為行業中所有數據科學工作一開始都很粗糙,需要多次疊代才能改進。但這項工作只有在第一版粗糙成果完成後才能進行。因此我覺得這個能力的優先級比不上前三個。
項目到底在什麼地方有用? 我相信項目在找工作初期還是有些作用的。在我看來,項目能解決一下問題:

1. 建立自信。很多人將完成項目看作是申請公司工作之前的必要前置步驟(內心的儀式感)。

2. 練習變量提取和優化。項目能讓你嘗試許多不同類型的數據。讓你能通過實驗工作流程來優化數據處理方式,等等。

3. 讓你有機會贏得初始招聘人員的認可。初始招聘人員的任務不是進行智力測試,而是為面試官篩選候選人,然後讓面試官去測試。項目也能讓初始招聘人員知道你對數據科學的積極性和投入。項目能幫助你很好地展示出這一點。

但經過初始的篩選後,項目的重要性就不高了。原因有三點:

1. 項目無法幫助你通過技術題測驗。

2. 項目無法為你作為數據科學家的潛力提供外部驗證——只能告訴面試官你能很好地複製或記憶已有的代碼。

3. 面試官沒有時間閱讀你一頁又一頁的筆記。他們每天都要處理幾百份申請。他們還必須管理自己的團隊——這已經足以占用他們的全部工作時間了。


重點是最後一點,你需要的外部驗證是你完成過的工作。換句話說,在你的機器學習項目上得到 83% 的 AUC 並不能為面試官了解你作為數據科學家的潛力提供多少幫助。但是,如果你說有數百人嘗試過你的機器,你展示的東西就比較有力度了。 還沒有被我說服?那最後來聽聽哥倫比亞大學數據科學研究所主任的話吧: Jeannette Wing 主任:「有些特定的解決問題的技術和方法是計算機科學家每天都要做的事情。其中包括:

1.如何設計一種算法來解決這個特定的問題

2. 如何將這個特定問題分解為更小的部分

3. 如何定義抽象層

4. 如何定義組件之間的接口

這是求解問題的技術的集合,也是實現大系統和解決大問題的方法——這就是我所說的像計算機科學家一樣思考。」 我也曾問過 IBM 一位高級數據科學家:「作為一位數據科學家,最重要的能力是什麼?」 他回答說:「IBM 的所有人都有一個共同點,就是他們都是顧問。他們需要有能力與客戶合作。他們需要與高管開會並且聰明地探討解決方案。」 原文連結:https://towardsdatascience.com/sorry-projects-dont-get-you-jobs-3e5d8e74bfdc

關鍵字: