發新話題
打印

開放性問題較能看出應試者特質

開放性問題較能看出應試者特質

作者─王建興
面談時應該詢問兩類問題,第一類問題是要發掘個人特質;第二類則需探詢出他目前的技術實力

想要找到理想的程式人,面試絕對是最重要的過程。因為有太多在招攬新血時需要考量的特質,不容易基於履歷中所記載的資訊來判斷。好比,之前提到的,我們會想要找到學習新事物能力強、能獨立解決問題的程式人。但是,從履歷中並不容易發掘出應徵者是否具備這樣的特質。面談過程則給了我們更多的機會及可能性,來做更多、更準確的判斷。

開放性問題比封閉性問題有更多自行表述的空間
依據我的個人經驗,面談時大概會詢問兩類型的問題,詢問第一類問題的目的,是希望發掘出個人特質;而第二類問題則是希望探詢出他目前的技術實力。

但無論如何,基本上都是以開放性的問題為主。它們不同於封閉性的問題,結論或答案通常是不確定的,或者起碼不只一組。

我知道有些人會問一些封閉性的問題,而且有時候答案本身過於瑣碎,甚至本身不具備太多的意義。例如,為了要確認應試者是否了解Java程式語言,因而詢問了一些作法,例如關於某個功能,要透過那些類別的那些方法來達成。

像這樣子的問題,能否考較出應試者的Java實力呢?如果應試者能夠回答,呈現出來的意義往往只是他曾經使用過。如果答不出來,就能夠因此而推論出他對Java的熟悉度有問題嗎?這恐怕難說。

很多太繁瑣、牽扯到細節的問題,就算在問的當下無法回答,但翻閱書本、查閱文件或是上網搜尋,通常都可以找到正確的解答。對我來說,與其找一個剛好會這個細節的人,不如找一個可以很擅長自行尋求答案,解決各種細節性問題的人。

我會喜歡詢問開放性的問題,而且喜歡問大範圍的題目,讓應試者在這個題目下有更多自行表述的空間。做為負責面談的人,責任是設計、提問正確的問題,然後專注在傾聽上,並且引導應試者朝著你所期望的方向去回答。

從大範圍的提問,慢慢開展更深入的問題
你提出最初的問題,回答範圍可以很大,但漸漸的,可以基於應試者的答案見機行事,慢慢地衍生出其他的小問題。

對程式人來說,有一個不錯的問題,就是詢問他最得意、或覺得做得最好的作品。當然,有些人可能會回答沒有什麼得意的作品,也不覺得有什麼軟體是自己做得好的。這很有可能意謂著,應試者可能不那麼熱愛程式設計這樣的工作(當然也有可能是對自己的要求太嚴格)。

喜歡程式設計的人,一談到得意作品,時常會進入口沫橫飛的模式。他可以清楚地告訴你,這個作品為什麼他覺得是得意之作,究竟是好在那邊,可能是因為他運用了特別或者較難的技術,或者是覺得自己在設計上有獨到的地方。他甚至可能告訴你,他之所以覺得得意,是因為所用到的技術,全部都是他自己從頭開始學,然後獨力完成的。

藉由得意之作這個問題,可以開展出許多更深入的問題。這個問題可以給我們幾個提示:你可以透過他描述作品的語氣、表達的方式,揣摩他對程式設計、軟體開發的喜歡程度;你可以透過這個作品的技術難度,知道應試者的技術能力深淺。你可以藉此估算他所獨立開發或負責開發之軟體範圍的規模、複雜度。你也可以知道在他的觀點下,什麼技術是重要、什麼設計是難得的。

曾經遭遇的困難不是重點,重點是他如何解決
基於他的回答,可以詢問更進一步的問題,例如,詢問他如何習得此作品中所需的技術?是上課還是自修的,藉以明白他學習新技術的途徑與方法,速度快慢以及是否具備獨立學習的能力。

對我而言,自修新技術勝過透過上課或他人指導來學習,因為軟體開發隨時得面對各種可能的新技術,如果只能倚賴上課或別人指導,那麼學習的速度相較而言會緩慢許多;而利用網路上的資源來學習新技術,又勝過書本。

你也可以詢問他,在開發的過程中,有沒有遇到值得一提的問題,而自己又是如何解決的。事實上,從一個人遭遇到的問題,也可以觀察出他能力的深淺。但是,更重要的是,我們會想了解他解決問題的模式。

他是一遇到問題,就急著找旁人協助呢?或者是自己已經建立一套系統性解決問題的方法?他所遇到的問題,有可能是一個程式臭蟲,也有可能是一個需要被克服的技術問題。你的應試者,或許只是遇到一個簡單的小蟲子,就讓他困擾了老半天,但這並不是重點,重點是,他在除去這個臭蟲時的策略和方法,是不是有系統、有效率的。

他所遇到的技術問題或許沒有很難,但這也不是重點,重點是他如何找到解決這個問題的答案。他很有可能已經懂得如何透過網路的資源,搜尋前人的經驗中,是否已經有答案,倘若沒有,是否有人有過類似的經驗,也留下了最後解決問題的提示。事實上,已經養成這類習慣的人,在獨立解決問題能力上的表現,時常會比較優異。

從應試者的回答,估量技術水平及人格特質
基本上,你可以準備一些這樣的問題,同時設定透過這過程想要聽到的答案。一般來說,從應試者的回答中,可以估量他的技術水平,也可以發掘出他的人格特質。

或許很多人相信出幾道程式設計的考題,才能客觀地評量應試者的技術水平,但事實上,如果你自己是一個技術能力到位的面談者,很容易可以從面談過程中就明白應試者在技術上的能力,還有更重要的潛力。現階段的能力固然值得參考,但他未來的潛力更為重要些。

我就在不久前有一個面談的經驗,應試者的代表作(是他的碩士論文實作),或許沒有十分突出,甚至第一眼的印象還挺平淡的。但是,在面談的過程中,我發現他在作品中,設計了一個小型的Script語言,並且實作了直譯器,這讓我感到十分有趣。

我追問,你修過編譯器的課嗎?你是怎麼處理Analyzer以及Parser的問題?你有使用像lex或yacc之類的工具實作Analyzer及Parser嗎?他回答說,沒有,但我自行研究的結果,是這麼做的⋯⋯,接著他解釋做法。原來也是教科書上提到的做法。

我追問,如何知道應該這麼做的。他告訴我,他找到網路上的一些資訊,接著學到這樣的做法。我在心裡頭加分的原因有:(1)他雖然沒修過編譯器這門課,但是他能自己找到實作Analyzer及Parser的方法(2)他會想到自己設計一個簡單的語言來提供彈性化的設定,讓使用系統的人,可以透過撰寫 Script,來自訂許多的動作。

面談的過程要隨機應變
即使他做的,從我們的眼光看起來,也許不是了不起的東西,但從這兩點,我判斷他能獨立學習,而且自己解決問題。另外,他會試著採取一個更優雅的解決方法,像是利用Script提供自訂的可能性,這是一個很好的程式人特質。即使是修過編譯器這門課程的人,都不見得會想採取這樣的解決方案。

就像上面的例子,做為面談的人,我們會預設想問的開放性問題,藉由應試者的回答,我們除了可以觀察他的特質之外,還可以臨機應變地發揮,提出更深入、更確切的問題。透過面談,幫助我們更準確地確認,應試者是否是我們需要的人才。

TOP

發新話題