1. 程式人生 > >35歲,真的是程式設計師跨不過的坎嗎?

35歲,真的是程式設計師跨不過的坎嗎?

昨天,我在一篇招聘的文章裡,寫了某個技術崗位的要求:

Web前端/H5高階工程師 1 名,年薪 18 ~ 24 萬

要求

  • 35歲以下

  • 計算機及其相關專業本科

  • 5年以上前端開發經驗

  • 有跨屏開發能力

  • 精通H5流媒體框架

  • 熟悉各種瀏覽器核心

  • 工作細緻認真,責任心強

多位小夥伴留言,質疑招聘資訊裡的年齡要求,想知道對技術人來講,年齡到底有多重要。

因此,我今天特意寫一篇文章,聊聊我對程式設計師年齡的看法,從 5 方面展開:

  • 為什麼很多公司不歡迎大齡程式設計師

  • 為什麼程式設計師自己也介意年齡

  • 年齡會給程式設計師帶來的劣勢和優勢

  • 開發者能在哪些方面打造優勢

  • 如何面對年齡這個現實問題

1. 為什麼公司不歡迎大齡程式設計師

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

大齡程式設計師不受歡迎,這是很多開發者的感受,因為實在是有太多公司在招募人員時會設定年齡門檻了。

比如 X 為,存在社招年齡必須小於 37 歲這個門檻,還傳出過清退 34 歲員工的訊息……

那麼,公司為什麼不歡迎大齡程式設計師呢?

其實,這個問題並不存在!

2015 年底,我接近 36 歲,創業失敗後找工作,沒花幾天就找到了不錯的機會。

這說明,公司不是不歡迎大齡程式設計師,而是不歡迎能力和年齡不匹配的大齡程式設計師!如果你能力對得起年齡,在某方面有深入積累,年齡根本不是問題。

我們再來站在公司角度,看看它們為什麼擔心程式設計師的年齡:

  • 年齡大了,家庭課業繁重,需要平衡工作和家庭

  • 年齡大了,可能會喪失積極主動學習的慾望

  • 大齡開發者經濟成本高

  • 大齡開發者管理成本高

  • 公司所做產品不需要多深的技術和業務積累,沒必要用大齡開發者

2. 為什麼程式設計師自己也介意年齡

程式設計師本身介意年齡,是因為:

  1. 很多公司招人時要求年齡在多少多少歲以下,讓人焦慮

  2. 年齡大了,真的會喪失學習與提升的慾望,讓人焦慮

  3. 年齡大了,真的會有心無力,讓人失望

  4. 年齡大了,真的會不敢接受從零開始的挑戰,讓人沮喪

你有這些感受嗎?

反正我是有的。

還有其它的擔憂嗎?

歡迎在本文後留言討論。

3. 大齡程式設計師的優勢vs劣勢

640?wx_fmt=jpeg

關於劣勢,其實我們說了很多,這裡彙總一下:

  • 生活狀況多,上有老,下有小,中有伴侶,橫有各種社會關係,需要在時間和精力上平衡工作與生活

  • 學習慾望降低

  • 進取慾望降低

  • 能力提升變慢

  • 技術棧老舊

  • 個人認知系統固化,可塑性變差

  • 管理成本較高

  • 價效比可能變低

但其實也有很多優勢:

  • 在某種技術方向上有深厚積累

  • 專案經驗豐富

  • 業務積累深厚

  • 工程能力強

  • 設計、架構、分析、規劃等方面能力較強

  • 解決問題能力強

  • 大局觀強

  • 有情緒管理能力,穩定耐造

我們舉個例子來說明下。

2015 年 2 月 7 日,圖片社交 App 足記正式上線了“大片模式”。大片模式使用電影風格的截圖、字幕、邊距和濾鏡的處理方式,能夠把一張普普通通的照片修成電影大片的感覺。

大片模式上線後,通過社交平臺,一傳十、十傳百,迅速引爆流量,大量使用者蜂擁進來,團隊非常開心。

然而很快,隨著使用者暴增,服務端出現效能問題,使用者頻繁遭遇閃退、超時、卡死、崩潰、無響應、資訊丟失等狀況……

足記的服務端,不足以支援百萬、千萬級的使用者!

面對這樣的問題,一個初入茅廬的開發者,可以解決嗎?

當然不能!

所以,足記的創始人楊柳請來了青雲的多名資深工程師(老程式設計師)幫忙解決問題,最終死中求活,通過關閉或降級 App 部分非核心功能來保障關鍵功能的可用性,通過服務端流量負載均衡、資料庫讀寫分離,調整快取結構,引入非關係型資料庫、調整影響 CPU 佔用率的程式碼等等優化,經過一段時間晝夜不息的艱苦工作,才將足記總死亡線上拉了回來。

同時,就在這段時間,Camera 360 、美圖等圖片軟體紛紛上線了類似的圖片處理方式——幸好,足記及時解決了軟體的故障,才保護了自身使用者群不至全部流失。

這個故障的解決,靠的就是資深開發者的那些優勢:經驗、技術積累、架構、工程能力等等。

4. 開發者如何打造核心優勢

作為開發者,我們必須不斷構建優勢,才能應對年齡的增長,才能避免或延遲“年齡越大越廢物”的尷尬局面的到來。

640?wx_fmt=jpeg

那麼該如何打造優勢呢?可以從開發技能、業務、架構與設計、軟技能、演算法等 5 方面入手。

4.1 開發技能

開發技能,指的是使用 Java、 MyBatis 、Hadoop、Spring Cloud、Qt、Keras、Spark 、Redis 等等技術開發軟體產品的能力,這是開發者的硬實力。

深入掌握某種技術,達到精通的程度,就可以在這種開發技能上建立優勢。

特別說明一下,泛泛的呼叫 API 完成基礎開發,不算精通。精通指的是你瞭解某種技術的核心原理,達到可以優化、改善、定製這種技術來解決具體問題的程度。

當你在一種技術上有了優勢後,習得優勢過程中積累的學習、分析、設計、抽象等等能力,就可以幫助你快速掌握其他技術,達到一專多能的境界。

這個時候,你就有更強大的優勢了。

4.2 業務

所有開發者都要記住一點,開發者具有雙重的行業屬性:軟體行業屬性和軟體所要解決的問題所屬行業的屬性。

軟體所要解決的問題,就是我們通常所說的業務。比如支付寶的業務是支付問題,京東商城的業務是電子商務問題,攜程的業務是機票和酒店預訂問題……

精通業務,可以成為開發者的優勢,這是開發者在問題域構建起來的優勢。即所謂的懂行。

如果業務積累方面的優勢和開發技能方面的優勢能疊加起來,那這位開發者,就具有秒殺 85% 以上開發者的能力。

而且,在未來,隨著軟體開發技術的發展,很多業務領域的高手很可能可以用非常便捷的方式迅速上手開發出他們所需要的軟體。到那個時候,你只是泛泛地懂一些軟體開發技能,會很難立足。

4.3 架構和設計

架構師是很多開發者的終極技術夢想,然而不是每個人都能成為架構師。也許 10 個人力有一個可以成為架構師,也許比例更小。

但是,每個人都必須要架構和設計軟體的能力!

因為你沒有架構的能力,沒有設計的能力,就無法站在更高維度去理解軟體開發,就必然被迫奮戰在最簡單也最容易被替代的體力化的編碼工作崗位。而這樣的崗位,必然是拒絕大齡程式設計師的。

所以,即便你還不是架構師,也不是技術經理,也不是管理人員,也不是需求分析師,你也需要在日常工作中拔高一點,經常性的、刻意地去想一想,系統的模組為什麼這麼劃分,服務間的介面為什麼這麼設計,這個業務邏輯為什麼要這樣實現而不是那樣實現,惟其如此,你才能慢慢理解別人的架構與設計,才能慢慢培養自己的架構與設計能力。

4.4 軟技能

《軟體架構師的12項修煉》這本書裡給出了軟體架構師的金字塔能力模型:

640?wx_fmt=png

這個模型,適用於絕大多數軟體開發工程師。

在這本書裡,作者說:

大多數時候所謂的“技術之玻璃天花板”,其實只是缺乏軟技能而已。這些技能可以學到,缺乏的知識可以通過決定改變的努力來彌補。

我們每位開發者都要牢記這句話,要清醒地意識到:

  • 不深入鑽研,缺乏開發技術等硬技能,你很難在初期的職業生涯(0 ~ 5 年)中做出成績佔據重要位置

  • 沒有溝通、協商、領導力、語境切換、創新、認知等軟技能,你很難在職場上走出高度

所以,在你掌握了一定的開發技術可以搞定一些任務後,就要並行地去培養自己的軟技能,比如溝通、表達、協商、演講、輔導、寫作、組織、規劃、管理、彙報、商務談判、創新、設計等等。

只有軟技能匹配你的硬技能,你才能更好的發展。當你軟硬結合,綜合能力爆棚時,根本不用擔心將來怎麼找工作的問題,工作機會會跟著你跑,甚至有人會專門為你創造工作機會。

4.5 演算法

過去的影象、視訊、大資料,現在的 AI ,沒有一樣是離得開演算法的,演算法類崗位具有很高門檻的崗位,但是在軟體領域,越難的事情越少有人做得了的事情,越能超越年齡的限制。

做演算法很難,但是一旦你做進去,壁壘就會形成,就會超過 90% 的程式設計師。

下面是我在拉勾上以“演算法”為關鍵字進行搜尋的結果:

640?wx_fmt=png

這個結果,充分說明了物以稀為貴這個道理。

5. 如何面對年齡這個現實問題

很早之前,我寫過兩篇有關程式設計師年齡問題的文章:

感興趣的可以看看。

今天在這裡,我結合最近的思考,再次來討論這個問題。

首先我要強調一點:憑藉存量技能吃一輩子的時代已經過去了,終身學習是必須的

無法接受這點的程式設計師,請做兩手準備:

  • 調整心態,準備接受 34+ 之後被邊緣化、被淘汰的命運

  • 降低對收入和職位的期望,找到某個願意為你的存量技能買單的組織不鹹不淡地幹下去

接受終身學習的開發者,可以繼續往下看。

我曾經畫過一張圖,描述了這 4 大方向,大家可以看看:

640?wx_fmt=png

對程式設計師來講,上圖指出了 4 個常見的方向,能讓你擺脫年齡的限制:

  1. 在某種開發技能上建立個人品牌,比如 WebRTC 、 Hadoop 、 C++ 等,而且,你的品牌要被業內認可。比如我因為熟悉 Qt ,寫過《Qt Quick核心程式設計》等技術圖書而有了個人品牌,才能在超過 35 歲時還可以輕鬆找到工作。這樣的開發者,實際上是以“技術專家”的身份存在。

  2. 在組織內開發技能過硬,並且精通業務,成為複合型選手,佔據難以替代的位置。這樣的開發者,可以稱之為高階開發工程師或者資深開發者,這樣的角色,在一個合適的平臺上,可以受到重視,可以跟著平臺發展,不用在意年齡。退一步講,即便所在的平臺倒掉了,也會有很多公司願意要。

  3. 成為善於架構某類軟體服務的架構師。這是從高階開發工程師演進過來的更高階的角色。當你真正做過一些大型系統的架構工作,會有很多公司需要你,不必擔心你的年齡,你工作自由了。

  4. 走向管理崗位,成為職業經理人。很多公司都有專案經理、技術經理、研發經理等管理角色,你需要能夠真正做好管理工作。我在《程式設計師的成長課》一書中有詳細討論過如何成為技術管理者,以及技術管理者面臨的18種挑戰,感興趣的小夥伴可以戳閱讀原文買書看看。

除了這 4 個方向,還有一個方向,也可以擺脫年齡的限制:成為演算法工程師

現在我們可以知道,一共有 5 個方向,可以讓你超越年齡的限制,不再害怕“大齡程式設計師”這個稱謂。

不管你選擇哪條道路,還有一件重要的事情,你必須要去做,那就是:積累人脈

要知道,過了 40 歲還要海投簡歷,你將會被“隱藏的年齡門檻”一遍一遍的“潛規則”,你將被迫一次次體會難以言說的沮喪。想想看,那是怎樣的悲催。

記住,真正的大齡開發者,找工作絕不靠網投簡歷,而是靠自己積累的人脈。

參考閱讀:

閱讀原文,購買《程式設計師的成長課》,正確面對開發者的年齡。