你有沒有遇到過那個經典的面試問題,“你預見過自己5年後的職位嗎?”。每當有人這樣問時,我就會想到Twisted Sister樂隊從1984年開始發行的某張專輯。
當然是玩搖滾,至不濟也得是個搖滾明星級別的程式設計師吧。這種問題通常得不到正面回答——就像那種在面試中無病呻吟式的陳詞濫調,”你最大的缺點是什麼?”。有的時候是不是太大起大落?以至於那些無辜的旁觀者會受到傷害。
但是,我認為這是一種不一樣並更嚴肅的話題,它應該引起足夠的重視。而這並不是為了面試官好,而是為你好。文章開始的那個問題聽起來有點老生常談,而且大部分人都是有備而來。但是這個問題卻會引起更深層的思考:一名軟體開發人員的職業生涯會是怎樣的呢?當然,我們幹著一行是因為我們熱愛程式設計,並且在這一點 上,我們非常幸運。但是,當你50歲的時候,你還會坐在電腦前程式設計嗎?當你60歲時呢?對於那些渴望成為程式設計師的程式設計師來說,最好的職業生涯出路是什麼呢?
開個玩笑,如果我告訴你,程式設計師可分為八種級別,你會怎麼想呢?
1. 不朽的程式設計師:這是最高層次。你寫的程式碼並沒有隨你而去,而是保留了下來(萬古流芳)。你會在計算機領域永垂不朽。其他程式設計師會研究你的成果和著作。你可能獲得了圖靈獎,發表過有巨大影響力的論文,或者發明了一項或多項為眾人所知的基礎性技術,已經影響了程式設計事業的發展。
介紹你的並不只是個維基百科詞條——很多網站致力於研究你的生平和成就。只有很少的程式設計師達到這種高度。
代表人物:Dijkstra(迪傑斯特拉)、 Donald Knuth(唐納德·克努斯/中文名:高德納)、 Alan Kay (阿蘭·凱)
2. 成功的程式設計師:這些程式設計師既聲名遠揚又藉助自己的編碼創立完整業務,甚至整個行業。他們給自己創造了真正的自由:自己決定從事什麼工作的自由。並且跟自己的同事分享這種自由。
這是大部分程式設計師都渴望的一種高度。能否達到這種高度往往更多的取決於業務技巧而不是程式設計能力。
代表人物:Bill Gates(比爾·蓋茨)、John Carmack(約翰·卡馬克)、DHH (戴維·海涅梅艾爾·漢森)
3. 著名的程式設計師:這也是一個不錯的層次,但是美中不足是出名不能當飯吃。在程式設計這個圈子裡,你非常有名。但是,有名氣並不一定就意味著你會藉此獲利來養活自己。出名很好, 但成功更佳。你可能為一家著名的大公司或者有影響力的小公司工作,也可能是一個普通創業團隊的一員。其他程式設計師對你都有所耳聞,你正對這個領域產生積極影響。
4. 能幹的程式設計師:作為一名軟體開發人員,你事業有成。公司需要你的技術,找份好工作對你來說永遠不是件難事。你的同事尊重你。你工作過的每家公司都在你從事的方面取得了長足的進展。但是,僅此而已,別無他長?
5. 普通程式設計師:處在這個水平,你有自知之明,知道自己不是一個偉大的程式設計師——可能你永遠都不會是。天賦跟成功鮮有關聯。如果你擁有生意頭腦和人際技巧,你會非常成功。 如果你是一名平庸的程式設計師,但是能夠以此謀生,那麼可以說你是很有天賦的,但不一定在程式設計方面。別低這份估自知之明,因為有自知之明的人比你想要的要少。 有沒有天賦無關緊要,只要你能《發現自己的強項》並且持之以恆。
6. 業餘程式設計師:一名業餘程式設計師熱愛程式設計,這說明:他可能是一名很有前途的學生或實習生,他們正在為開源專案做貢獻,或者在業餘時間開發有趣的”僅供娛樂”應用程式或網 站。他們的想法以及程式碼表明他們充滿熱情並且很有前途。成為一名業餘程式設計師是一件很不錯的事情,從這個階段可以很快成為一名有作為的程式設計師。
7. 不知名的程式設計師:這是眾所周知的典型的一種程式設計師:無名氏。他們有能力(通常會有)但不出色,可能為一家不知名的大公司工作,但那只是一份工作不是生活的全部。不過,那也沒有什麼問題。
8. 糟糕的程式設計師:那些沒有一點技術或能力但不知怎麼就成了程式設計師的人。他們接觸的每件事情都會成為同事們的苦難——這些員工更糟糕,他們甚至不知道在和別人合作工作。
這些糟糕的程式設計師有什麼共同特徵呢?按理說他們跟寫什麼樣的程式碼無關——但不管怎樣確實有關。
這種劃分並不是非常嚴格。並不是每一名程式設計師都渴望在自己的職業生涯裡只做同一件事。但是一名程式設計師在十年、二十年、三十年或者終其一生能夠達到一個什麼樣的高度?這值得我們思考。你最敬佩哪位著名程式設計師?他們取得了怎樣的成就贏得了你的尊敬?