preloader
心得

不要一味鼓勵軟體工程師做作品集, 建議利用面試題目確認自己學習技術的程度

這陣子在臺灣面試蠻多份工作的經驗,以及跟幾位朋友交流,覺得臺灣網路上一些人一直鼓吹有志從事軟體工程師職業的人做作品集,太誇大做作品集然後得到面試及錄取通知的效果,例如很常聽到想應徵網站前端工程師,建議做個簡單作品呈現自己有能力的說法。有自己的作品,在應徵工作時,會有機會到面試階段,而作品集常是面試過程中的一個話題而已,頂多有加分效果,就如同考試分數 0~100 分中,作品集配分比例大約佔 5%~15% 不高,最重要的仍是你主要專業技能跟特質能夠達成 85%~95% 的分數。若你有累積作品集,頂多說明你跟其他沒累積作品集、但其他條件相同的應徵者相比,你比較特別、有想法、表現出往軟體開發精進的企圖心和包裝自己過去的成果,而若是跟經驗、技術與個人特質超出你一段的競爭者比,假設競爭者都跟你一樣進入面試階段,作品集所佔的比例,依公司和面試人員喜好而不同,以公司立場看,當然要找各方面程度都是公司想要的而且能夠負擔得起的人。

公司決定要不要錄取一個人,網路上很多人及人資都會分享他們的看法,我分享自己認為的五項主要因素:

  1. 專業

  2. 過去經驗

  3. 個人特質

  4. 面試感覺

  5. 應徵者期望薪資與公司對此職務的預算

 

光是過去經驗、個人特質和面試感覺,人資或是面試人員就可以列出一堆問題詢問應徵者,像是:

A.前一份工作內容是?在團隊/開發項目中扮演的角色?

B.你的朋友都說你是一個怎麼樣的人?你最常得到的評價是?你遇過最困難的一件事是什麼?你如何克服困難?

C.你如何評價自己在工程方面的表現?請說明你對我們公司的印象與做哪些產品/服務。你對自己未來 3~5 年的期許是什麼?

 

應徵者也能擬出自己的問題詢問公司,觀察用人主管與公司文化是否是你想要的而且能夠適應的,像是:

  1. 日常開發流程?跟其他部門合作的方式與現況是?

  2. 一年/半年/一季的忙碌程度?通常是準備世界級展覽前比較忙嗎?部門最近一年/半年的每日平均工時是?是否需要出差?依過去經驗,常出差的區域是哪些?

  3. 公司/部門如何評價一個工程師的工作表現?公司/部門中, 資深與一般同事的比例是?部門人員總數是?部門資深的平均年資是?

  4. 薪資結構是?月薪與年薪?加班是否有加班費?加班費的計算方式?能否報加班費?報加班費是否會准?On-call? 休假制度?

  5. 公司預期擔任這個職務的人應該要具備什麼特質與背景?這個職務是因為部門業務擴張才找人的嗎?預計找幾人?近期有否其他徵人需求?

應徵者收到面試邀請的通知信件,我建議先用電話或網路通話軟體,跟公司 HR 或發出邀請的人員,確認他們找你的原因以及這個職務所須的專業和特質,再查他們公司文化以及薪資,綜合考量這些背景是你有的、你也願意繼續發展這些背景、薪水範圍落在你的預期區間內, ……等等,再決定要不要答應前往面談。對於面試人員用激將法或負面的方法面試應徵人員,我認為應徵者視情況見招拆招,我的經驗是找 RD 的公司用這種方法面試應該是不缺人或已經找到人了才敢這麼做,現在網路分享風氣很盛行,應徵者又不是一定要到這間公司,搞這種方法我猜測大概是面試人員有意打壞公司名聲。至於若面試人員說「這種空閒時間學的技術/做的作品集,跟上班時間學的/做的上線產品有差距,我們恐怕無法當你是有一定經驗的人」,或是「你的過去經驗/作品集,跟我們公司所用的技術/所在的領域有一定差距,雖然我們願意從頭訓練你,不過給你的薪資恐怕無法如你預期的水準」這種說詞,應徵者要好好考慮環境現況、自己想要這份職務程度以及公司徵人的急迫程度,畢竟面試人員/用人主管找你面談,你也已經到現場,足以代表彼此都跨越自己的一套門檻才會見面繼續談,我建議應徵者在面談時詢問面試人員上述的問題,瞭解面試人員肢體與言語傳達的訊息,包括公司/部門文化以及對方是否好相處,根據得到的訊息加上考量其他條件,再決定要不要接受這個錄取職務。

20170117 補充:看公司面試狀況再決定要不要問這麼多,例如軟體工程師參加臺灣開發團隊的面試,可以挑幾個約爾軟體工程開發的幾個問題 (詳細請去看 stackoverflow job 讓其他公司徵才寫的開發團隊說明頁面 ) 來問,不用全問,也可以不用問這類細節問題,因為有些人可能會因為你問很多問題,而認為你很(麻)煩,或是你技術能力不足。 只有你知道自己的能力能不能符合工作職務帶來的挑戰和能力需求。

 

專業相關問題:

  1. 資料結構的運用, Stack, Queue, Hash, Circular queue, Linked List, Binary tree, B plus tree

  2. 撰寫演算法、時間複雜度, Bubble sort, merge sort, quick sort

  3. 考核公司所需以及應徵者具備的程式語言熟悉程度

4-1. Spin Lock, Semaphore, mutex 熟悉程度; Thread, Process 特性說明; Garbage collection 機制說明

4-2. 網站前端: html, css, javascript, AJAX, RWD 概念, 純以CSS做上下頁效果, 當下流行框架運用

4-3. 網站後端: SQL, DB規劃, DB表格規劃, N+1 query, replication, sharding, Memcached or Redis, API 設計、快取、管理、演進方式

網路上一堆面試考題涵蓋各方面,例如 Linux driver、網站前端、網站後端,有興趣者請自行尋找,有心錄取者務必掌握才能有信心說服面試人員,你有足夠能力處理那些情況。

 

像上面這樣列舉各種問題下來,就能知道有沒有作品集以及作品集內容如何,它所佔比例其實不高,所以結論是應徵者在應徵與準備面試時,自己判斷是否需要關注這部分,我認為是有餘裕、自己想要或是平常有心力時才準備就可以了,沒有餘裕就不用。另外,應徵者有不同的人生階段,單身、剛結婚、有家庭與小孩要照顧,不可能每個人都有作品集,不同公司、不同領域及不同層次的工程師職務也不是都要作品集才能呈現自己與應徵職務的符合程度,例如:技術職初級、中階、主任、資深、管理職團隊帶領者、部門管理者,各自有不同的目標要呈現,一味鼓吹要有作品集才可能被錄取的言論,我認為言過其實。例如:寫 BIOS 的工程師難道每個人會有自己的作品集和開源專案嗎?寫 Linux driver 的每個工程師也會有作品集跟開源專案嗎?想想也知道不可能。應徵網站前端和後端,雖然相較 BIOS 工程師和 Linux Driver,網站前端和後端有自己的作品集跟開源專案感覺不難,但你不用保有自己的日常生活嗎?試問,你看過的工作現場是不是每個人都喜歡寫程式、喜歡參與開源專案和作品集?誇大有作品集的面試與錄取效果,我覺得是自己放大作品集的效果居多。

 

 

最後,我想分享的觀點是,要考核自己學習一項技術/概念的成果和掌握程度,就上網尋找相關的面試考題,並且自己做過一次看結果如何。就如同考試一般,不管是自己考核自己或是面試人員檢驗應徵者的能力,常用這個方式檢驗掌握的程度。