
如果將程序員分為本文的8種類型,你會是哪一種呢?
在求職的時候,相信很多人都被問過這樣的問題,“你對自己未來5年的職業(yè)規(guī)劃是怎么樣的?” 每當我被問起這個問題的時候,我的腦海里總是浮現(xiàn)出TwistedSister樂隊1984年拍攝的一段視頻里的這個場景:一位老師對著他的學(xué)生大喊,“我想要你告訴我,不,是告訴全班同學(xué),你究竟想要過怎樣的生活?”

注:TwistedSister是一支源自美國紐約的搖滾樂隊,成立于1970年代早期。后來經(jīng)過將近10年的奮斗,他們在80年代初取得了較大的突破。然而由于他們的叛逆形象和古怪行為,在他們最風(fēng)光的時候,他們被美國政府看作是重金屬毒害青少年的一個典型例子,于1988年被迫解散。
你自然會想:我要變得很牛!或者至少成為一個很牛的程序員。盡管這個問題看起來并不像其他一些同樣老掉牙的問題那么嚴肅(比如,“你覺得你最大的弱點是什么?”),但很可能你還是覺得難以回答。也許有時候你表現(xiàn)得太牛了,不屑于回答這樣的問題。但要小心了,你可能會惹惱別人。
在我看來,這個問題同樣是一個相當嚴肅的問題,值得好好思考一番。不是為了應(yīng)付面試官,而是為了你自己。
對于這個問題,大部分人都會選擇一個不痛不癢的答案來敷衍面試官。但它也確實引出了一個更為深層次的問題:一個軟件開發(fā)人員究竟該有怎樣的職業(yè)生涯?當然,我們選擇這一行是因為我們喜歡這行,并且幸運地得到了老天的眷顧,我們干上了這一行。但你能在50歲的時候依然坐在電腦前敲代碼嗎?60歲呢?所以,我們得趁還年輕的時候好好思考一下這個問題:作為一個程序員,最完美的職業(yè)生涯應(yīng)該是什么樣的呢?
那我就來告訴你吧,基本上,這個世界上的程序員可以有8種境界:
1. 不朽的程序員
這是最高境界!雖然人已經(jīng)走了,但是他的代碼卻依然活著。他成為計算機博物館中的一個永久收藏。其他為數(shù)眾多的程序員都在學(xué)習(xí)他的作品。他在生前可能得到過圖靈獎,或者發(fā)表了大量有影響力的論文,或者是發(fā)明了一些影響到計算機專業(yè)課程設(shè)置的基礎(chǔ)技術(shù)。他已經(jīng)不僅僅只是擁有一個維基百科的條目,事實上,有很多專門的網(wǎng)站來講述他的作品以及他生平的事跡。
在人的有生之年能夠達到這一境界的程序員屈指可數(shù)。
代表人物:Dijkstra、Knuth、Kay。
注:Dijkstra是一名荷蘭的計算機科學(xué)家,他因發(fā)明了計算機編程語言而于1972年獲得了圖靈獎。Knuth是《計算機程序設(shè)計藝術(shù)》一書的作者,他被稱為算法分析之父。Kay是一名美國的計算機科學(xué)家,是面向?qū)ο缶幊獭⒁暣皥D形用戶界面設(shè)計的先驅(qū)者,他有一句名言是:“預(yù)測未來的最好辦法是創(chuàng)造未來。”
2. 成功的程序員
成功的程序員不僅擁有廣泛的知名度,同時還運營著一個不錯的公司,甚至控制了整個產(chǎn)業(yè)鏈。他們擁有絕對的自由,可以做著自己想做的事情。他們同時還有著把“自由”帶給廣大程序員同胞的夢想。
這一境界的程序員最受人羨慕。要到達這一境界,更多的是需要商業(yè)上的才能,而不是你的編程能力。
代表人物:比爾·蓋茨、Carmack、DHH。
注:比爾·蓋茨是微軟公司的創(chuàng)始人,他是個電腦神童,13歲開始編程,20歲開始領(lǐng)導(dǎo)微軟;他同時也是個商業(yè)奇才,他利用自己的遠見卓識和精明的商業(yè)頭腦讓微軟名噪天下,把軟件做成了人們生活中不可或缺的東西,成就了今日的微軟帝國。Carmack是Id軟件公司的創(chuàng)始人,該公司主要從事電腦游戲以及游戲引擎的開發(fā),作品有《半條命》、《反恐精英》、《毀滅戰(zhàn)士》等。DHH是一名丹麥的程序員,他建立了“Ruby on Rails”Web應(yīng)用架構(gòu),并與人合寫了《Web開發(fā)敏捷之道:應(yīng)用Rails進行敏捷Web開發(fā)》一書。
3. 知名程序員
進入這一境界的程序員也不錯,當然前提是,你得有一份不錯的工作。
這個境界的程序員雖然在圈子里很有名,但是成為名人并不意味著你可以靠這個賺取收入并且養(yǎng)活自己。出名固然不錯,但成功更為關(guān)鍵。你可能在一家非常知名的大型技術(shù)公司工作,也可能在一家很有影響力的小公司,或者是在一個很有希望的創(chuàng)業(yè)團隊。不管怎么樣,其他的程序員都或多或少地聽說過你,并且你對你所在的領(lǐng)域有著積極的影響。
4. 勝任的程序員
你作為一名軟件工程師非常成功,因為你的能力使你在工作中游刃有余。你從來不會為找一份滿意的工作而發(fā)愁。你的同事也非常尊敬你。每一家你工作過的公司都因為你的加盟而在某些方面得到了提升。
但問題是:你接下來的方向在哪里?
5. 普通程序員
這個境界的程序員能夠基本應(yīng)付一般的編程工作。他們自己也很清楚,由于天資所限,他們很難成為杰出的程序員。
其實,天賦跟成功的關(guān)系并不大。如果你有敏銳的商業(yè)嗅覺和不錯的人際交往能力,你依然可以變得很成功。如果你是一個普通的程序員,但你還能靠這一行當過上不錯的生活,那已經(jīng)說明你是很有才的,只是你不必非得干程序員這一行。
人貴自知之名。通常你的能力都會比你自認為的要低。缺乏天賦并不是什么大不了的事情。要勇敢一點,發(fā)掘自己的特長,并且充分地加以發(fā)揮。
6. 業(yè)余程序員
業(yè)余程序員通常都熱衷于編碼。他們可能是一些很有前途的學(xué)生或?qū)嵙?xí)生,也可能正在參與某些開源項目,或者利用個人閑暇時間開發(fā)一些“好玩的”應(yīng)用程序或網(wǎng)站。從他們的代碼和創(chuàng)意可以看得出,他們是一群很有想法、充滿激情的人。
成為一名業(yè)余程序員是件好事。這個境界的程序員可以通過自我提升,很快速地勝任程序員這個職業(yè)。
7. 低調(diào)的程序員
還有一些坊間流傳的比較有個性的程序員,比如JoeCoder,很有能力但是沒啥令世人矚目的成就。他們可能服務(wù)于某家大型公司。對于這些人來說,寫代碼僅僅是份工作而已,并非他們生活的全部。這沒什么錯,挺好的!
8. 爛程序員
這個級別的程序員技能極其匱乏(已無境界可言),他們通常是因為某些陰差陽錯的原因才干上這一行的。他們所做的任何事情都會給他們的同事帶來痛苦和災(zāi)難——當然可能也有一個例外,就是他們的同事也是一幫差勁的程序員,差到連身邊全是一幫爛程序員都意識不到。
如果要給爛程序員下一個定義的話,那就是:沒有金剛鉆,卻偏偏攬了瓷器活。
應(yīng)該承認,以上所有的這些境界定義得并不嚴謹。其實,不是所有的程序員在他們的職業(yè)生涯中都渴望相同的東西。思考一個程序員在他10年、20年、乃至30年、甚至一生的時間內(nèi)所能達到的成就,是非常有意義的!想一想,你最崇拜哪個程序員?到底是他的什么成就,使得你對他有如此的崇拜?
話說回來:你究竟想要過怎樣的生活?
