這並不是想象的那麼容易。簡歷上的工作經歷並不能說明什麼問題,因為卓越的程式設計師並非總是有“正式”的工作經驗來說明他們有多優秀。事實上,簡歷上的工作經歷往往會誤導。不過,從簡歷中還是可以得到某人是否是卓越程式設計師的一些細微線索。
我覺得自己是一個非常優秀的程式設計師。同時,我也花費了大量的時間在商業圈,找技術人員做專案,面試別人等等。正是如此,我覺得自己有足夠的經驗去識別一個優秀的程式設計師,我會在下文中分享,希望能夠幫助那些 “商業人士”更好地找到人才。那些有可能成為優秀程式設計師但還沒有摸到門道的,也可以閱讀這篇文章,從而發現自己需要改進的地方。
在Paul Graham的這篇《導致創業失敗的18個錯誤》文章裡提到:
在90年代,導致絕大多數創業失敗的是那些劣質的程式設計師,很多這樣的公司是幾個商人共同創立的,他們有聰明的想法,然後讓程式設計師來實現這些想法。但事實上要困難地多——因為那些企業家他們無法分辨一個程式設計師是否優秀。他們甚至都沒有機會見到那些頂極的程式設計師。
事實上,那些商人選擇自己認為優秀的程式設計師(比如簡歷上提到自己曾是微軟的工程師),但事實上不是。然後會發現創業之路就像二次大戰一樣艱難。
如果你不是程式設計師,如何來挑選優秀的程式設計師呢?我覺得沒有最佳答案。我想說你最好找一個優秀的程式設計師來幫你篩選。但你如何找到這個人?
這點上,我不太同意Graham。我覺得優秀的程式設計師有很多特質。即使一個商人也能識別。我下面來一一列舉。
0. 激情
在我與別人合作的經歷中,遇到過很多技術員:他們寫程式,因為他們覺得這是份不錯的工作。業餘時間從來不會去程式設計。當他們知道我家裡有一個區域網和 3臺電腦時,顯得很震驚。他們只是在工作,不會主動學習新事物,除非工作中需要,或者為了找份工作。當一天的工作結束時就再也不想談論它了。有些人覺得工 作之餘談工作不適合社交。但如果你想結識一個優秀的程式設計師,體現出自己的激情是很重要的。
1. 自學並喜歡學習
時過境遷,程式語言也在不斷進步和完善,新的技術會出現,新的標準也會到來。當然不是說,所有優秀的程式設計師都對那些事物有濃厚的興趣,但有很多程式 員他們從來不會主動學習新事物,除非迫不得已,因為他們不喜歡學習新東西。這些人往往是在大學時學的計算機專業,然後渴望畢業後找到份好工作。
如果你打算僱傭某個程式設計師,只要提到“我能掌握那個,只要把我送到培訓中心一個星期”。不要僱傭那樣的人。優秀的程式設計師不需要培訓中心。事實上,優秀的程式設計師會提到你從未聽過的新技術,然後向你解釋為什麼必須用它,即使他都不知道如何使用。
2. 聰慧
有些商人覺得缺乏情商就是不夠聰慧。事實上聰慧包括很多因素,情商只是其中之一。優秀的程式設計師不是不會說話,事實上,優秀的程式設計師通常是你認識的人 中最聰明的。他們中的很多人有很好的社交能力。我參加過幾次 London Ruby User聚會,除了少數幾個特例,大多數人都很聰明,善談,興趣廣泛等等。但你不會在公眾場合看到他們談論,然後會想“這是怎樣的一幫geek啊”。
不要認為那些話不多的人就是好的程式設計師。他們不是,如果在完全放鬆的環境下都不能很好地交流,他們不是優秀程式設計師的概率會很大。
3. 隱藏技能
這跟激情有關,也是優秀程式設計師的一個特徵。
我在9歲時就開始程式設計,那時還不是在PC上,後來遷移到了PC,學了Pascal。當我14歲時,用C和Assembler寫了一個 raycasting引擎。花費了大量的時間與顯示卡打交道,終於可以看到很酷的圖形效果。在這之前,我只是個二流的程式設計師,沒有信心做任何複雜的事情。當我完成它時,我收穫了自信。我知道只要我想,再難的事情我都能搞定。
這會在我的簡歷上出現嗎?不會
我深信大多數優秀的程式設計師都有類似的冰山不會出現在簡歷上。他們覺得這不是“合適的經歷”。可以對那些潛在的優秀程式設計師問一個這樣的問題“你能告訴 我一個自己獨立完成的專案嗎?即使是不完整的,在業餘時間開發的,沒有出現在簡歷上?”如果他們不能,他們很可能不是優秀的程式設計師。
4. 多種技能
這個很簡單,由於對新鮮事物的熱情和強烈的求知慾,那些22歲以上的程式設計師通常掌握好幾門語言。這不可避免,學習一個新技術是最有意思的事情之一。
5. 證照
這其實不是一個優秀程式設計師的特徵,很多有計算機相關證照,很多沒有。年齡也一樣,有些18歲就展露頭角,有些40歲才有所成就。我的經歷告訴我,大 多數平凡或者差的程式設計師大學時才開始程式設計,為了他們的計算機課程。而優秀的程式設計師程式設計的歷史可以追溯到更遠。如果你的準程式設計師在大學前沒有接觸過變成,他 所有的經歷都是從第一份工作開始的,他很可能不是一個優秀的程式設計師。
宣告
上面或者下面所說的特徵不是必備的。你很可能會發現 NB的程式設計師不符合這些特徵。我的觀點是,你不太可能找到一個優秀的程式設計師不符合這些特徵中的任意一條。當然,你也會發現差的程式設計師也符合這些特徵中的某幾個。但我深信,一個程式設計師,這些特徵符合地越多,那麼他是優秀程式設計師的概率就越大,作為一個商人,你可以信賴這些人。
總結
以下幾個特徵,能夠幫助你找到優秀的程式設計師
- 對技術充滿熱情
- 程式設計是生活的一部分
- 會在你的耳邊談論技術相關的話題,如果你有興趣的話
- 主動學習新技術
- 對自己不能認同的技術,感到不適應,無法全身心投入
- 聰明,對很多話題都感興趣
- 在大學/工作之前就開始程式設計了
- 有隱藏的冰山,自己完成的大專案
- 對許多不相關的技術有了解
原文:Daniel Tenner
譯文:李忠