許多編程的職位都會到達最高峰,并開始衰落——這是很多程序員不想面對的,但卻是一個不爭的事實。這之后再找一份程序員的工作會變得越來越難,很多人發(fā)現(xiàn)這個事實時束手無策。本文會提供一些重要的職業(yè)信息,值得思考一下,以便有所準備。

TechCrunch 發(fā)布了一篇文章「硅谷黑幕:技術人員年齡歧視(譯文鏈接)」,文中引用的研究發(fā)現(xiàn):對一個程序員來說,能從事高效的開發(fā)的年齡段是有限的。這個問題確實存在,而且非常嚴峻。
程序員的未來是什么樣的?
程序員的職業(yè)之路是什么樣的?
對于這些路應有什么樣的選擇和期望?
人人都知道程序員可以向經(jīng)理或團隊領導發(fā)展。但很多程序員不明白經(jīng)理這個職位的期望和工作要求。當然,我們都有經(jīng)理,但怎樣才能成為經(jīng)理呢?要具備什么素質(zhì)?中層管理者和一個高級程序員之間有什么區(qū)別?
在這篇文章中,我會拉開帷幕,介紹從一個從初級程序員到頂級CTO的潛在職業(yè)之路。
注意:很多偉大的職業(yè)生涯停留在了不同的職位上,直到退休。一些職業(yè)生涯卻連連升級。但是管理和領導角色并不適合每一個人,幾年以后你可能會發(fā)現(xiàn)你在管理上的興趣改變了。二十幾歲的時候你可能不喜歡做經(jīng)理,但是四十歲時你可能不再喜歡寫代碼了。未來什么樣,誰都很難說。然而,多了解一下你的選擇和情況總是好的。
下面一張圖表示的是程序員的各個職位的平均工資。注意在垂直水平上,一些人可能拿著兩倍或者三倍于別人的工資(像是銀行,貿(mào)易等行業(yè))。所以這些數(shù)字僅代表了一個平均水平,并不全面。

初級程序員
0-3年工作經(jīng)驗(一般是剛從大學畢業(yè))
會寫簡單的腳本
初步了解整個應用程序的生命周期
初步了解數(shù)據(jù)庫和應用程序的服務(隊列,緩存等)
不需了解復雜的應用中的每一個部分
當你剛剛踏入程序員的行列中來的時候,可能會感到畏縮和煩惱。會時常感覺到自己資歷尚淺,驚訝為什么會有人寫出這么大而復雜的程序。不久之后,你就會想為什么自己還沒有升級到高級程序員??纯雌渌母呒壋绦騿T,你覺得自己做著跟他們相同的工作。
但是區(qū)別就在于初級程序員缺乏經(jīng)驗。即使是學習最快、最聰明的初級程序員,也沒有接觸到足夠多的代碼和邊界情況,以勝任高級程序員的工作。在軟件開發(fā)方面,軟件設計模式也是一種智慧。雖然在這方面可以閱讀相關的書籍,但還是需要寫足夠多的代碼,將錯誤盡可能地暴漏出來,真正理解軟件設計模式的價值。
高級程序員
至少四年工作經(jīng)驗
能寫較復雜的程序
深入理解整個應用程序的生命周期
掌握數(shù)據(jù)庫和應用服務(隊列,緩存等)
要了解應用程序的每一個方面
稱職的高級程序員非常擅長構(gòu)建大型程序。擔任高級程序員占了程序員生涯的大部分。事實上,如果你不喜歡管理的工作而僅僅喜歡寫代碼,可以一直做一個高級程序員,我就雇傭了一些終生做程序員的人,但是,當老了以后,這項工作也會變得困難。
這個職位也可以作為一個過渡。一旦你掌握了足夠的技術,那么很可能就有能力擔任一家技術創(chuàng)業(yè)公司的創(chuàng)始人或者CTO了。作為一個創(chuàng)始人或者CTO,寫代碼的就會就少了,更多的是需要處理事務的技巧。但是深入理解技術非常有必要,是做好這份工作必不可少的部分。
團隊領導或架構(gòu)師
七年以上開發(fā)經(jīng)驗
掌握高級程序員必備的技術
團隊領導:向架構(gòu)師過渡
架構(gòu)師:沒有更高的技術方面的職位
做了七年程序員之后,如果你覺得不喜歡管理方面的工作,那么可以考慮一下做架構(gòu)師,這是技術方面最頂峰的職位。