編按:本文原以英文寫成,由本站譯為中文。
如果你想在矽谷找到優秀的軟體工程師,那你就得面對這個現實:99%的招募過程,幾乎不可避免會與Leetcode[footnote]譯注:LeetCode是一家專門提供各種程式與演算法考古題庫的網站。[/footnote]考古題網站打交道。以我所知而言,除了極少數的例外,我認識的軟體開發者在找工作、開始面試之前,都會花上至少一個月時間來鑽研考古題。
想當軟體工程師,也得考前大猜題
投身軟體開發的這些年來,我一直很討厭這種程式寫作測試的方式,也不願意這麼做;但到最後,我還是不得不依賴考古題庫。
平心而論,考古題本身沒有任何問題;我覺得有問題的是,有太多軟體公司過於重視用考古題篩選應徵者。這讓我不得不從各方面反思一個問題:矽谷這些大公司,到底想要招募什麼樣的員工?
以考古題篩選出來的應徵者,真的是矽谷科技公司想找的理想員工嗎?
不妨想一下,這些演算法的試題,想要考出哪些東西?會是什麼樣的應徵者能夠通過考試?這樣找到的人才,和科技公司真正想招募的理想員工,到底會有多大的差距?我個人的答案是:透過這樣的考試找進來的員工,不但擅於背誦記憶、聰明才智足以掌握各類困難的演算法,也能禁得起長時間的練習。
說來有趣,我就是這樣長大的;因為這正是東亞各國教育體系每天訓練學生的方式。
台灣和美國的教育,差別真有那麼大?
我在台灣出生長大,29歲才離開。在求學過程中,大人不斷告誡:未來如果想要謀得理想工作,就得用功讀書,繳出優秀的成績單。為了得到好成績,就得長時間記誦課文、不斷練習,直到能夠輕易做好題目、通過一次又一次的考試。
在此同時,大家也說美國的教育理念與台灣完全不同:更加著重開放性的思考、敢於挑戰權威、更注重分工合作。台灣的整個教育體系,目前也正在模倣美國的這套教育理想,所以實驗學校如雨後春筍般出現,也有諸如多元入學方案等變革。
美國軟體公司找軟體人才的方式,和東亞各國訓練學生的做法是相同的。
當我六年前來到美國時,我的確處處感受到文化衝擊。但當我開始應徵工作時,感受到的衝擊更是強烈:我發現要取得這個所謂世上最高薪的工作之一,需要的是長時間的練習,確保你在面試時,能完美無缺的在白板上寫出正確解答。
這不禁讓我反思:台灣和美國的教育方式,到底有什麼差異?這就是我的「考古題」問題,而且至今我沒有好的答案。
考試與實務,完全不同
我真的不喜歡為了面試而花大把時間準備考題,因為我根本就不是這樣工作的。
在實務上,大多數的演算法問題,只要Google一下就能找到解答,而且還有很多開源程式庫可以用。
不過,如果真的要我靠考古題準備考試,我也沒在怕。
因為,我們東亞學生都是這樣被訓練出來的。
(譯/施典志)