大齡程式設計師的未來在何方

foruok發表於2015-12-17

 大齡程式設計師的界定

  老早網上有人說,軟體開發幹不過30歲,後來又有人說幹不過35歲,後來又有人說幹不過40歲,後來又有人說幹不過45歲……各種說法很多,所以我寫了一篇文章,題為“程式設計師的年齡天花板”來討論這個問題,感興趣的可以跟進去看看。

  這裡我採取通俗的說法,認為過了30歲的程式設計師算是大齡程式設計師,只是為了討論方便,不同意的請保留自己的意見。

 人生的階段發展理論

  《論語•為政》篇:

子曰:“吾十有五而志於學,三十而立,四十而不惑,五十而知天命,六十而耳順,七十而從心所欲,不逾矩。”

  這是至聖先師孔老夫子對人一生的發展階段的精闢概括,裡面談到三十而立。所謂三十而立,是指人在三十歲之後,就應該在穩定在某一個職業上,有所建樹。

  現代社會,對人生職業發展階段研究最為著名的學者是美國的舒伯(D.E.Super),他是世界職業規劃發展史上里程碑式的人物。舒伯對人的生命發展過程,提出了以成長、探索、確立、維持、衰退為中心的五個階段模型。每個階段都有不同的職業課題需要完成,當前階段的職業課題沒有完成的話,就會影響後續的職業發展和人生生活。

  對舒伯感興趣的可以問下貼心的度娘,她會微微一笑很傾城地告訴你舒伯職業生涯階段理論的細節。我這裡只涉及與大齡程式設計師相關的階段。

  在舒伯的生涯階段裡有個確立階段,25歲~44歲。在這個階段,職業上的發展課題有這些:

  • 逐漸穩定於一項工作
  • 確立自己將來的保障
  • 發現適當的晉升路線

  作為程式設計師,請先好好理解一下這個老前輩提出的這些課題,反觀自身,自省三分鐘再往下看。

  確立階段又可以細分為兩個小階段:

  • 25~30歲,修正期
  • 31~44歲,安定期

  如你所見,我們所說的大齡程式設計師,就是30歲往後,即過了孔老夫子所說的三十而立階段的程式設計師,大齡程式設計師基本也是處在舒伯老前輩提出的安定期內。你要說你超過44歲了,噢賣糕的,按孔老夫子所說,應該不惑了。

  31~44歲這個安定期,其實是人生最富有創造力的階段,如果能穩定到一項工作上,一定可以有所成就,為將來打下保障。

  30歲這個年齡,是每個人都會遇到的,不單是程式設計師、軟體開發工程師,它是人生的一個節點。所以,你不是一個人在困惑,程式設計師,世界上所有的人都會經歷這個階段。而且,已經有人經歷過並提出了一些有效的應對措施。

  還有一點很重要,25~32歲是人的婚育高峰,所以,此時人會面臨工作、生活的雙重壓力,事業家庭兩頭忙,身心俱疲。假如兩頭都不定,那就基本沒法愉快地生活了。

  我不想扯到太原,還是要聚焦在程式設計師身上來。

 技術人生的三個方面

  這節會談到對程式設計師來講至關重要的三點:

  1. 知識、技術
  2. 技術能力和閱歷
  3. 業務積累

  前文書我們說過,30歲是所有人都會面臨的人生轉折節點,那對於程式設計師來講,這樣的節點,有什麼特殊的表現和含義呢?且來水水。

  軟體現在已經成為各行各業的基礎服務,它具有非常特別的屬性:軟體本身形成了一種產業,它又和其他產業結合形成了交叉領域。

  說白點,純粹的程式碼沒有意義,解決現實問題是軟體存在的最大意義。而現實問題來自各行各業,所以,大部分的軟體產品,是軟體技術和行業需求的有機結合

  所以,多數程式設計師的工作方式是這樣的:使用某種開發工具、通過程式語言來實現一個解決特定問題和需求的軟體。有了這樣的界定,真的可以開始水了。

  知識、技術

  程式設計師需要掌握程式語言、應用框架、開發工具等這些具體的知識和技術。這是第一點,必須的。

  不同的語言和技術,都有特定的應用場景,這種語言解決這種問題效率高,那種語言解決那種問題效率高。

  隨著人類社會的不斷髮生髮展,隨著資訊化和網際網路化的不斷深入深化,現實問題越來越多,越來越複雜,老的知識、技術在面對新的問題時可能力不從心或效率低下,所以不斷有新的語言和技術問世,比如Go、比如Scala、比如Swift、比如ROR,都才出現沒多久,都是因為特定領域問題而出現的。沒有最好的語言,只有最合適的語言。

  面對這樣的現狀,程式設計師就需要保持學習,為了更好的解決問題,可能需要掌握多種語言和技術,而且會隨著社會的發展和技術的發展不斷地調整自己的知識、技術圖譜。

  所以,早在幾千年前,我們的儒家經典《大學》就預料到了將來會有程式設計師這種人群,對他們的生活做出了概括性的預言:“苟日新,日日新,又日新”。

  OK,這就是程式設計師面臨的知識、技術現狀,所以有人覺得過了30歲奔四張去的時候,家庭事業兩頭忙,身心疲憊精力不足沒時間充電沒時間學習不再適合做程式設計師了。

  這是一種現狀,當然它對某些人如此,對另外一些人則不然。其實,31~44歲,正是人年富力強精力旺盛創造力爆棚學習能力煥發第二春的黃金階段啊。不信你去看看舒伯的生涯彩虹圖,一看便知。

  舉個例子,王江民就是這個時候(38歲)轉做軟體開發,後來(45歲)一騎獨行白衣飄飄殺進中關村創造了江民防毒的傳奇歷史,塑造了一代軟體神話。

  在30歲到44歲這個階段,如果你還在做程式設計師,對自己的學習模式一定有所瞭解了,加上之前的積累,學起新東西來很快,應該會不斷收穫舉一反三觸類旁通的愉快體驗。

  技術能力與閱歷

  對程式設計師來講,知識、技術是一方面,是容易習得的,是較淺的層面。那較深的層面,就是技術能力與閱歷。

  技術能力是指,對具體的知識和技術的運用水平。它在很大程度上決定了一個程式設計師身上的技術價值。

  技術能力是在不斷地運用知識、技書解決現實問題的過程中培養出來的。在這個過程中,有的人愛琢磨好總結能昇華,技術能力提升就快,幹一年可能能收穫一般人兩三年的技術經驗;有的人可能會停留在寫段程式碼寫完了事兒這種層面,那可能幹三年不如人家幹一年。

  《天龍八部》中的神仙姐姐王語嫣,很多少年看了都很喜歡。從IT的角度看,她實際上就是一個掌握了很多知識、技術的字典型程式設計師,但不會實際開發。當然,她也可以是很妙的程式設計師鼓勵師,既能極大激勵程式設計師的幹勁,又能在必要時提供字典式的幫助與指導。

  與王語嫣對應的另一個人物是掃地僧,超越了知識、技術,閱歷極深,不拘泥於招式,一抬手一投足就拍“死”了慕容博和蕭遠山這種超強高手。他是我們專業技術者的夢中夢。

  扯了這麼多,我想說的是,技術能力和閱歷,隨著程式設計師年齡和工作經驗的增加,其重要性和價值將超越知識、技術本身。這是我們必須意識到的,這也是老江湖的價值所在。

  你可以在三兩個月學會服務端開發,但如何應對大使用者量、大業務量、大資料、大併發帶來的挑戰,絕對不是一個小白三兩個月能搞定的,不積累個五年八年,不隨著企業的產品、服務的發展而經歷技術架構的變遷,你很難有能力去解決這些問題。

  業務積累

  大部分軟體是技術和業務的結合,甚至有的行業軟體,開發技術只佔20%,80%的都是業務層面的知識、流程。所以,對於一個程式設計師來講,熟悉業務也是非常重要的。做電商網站和測繪軟體絕對是天差地別。

  業務和行業緊密相關,你選擇一個行業,選擇一家企業,就會決定你能積累的產業、業務知識、經驗。而這部分業務積累,是程式設計師的重要價值所在,它和技術閱歷一樣是經得起時間考驗的。

  有句老話,早已告訴了我們業務積累的重要性:隔行如隔山。還有一句老話也說明了同樣的道理:男怕入錯行。

  學一門程式語言容易,深刻理解業務卻沒那麼簡單。而你不理解業務,空有程式語言和應用技術框架,實際上沒什麼卵用。這就是我們強調業務積累的原因。

 企業的分類

  我在“程式設計師的年齡天花板”一文中曾經提出過軟體企業的分類:

  • 外包型
  • 專案型
  • 產品型

  這裡結合前面提到的“技術人生的三個方面”再囉嗦一下。

  外包型公司,通過承接別的企業的部分或全部軟體業務來發展。這導致了業務不穩定,程式語言、技術框架等技術方面也不穩定。

  外包型公司做軟體的心態,是“幹活、交活、拿錢、完事兒”。在這樣一種心態支配下,程式設計師較難有機會仔細打磨產品,對技術能力的積累會有一些影響。另一方面,因為業務隨時會變,對行業知識積累也會有較大影響。

  還有,從企業角度講,考慮成本的話,更願意用成本低的年輕人,所以,大齡程式設計師的將來,在這種公司不夠樂觀。你一個35歲的程式設計師和22歲的程式設計師,做同樣的App,老闆不會覺得你35歲就比22歲做出來的東西好多少,他會認為年輕人多加個班多改改就差不多了,這時候會產生劣幣驅逐良幣的效應。

  專案型公司通過承接電信、銀行、電力、政府或其他單位的軟體專案為生,比外包型稍強一些,技術上可以自己選擇,也能夠在某個行業長期積累經驗。如果這類公司的專案規模小而多、行業不集中,那就與外包型公司類似。另外,做專案的心態和外包有些類似,對成本的考量較多,對程式設計師的持續技術發展不利,比如有新技術出現,公司不一定會用,可能為了快和規避風險而選擇較老較趁手的技術來完成專案,這一方面會減緩開發人員的技術更新週期,另一方面也減少了鍛鍊機會降低了技術成長速度。

  產品型公司是最好的,一個產品,要產生競爭力,要麼靠對業務的深刻理解,要麼靠技術上的領先優勢。這類公司是對程式設計師的技術閱歷、業務知識都很有好處,我認為是程式設計師的較好選擇。

 大齡程式設計師的將來

  通過前面的分析,我們知道程式設計師這種技術性職業,價值體現在三點:

  • 語言、技術
  • 技術能力與閱歷
  • 業務積累

  用一句話來概括,程式設計師最大的價值就是運用技術解決問題的能力。而這種能力的構成裡,技術能力與閱歷、業務這兩方面是具有經久價值的,是相比語言、技術更耐得住時間考驗的。

  程式設計師的將來,就與價值維繫有關,可以參看我釋出在微信訂閱號“程式視界”的文章“程式設計師保值的四個祕密”。在我們進一步展開闡述之前,需要先看看四大職能取向。

 常見的四種職能取向

  一般來講,有常見的四種職能取向:

  • 管理者
  • 專業技術者
  • 自由職業者
  • 創業者

  管理者又分為職能管理者和全面管理者。CEO、總經理之類的角色屬於全面管理者,開發經理、研發部門經理、專案經理、專案總監、HR經理等屬於職能管理者。

  專業技術者指靠技術吃飯的人群,比如程式設計師,比如測試工程師,比如UI設計師,比如會計,比如律師,比如編輯……這些人的一個共同點就是擁有獨特手藝和技術,能用自身所掌握的技術為別人解決問題創造價值,他們通常會依附一個組織來工作。

  自由職業者首先是一個專業技術者,然後他脫離了特定組織,自己跑單幫了,自己安排自己,今天想幹就今天干,老子今天不爽就明天再幹。

  創業者是特殊的一類職能取向,他們特別想擁有自己的產品和服務,於是就拉一幫人成立一組織,協調各種資源來實現自己的夢想。

  程式設計師的職能取向,多數會落在專業技術者。我個人來講,做了6、7年管理,現在還是回到了專業技術上來,因為做具體技術工作會讓我更自然更自在也更快樂。每一個程式設計師都應該理清自己的職能取向,只有職能取向清晰了,談將來才比較靠譜。

 所謂“成功”

  有人說,三十出頭的程式設計師,如果你混的不夠成功,面臨的壓力就會山大。話聽起來沒錯,不過也不盡然,這裡面有個關鍵的問題需要澄清。那就是“成功”的定義。

  世俗的成功,古時候是“十年寒窗無人問,一朝成名天下知”,是“春風得意馬蹄疾,一日看遍長安花”。現在也差不多,財富更多,老婆更多,社會地位更高,不過如此吧,你看流佈甚廣的“當上CEO,迎娶白富美,走上人生巔峰”之類的說法就是這種觀念的反應。

  但我這裡說的成功,是指找到適合自己的職業,完成自我實現。簡單點說,就是你在幹你想幹的事兒,又有成就感又快樂。就這麼簡單了。

  我們不必活在社會統一的價值取向裡,也不必活在別人的期望裡,你的人生是你自己的,哪怕父母非要你成為一個什麼樣的人,也不必去聽。

  有了這樣的基本認識,就可以繼續了。

 程式設計師在企業中的發展

  程式設計師的直接發展通路如下:初級工程師–>中級–>高階–>架構師(專家)–>技術總監–>CTO。

  技術總監和CTO帶一些管理職能,也可以從另外一條路上來。這條路就是程式設計師的管理之路:工程師–>專案組長–>專案經理–>專案總監–>技術總監–>CTO。

  一條技術通道,一條管理通道。這是程式設計師常見的職業晉升通道。

  除此之外,還有一些交叉發展的機會。比如開發轉測試,開發轉產品經理,開發轉售前,開發轉售後,開發轉銷售……

  最後,還有一個選擇,就是離開軟體行業,到別的行業裡自由自在的飛翔。啊哈,朋友再見,朋友再見,再見吧再見吧。祝你好運。

  走管理路線的人十不其一,這次不談也罷(回頭我會寫文章聊);轉做別的職業的朋友們我已經說了再見了;那剩下的,就只能說說技術這條路的將來了。

 走技術路線的程式設計師怎麼辦

  其實這原本不是一個問題。你說,哪行哪業沒有老將?

  而這之所以又成為一個問題,是因為程式設計師是“有知識、有技術、有理想、有焦慮”的四有新人,覺著自己已然學了那麼多,付出了那麼多,將來總不能停滯不前吧總不能走下坡路吧總得蒸蒸日上吧,所以就焦慮這件事兒,就擔心,就困惑,就覺得這行當是青春飯吃不了幾年。

  其實根據我前面的分析,結論已經呼之欲出了:保持學習能力,豐富技術能力與閱歷,積累行業知識與經驗,然後就可以持續走下去。即使會有衰退階段,那也是正常的,人生就如花兒一樣,有含苞待放,有盛放,也有枯萎的過程,我們需要自然接納。

 程式設計師的二八定律

  有結論只是第一步,我們還要講清楚一個事實:程式設計師群體中的二八定律。

  先說技術路線和管理路線的選擇,基本上也是二八開(或者一九)。

  小部分的人走了管理路線,剩下的大部分程式設計師,走技術通道。那技術通道,有多少人能成為高階軟體工程師、架構師、技術專家、CTO?

  百分之二十。

  那剩下的百分之八十,在技術路上不能走得更遠,但還得維持自己的競爭力,保持價值不衰退,這樣才可能繼續做下去。怎麼維持競爭力,前面已經說過了。

  大量的大齡程式設計師將面臨無法晉升和如何維持競爭力的問題,這是每個人都必須看到事實。

  從晉升角度看,任何一個行業的從業人員的分佈,都是金字塔型的。大鍋飯不存在,共產主義按需分配也還沒到來,我們必須接受、接納這個事實,然後才能在此之上謀求發展。

 怎樣面對將來

  前面已經確認,技術路線可以走下去。現在我們來看,如果一個程式設計師的四大職能取向定位到專業技術者,到30多歲時,該如何走好,如何適應。

  • 選擇企業

  就做技術來講,如果想維持競爭力,在選擇企業時就應當做一些考量,選擇將來向好的行業,選擇產品型、重視技術的公司,這種選擇非常重要。它會嚴重影響你將來能在技術路線上走多遠。

  我前陣子找工作,就根據行業、企業、產品,只選了三家來面試。我35歲,需要穩定下來啦。

  有人說可否選擇創業公司,我的觀點是,如果你能承受一定的風險(金錢和時間成本),創業公司的創始團隊和產品又都比較靠譜,可以嘗試。小米當時創立時,從摩托羅拉等公司找了好大一批開發工程師哦。

  • 穩定於一項工作

  根據舒伯的職業生涯階段理論,31~44歲是安定期,程式設計師應該穩定於一項工作,發現適當的晉升通道,確立自己將來的保障。

  在這個時期,頻繁的跳槽對將來的發展不利,這是毋庸置疑的,所以選擇要慎重。尤其你到了40歲還沒在哪個行業長時間待過,技術也換來換去,那再出去找工作,就會遇到比較大的困擾。

  到招聘網站遛一遭,看看招聘資訊中對年齡的要求,你就知道我所言非虛,除了技術總監、架構師、技術專家、高階軟體開發工程師等崗位的年齡區間落在30~45歲,其他崗位,絕大部分都要求你30以下。所以,如果你在不同行業、不同公司晃來晃去,到了三十四五歲還沒穩定,也沒能達到高階軟體開發工程師應有的水平,那再找工作肯定會遭遇比較尷尬的狀況。

  • 不能晉升怎麼辦

  技術路線,可以初級、中級、高階、架構師(技術專家)……這麼走下去,假如一個程式設計師發現自己到一定程度無法再走下去,就會產生挫折或倦怠。通常這種情況會在你穩定一項工作7年左右出現,所謂七年之癢。對本科畢業來講,這個年齡就在33~35歲左右。

  此時怎麼辦?這是很現實的問題。

  這個我們就要具體問題具體分析:是你很牛X限於企業環境無法晉升?還是你自身能力到了天花板了無法晉升?

  不同的原因對應的行動是不一樣的,前者的話,可能應該考慮換一下。後者的話,要除錯心態,建立第二生活中心,在職業之外發展其他的興趣愛好來平衡。

  在這個年齡階段,有一大批程式設計師會因為晉升受挫或倦怠而成為創業者或參與到創業中來。這是需要留意的現象。

  • 競爭力有區域性和相對性

  程式設計師的價值和競爭力,其實是相對的。比如你在騰訊,牛人太多,無法晉升了,其實別處可能有雞頭的位置等著,比如其他行業內的小公司的技術總監、部門經理,如果你看重職位和頭銜,就可以去嘗試。這也是典型的一種路線,有部分程式設計師在大公司鍍鍍金,回頭到其他行業的相對規模較小的公司去做管理或技術專家。

  如果你很在意職位等級,很在意比別人更受尊重,那就找一個能凸顯出你價值的環境。比如乒乓球運動員何智麗,在39屆世乒賽上因為沒按領導指示輸球,後來被取消參奧資格,在國內無法發展了,她移民日本,繼續在乒乓球領域活躍並取得了輝煌戰績,還曾經戰勝鄧亞萍取得亞運乒乓球女單金牌。類似的還有一些國外的業餘足球運動員或退役的足球選手到中國來,迅速成為熱門選手受到重視。這都是一個道理。

  所以,對於大齡程式設計師來講,為了發揮價值和競爭力,還有下面的路徑可選擇:

  • 到其他公司,不換行業,利用自己的技術優勢,謀求管理職能,走管理通道
  • 到能凸顯自己技術價值的公司,繼續做開發
  • 到平均技術水平較差的地域,繼續做開發,彰顯自己的優勢
  • 學習其他技能

  哦,親愛的,如果你有時間,也可以學習其他可以賺錢的技能,因為,雖然我們說大齡程式設計師可以一直做技術,但能一直做到退休的,估計也只有20%。如果你是那80%,當你不得不離開心愛的開發崗位時,就能夠因為有所準備而不至於忽然失重。

  • 職業之外的興趣

  這點是我們必須要談的,程式設計師的人生裡不只有軟體和工作,還應當有其他的。生活是多元中心的,要有一些其它的興趣愛好,能夠滋養心靈,修復純技術工作給心靈帶來的磨損。

  提籠架鳥,雕刻,書法,圍棋,遊戲,寫作,讀書……都挺好的,有比沒有強太多了。很多人(包括我)缺乏信仰,再沒有點興趣愛好,那就太容易內分泌失調了。

 到底能幹到多少歲

  還問啊……讓星爺來回答你吧:

  “曾經,有一份真誠的愛情放在我面前,我沒有珍惜,等到我失去的時候才後悔莫及,人世間最痛苦的事莫過於此……如果上天能夠給我一個再來一次的機會,我會對那個女孩子說三個字:‘我愛你。’如果非要在這份愛上加上一個期限,我希望是……一萬年!”

相關文章