程式設計師這個職業究竟可以幹多少年,在中國這片神奇的土地上,很多人都說只能幹到30歲,然後就需要轉型,就像《程式設計師技術練級攻略》這篇文章很多人回覆到這種玩法會玩死人的一樣。我在很多面試中,問到應聘者未來的規劃都能聽到好些應聘都說程式設計師是個青春飯。因為,大多數程式設計師都認為,程式設計這個事只能幹到30歲,最多35歲吧。每每我聽到這樣的言論,都讓我感到相當的無語,大家都希望能像《21天速成C++》那樣速成,好多時候超級有想和他們爭論的衝動,但後來想想算了,因為你無法幫助那些只想呆在井底思維封閉而且想走捷徑速成的人。
今天,我們又來談這個老話題,因為我看到一篇論文,但是也一定會有很多人都會找出各種理由來論證這篇論文的是錯的,無所謂了,我把這篇文章送給那些和我一樣準備為技術和程式設計執著和堅持的人。
論文
首先,我們先來看一篇論文《Is Programming Knowledge Related to Age?》(PDF連結),這篇論文是兩個北卡羅萊納州立大學電腦科學系的兩個人Patrick Morrison 和 Emerson Murphy-Hill 對StackOverflow.com上的使用者做了相關的資料探勘得出來的一些資料。(我們知道StackOverflow.com上的資料是公開的,任何人都可以用來分析和統計,所以這篇論文的真實性是有的)
資料取樣和清洗條件如下:(資料全量是1694981使用者,平均年齡30.3歲)
- 15-70歲之間的使用者(這年齡段的使用者被稱做“Working age”),當然,有很多使用者沒有輸入年齡,這些使用者都被過濾了。
- 使用者在2012年內都回答過問題。因為StackOverflow在2012年對問題和答案的質量要求得比以前高了一倍,所以更能反映程式設計師的真實水平。
- Reputation聲望在2-100K之間。(注:StackOverflow的使用者Reputation是得到社會認可的,在面試和招聘中是硬通貨幣。比大學的學分更有價值)
上述的條件一共過濾出84,248名程式設計師,平均年齡:29.02歲,平均Reputaion在1073.9分。
年齡分佈圖
下面我們來看一下他們的年齡分佈圖:我們可以看到程式設計師年紀的正態分佈(高點在25歲左右,但是中點在29歲左右)
能力和年齡分佈圖
然後,計算每個人每個月的Reputation,這樣可以找到這個使用者的真正的活躍時間,這樣便於計算這個程式設計師的真實能力。(總聲望 / 活躍時間),可以得到他平均每個月得來的Reputation。
我們來看看程式設計師的能力和年齡段的分佈圖:(你可能會大吃一驚)
上圖中我們可以看到,程式設計師的能力在從25歲左右開始上升,一直到50歲後才會開始下降。所以說,程式設計師吃的不是青春飯。只有碼農,靠蠻力,用體力而不是用腦力的程式設計師才是吃青春飯的人。
年紀大的人是否跟不上新技術
論文的作者分析了Tag,用了最近5年內比較流行的技術Tag,然後用了一套比較嚴謹的演算法來檢視那些所謂的“老程式設計師”是否在新技術上跟上不了,所謂跟不上,也就是這些老的程式設計師在回答這些新技術上並不活躍。所謂老,就是37歲以上的程式設計師(就是我現在的年紀)。
得到了下表:可以看到,老程式設計師和年輕的程式設計師對於一些新技術的學習來說也是差不多的,甚至有些項還超過了年輕的程式設計師。
結論
論文的結論是:
1)程式設計師技術能力上升是可以到50歲或60歲的。
2)老程式設計師在獲取新技術上的能力並不比年輕的程式設計師差。
我的一些感受
最後,我說一說我的一些感受:
- 這些年來的對於外企和國內感受—— 國外牛B的IT公司的工程能力並不見得比國內的要強多少,但是國外那些NB的IT公司的架構和設計能力遠遠超過國內的公司,最可怕的是,那些有超強架構和設計能力的“老程式設計師們”還戰鬥在一線,這些戰鬥在一線的老鳥的能力絕對超過100個普能的新手。
- 對年輕程式設計師的感受——國內新一代的程式設計師們太浮燥了。老實說,對於大多數人來說,如果你沒有程式設計到30歲,你還不能成為一個“合格”的程式設計師。所以,並不是程式設計編到30歲就玩完了,而是程式設計編到30歲才剛剛入門。這些不合格的程式,整天BS這個不好,那個不好的,而且喜歡速成,好大喜功。
- 我是一個奔四的人了,程式設計就像登山一樣,越往上爬人越少,所以,在我這個年紀還有想法,對程式設計還有熱情的人不多了,基本上都是轉Manager了。其實,什麼職位,Title都是虛的,公司沒了什麼都沒了,只有技術才是硬通貨。而且,越是這個年紀還在玩程式設計玩技術的人,其實其經驗和能力都是比較強的,都是中堅力量,如果還有其它這個年紀和我一樣的人,求交往。
(全文完)