看到一篇有趣的文章The Eight Levels of Programmers。以前似乎看過不少這種程序員的多少個級別、境界,但這篇語言很風(fēng)趣,而且分類比較細化,讓人覺得挺合情合理、無法反駁的。絕大部分人想成為一名優(yōu)秀程序員的人,通過努力可以避免1,因為在編程上的追求避開了2,最終可能都停留在4或5。但努力追尋是沒有錯的,不然沒有夢想和咸魚有什么分別:)。注意一點,作者并沒有無腦地批判誰,并沒有說會編程、代碼寫得好就怎樣,其他都是不求上進、不務(wù)正業(yè)。他全文一直都在客觀強調(diào)一點:每個人的追求不同,想好自己想要活成什么樣子,然后就去努力。
你遇到過這種典型的面試問題嗎:“你覺得你五年后會在哪?”每當(dāng)被問到時,我總是Twisted Sister視頻里的片段。當(dāng)然,你想成為大牛!至少成為一個明星程序員。所以這種問題通常都得不到嚴肅的回答,就像另一個常見的問題,“你最大的弱點是什么”。但我覺得有一類問題是值得嚴肅思考的,不是為了面試,而是為了你自己。像“你覺得你五年后會在哪?”這種問題,一般面試者都會準備好一些比較圓滑和恰到好處的答案。但一個程序員真正可能的職業(yè)發(fā)展路徑才是真正應(yīng)該擔(dān)憂的問題。當(dāng)你50歲了你依然坐在電腦前編程?然后60歲?對于一個渴望成為程序員的程序員,什么才是他最可能的職業(yè)終點呢?要是我現(xiàn)在告訴你程序員有八重境界你會怎么樣?
1. 糟糕透頂
沒有足夠技巧和能力的人被分配程序員的角色,(于是悲劇就發(fā)生了)。每一件他們接手的事情都變成了對他們同事的痛苦和折磨。唯一的例外就是他們的同事也同樣地糟糕,糟糕到無法區(qū)分他們也在跟糟糕的程序員共事,這可能是所有糟糕程序員的標(biāo)志。這些人不應(yīng)該寫代碼,但是他們卻的確寫了……
2.無名小卒
典型的程序員,自大自滿但又不夠出色??赡茉诖蠊旧习?,但卻僅僅把編程當(dāng)作一份工作,而非生活的全部,甚至大部分。當(dāng)然這也沒什么錯,只是追求不同。
3.業(yè)余水準
業(yè)余程序員與前兩者不同,他們喜歡編碼,是自愿做這一行的。他們可能是很有潛力的學(xué)生或?qū)嵙?xí)生,或者業(yè)余時間為開源項目或自己的小網(wǎng)站做貢獻。他們有潛力也有熱情,這是好事,達到這一級后就能很快成為一名不錯的程序員。
4.平庸無奇
你已經(jīng)足夠好了,但不夠出色,你可能永遠也不會…… 天賦通常與成功沒有太大關(guān)系,你可以因為商業(yè)頭腦和人際關(guān)系成功。如果你是一名普普通通的程序員,但是生活得還不錯,那說明你挺有天賦,只不過不是在編碼上。自省的價值遠大于你想象,所以勇敢面對,沒有編碼天賦并沒有任何錯。想清楚你擅長什么,并一路追尋,大膽地,這就夠了。
5.小有所成
作為軟件工程師,你已經(jīng)有了一個堪稱成功的職業(yè)生涯。你的經(jīng)驗、技巧在市場中很搶手,你從來都不用為找工作發(fā)愁。你的同行們羨慕你,每家你工作過的公司都因為你的存在而有了改變。但是,你還能更進一步嗎?
6.名聲在外
這已經(jīng)是一個非常不錯的位置了,你在程序員圈子里很有名氣,但并不意味著你很有錢。你可能也在為某個著名的大公司或非常有影響力的小創(chuàng)業(yè)公司工作。不管哪種方式,其他程序員都聽說過你,你在這個領(lǐng)域有著足夠的影響力。
7. 成功典范
這一級別的程序員在名氣和商業(yè)方面都很成功,甚至可能整個行業(yè)為圍著你的代碼轉(zhuǎn)。他們有足夠的自由,決定自己想做什么。大部分程序員都想成為他們,但這需要商業(yè)頭腦多于編程技巧。這一級別的例子有:比爾蓋茨、卡馬克(Doom引擎、計算機圖形學(xué))、DHH(RoR之父)。
8.名垂青史
現(xiàn)在就到了最高境界了。你的代碼已經(jīng)超越了你的生命,在你死后依然被人學(xué)習(xí)。你是整個計算史的一部分,其他程序員都在研究你的代碼和文章。你可能得過圖靈獎,或?qū)戇^影響深遠的論文,或發(fā)明了多項改變編程方式的基礎(chǔ)技術(shù)。你甚至不只有維基百科的條目,還有專門的網(wǎng)站介紹你的生平和成就。非常非常少的人能在一生中達到這個境界。例子有:迪杰斯特拉(結(jié)構(gòu)化編程、算法)、唐納德(TAOCP)、Kay。
這些級別并不是絕對的,也不是所有程序員畢生都在追求同樣的東西。但作為程序員,努力思考未來十年、二十年、三十年甚至一輩子是值得的、有啟發(fā)的事。想想你認識的程序員里誰最牛?他們是如何得到別人的尊重和敬仰?一句話總結(jié)就是:你究竟想要活成什么樣子?