企業在考慮招攬新的人手進來加入團隊時,必須先設定好目標對象,你可能會考慮到的因子像是:(1)對特定語言的熟悉程度(2)對特定領域知識的熟悉程度(3)學習新事物的能力(4)獨立解決問題的能力(5)溝通協調的能力(6)對軟體工程的熟悉程度(7)電腦科學背景知識的熟悉程度(8)對軟體開發、程式設計的熱情(9)有多聰明……等。

對軟體開發而言,有人或許比較重視對特定語言的熟悉程度,以及對特定領域知識的熟悉程度,但事實上,因為軟體技術多變的原因,學習新事物能力的重要性在這二者之上。搭配足夠的電腦科學背景知識,更有利於快速學習新事物。

能夠獨立解決問題,才不致於拖累其他人
除此之外,我認為挑選一個能獨立解決問題的人也很重要。軟體開發過程,雖然是團隊合作開發,但在開發的過程中,每個人都會被交付不同的任務,有著不同的工作目標。

團隊合作開發,成員間彼此互相幫忙是天經地義的事情,互相交流同時,也是經驗的傳承。但是,每一項工作都有可能遭遇到不是預期中的問題,這樣子的問題很有可能是任何一本書都沒提到的,甚至很有可能不是團隊成員曾經遭遇過的。

當遭遇到這樣子的問題時,或許別人能夠伸出援手,但是因為不在預期中的問題很多,一個程式人不能總是仰賴別人伸出援手,必須自己具備獨立解決問題的能力,才不致於拖累其他人。畢竟解決這樣子的問題,是需要專注在問題本身,而且十分耗費時間。

一個能夠獨立解決問題的人,他懂得如何搜集、搜尋和該問題有關的線索、推論造成問題的各種可能原因,並加以驗證,最後還要能夠提出解決問題的方法並實作出來。

對於一個用人主管而言,能夠找到一個給定工作目標,並且提供一些方向指引後,就能夠獨立完成工作的人,那真是再理想也不過的一件事了。

除了熱情,還要有主動溝通的意願
熱情當然很重要。熱情才是讓程式人能夠持續精進的重要關鍵。對程式設計擁有熱情的程式人,通常會更主動投入在工作中,因為他們的喜好就是他們的工作本身,這種程式人技藝進展的速度都會比較快。

能夠喜愛自己的工作,自然勝過僅將工作視為謀生工具的人。在程式設計領域出類拔萃的人物,我想都是對程式設計有著熱愛的人吧!

溝通協調的能力在軟體開發中,當然也是很重要的一件事。即使我們強調獨立完成工作、解決問題的能力,但協同合作的能力,仍然也是團隊中不可缺的一環。

大家都會說軟體開發很重視溝通,但是在哪些事情上面需要好的溝通能力呢?倘若以程式人來說,我發現最常遇到的情況,是缺乏主動溝通的意願,例如讀了規格書或設計書後,其實並不是完全理解其中所述的規格或設計,但是因為缺乏主動溝通的意願,所以也就悶著頭開始依照自己的想像動手,最後開發出來的產物往往就與規格或設計有若干不相符之處。

或者,即使發現專案經理為工作所設定的完成期限,可能無法趕上、或甚至明顯無法趕上時,也不會適時讓專案經理知道,以提早安排因應的措施。這兩類的問題,都是源自於缺乏主動溝通的意願。

程式人並不需要什麼高超的溝通技巧,其實只需要具備主動溝通的意願,適度表達出自己的需求及困難,就沒有什麼太大的問題。

聰明,會反映在「學習新事物」及「獨立解決問題」的能力上
最後,讓我們來談談「有多聰明」這件事。有些公司雇用員工的基本原則是「只雇用最聰明的人」。

不過,「有多聰明」這件事實在是一件不好定義的事。

很多人可能會認為「聰明」指的是智商,但軟體開發其實和智商的相關程度,並沒有那麼高。有些人可能認為「聰明」指的是學業成就,所以他們只招攬名校畢業的學生。但正如我先前所提到的名校迷思,還有很多因素的重要性,遠在此種「聰明」 之上。

我反而認為,「有多聰明」這件事其實會自然地反映在程式人「學習新事物」以及「獨立解決問題」之類的能力上。

當一名程式人能很快地學習新的事物並且融會貫通,對於所遭遇的未知問題,也能有系統性地運用策略並加以解決,通常我們就會覺得這樣的程式人夠「Smart」。

當你決定了挑選目標對象的重要因子之後,有利於你決定要安排什麼樣子的測驗,以及面談時需要提出的問題。

有時候可以看到網路上流傳一些大型軟體公司招考人員的試題,內容從腦筋急轉彎型的考題,到數理、解謎類型的問題都有。

腦筋急轉彎型的考題,表面上像是考驗應試者的智力,但其實相關性很低。而數理、解謎類型之類問題,所反映出來的「聰明」,其實多半也無助於軟體開發。

即使你能找到通過這種測驗的人,也不代表他就是現實開發生活中,你會需要的「聰明人」。這意謂著,安排此類的測驗,有可能沒有什麼效用,甚至會誤導你的決策。

面談的中心原則──探索應試者是否具備你需要的特質
想要找到合用的程式人,面談是很重要的過程。我知道許多人會準備一組基本的面談問題,而每個人準備的問題也都不盡相同。

但我覺得準備這些問題的中心原則很簡單,就是希望透過這些問題,以及應試者在回答這些問題之後,所衍生出來的進一步問題,來探索出應試者是否具備你所需要的特質。

如果你也覺得學習新事物的能力很重要,那麼你就應該透過你所準備的問題,來察覺應試者是否具備這項能力。當然,這問題可能不是直接到當場詢問「你是否具有學習新事物的能力」這麼簡單。

例如,對於一位研究所剛畢業的應試者,我時常會請他先談談他的碩士論文。如果他的論文中涉及到軟體實作,那麼便可以針對實作中可能會運用到、一般學校課程不會教到的軟體技術,進一步詢問他是如何學習的。

倘若,他是自修的,那麼對「具有學習新事物的能力」這一個特質來說,當然是加分的。倘若仍舊是透過其他人的指導,那麼就難以識別出他是否具備學習新事物的能力。

我也會喜歡詢問應試者,除了論文或學校的專題之外,有沒有自行開發獨立的軟體專案。這樣子的問題,可以用來判斷他對程式設計的喜好程度。你知道的,一個喜歡程式設計的人,就算沒人指派、要求他做些什麼,他也必然會手癢喜歡東搞西搞,親手打造一些他覺得有趣的軟體。

會喜歡自己在業餘時間開發額外專案的程式人,多半都是喜好程式設計,並對程式設計有著相當熱情的人。

而這樣的問題,除了可以從專案本身的技術難度推論應試者的程度外,也可以從其中所運用的技術,進一步了解應試者是如何習得該技術的,從中明白他學習新技術的能力。

專欄作者

熱門新聞

Advertisement