1. 程式人生 > >年齡大了,碼農該何去何從

年齡大了,碼農該何去何從

說明

這篇文章是說我的經歷和選擇,沒有任何對從事軟體開發的人員的不敬,更加不是要打擊新入門的開發人員熱情。你有你理解的方式和自由,要在回覆那裡指責為那是沒有必要的,你有時間還是去多看看書,多寫寫程式碼好了。

剛在隔壁看見了一個22歲年輕人遙相呼應的文章,在這裡羅嗦一下。年輕就是資本,有衝勁,這是最大的優勢,好好學習,珍惜年輕的時光。

最後羅嗦一下,我12歲開始學程式設計的時候,相當有興趣,到了15-16歲的時候,我覺得我可以寫很好很好的軟體,到了20歲的時候,我覺得有無窮的力量,在這行肯定可以做一番事業的,至於後來寫了幾個下載了超過500萬的免費軟體,那是後話了。

人的心態會隨著時間的流逝而變化的,幾年後,你可能會有不同的想法,不用著急,如果幾年後部落格園還沒倒的話(dudu別罵我,都老朋友了。。。),你可以回來再看看。

總的一句,不要浪費寶貴的時光。

前言

歲月是把殺豬刀,老了碼農,白了頭髮,殘了身體,消磨了意志。

碼農老矣,尚能碼否?

這是一個老話題了,按照一些人的說法,這是月經貼,最近才在部落格園上看見這樣的帖子。

今天在cnBeta上看見了這個帖子:年過50,還能繼續當碼農嗎,本來只是在快閃記憶體發發牢騷,後來想想,乾脆寫個帖子,寫得長點,打發一下時間也好。

我主要談談我的經歷。

背景

對那些不知道我的情況的同學,我簡單說說我的背景,1993年開始學程式設計,大學讀的不是計算機,而是英語高階翻譯,畢業10年,2年前移民澳洲,現在33歲,仍然在做碼農。

國內

現實是非常殘酷的,無論你是否接受!

在中國,軟體開發這行太固執於年齡了,主要有3個觀點

  1. 年紀大了,思維跟不上,不能學習新技術
  2. 呆久了,老油條,不怎麼幹活,效率低下
  3. 當然是待遇了,呆了那麼多年,工資越來越高,公司成本壓力越來越大

現在國內的物價飛漲,人員的待遇也被迫提高了很多,相比幾年前,甚至以倍數算。現實有點荒謬,老人多年加薪,比不上新人入職薪酬起點,如果關注新聞的,那些或許部分被誇張的某某IT巨頭的畢業生入職20/30萬起跳。這對老人來說,情何以堪啊!

對開發來說,碼農資歷越深,經驗越豐富,要解決關鍵問題,還是要靠紮實經驗,學習新技術也應該是駕輕就熟。

舉個例子,沒有實際業務系統開發經驗的,遇到技術問題,一般都是上網搜尋,如果沒找到,就去stackoverflow之類的網站提問。但如果身邊有個經驗豐富的,能給你解決的情況就比你自己慢慢研究要來得快吧?

再舉個例子,剛入門的同學,不都是喜歡拜師,找前輩學習的嗎?沒有這些前輩,那學習的過程會相當周折。

再舉個例子,沒有一定的經驗的同學,要實現某個功能,譬如excel檔案的讀寫,除了office automation(不建議),更應該去找第三方的元件(相比商業元件,大家都喜歡開源的吧?)。如果平時積累了豐富的經驗同學,需要用到某個功能(如之前說的excel檔案的讀寫),直接就知道可以用如NPOI這樣的元件。

最後再舉個例子,10年前,對.net一竅不通。記得9年前,一個同事,老程式設計師了,很熱衷學習新技術。當時.net出了beta,他買了本書,新建了個winform,拖放了個DataGrid,再用DataAdapter從資料庫取了資料庫之後繫結到DataGrid,資料顯示了,有點RAD的味道,他還演示了master-detail的功能,當時覺得好神奇。當時一起做同事的,還有另外一個老程式設計師,記憶中超過40歲了,跟我們一起做開發,寫起程式來一點都不含糊。

如果我是招聘者,2個應聘者,關鍵技術要求都符合,撇除非技術考量(譬如個性等),一個28歲,一個40歲,我會選40歲的。

我的學習經歷

學習程式設計,開始於1992年,初一,學校開了計算機課程,當時是novell無盤工作站,後來用上了DOS 3.x。先用的GWBASIC,後來接觸了Quick BASIC和pasal。當時跟幾個同學在一起研究,有1年暑假,我們約定要寫個程式出來,比一下誰寫得更好。其中一個同學用Quick BASIC實現了類似x-windows的圖形化的介面,帶輸入法,支援滑鼠(當年dos下都是文字介面,要支援滑鼠和圖形化,要用asm寫),可以顯示圖片,播放音樂和動畫,我覺得好牛。

在中國的時候,經常加班,離開中國前的那個公司,我在那裡工作了5年,星期六還要上大半天,覺得還挺累的。

寫商業軟體這10年來,經驗是逐點逐點積累的。我9年前開始在sourceforge寫開源專案,大約9年前開始在codeproject寫開源文章,8年多前開始在部落格園上寫部落格,每天下班後,再花4-5個小時學習,寫開源專案,寫商業軟體。

直到現在,我每天下班,仍然是上技術網站看文章,譬如codeproject,當然也包括部落格園。也會去開源專案網站看看,譬如sourceforge和codeplex,說起codeplex,這應該是當年那個微軟為了推廣.net而推出的gotdotnet網站的繼任者,雖然codeporoject越來越多的.net文章,但codeplex更純粹的是微軟為了推廣.net而架設的,所以從事.net開發的同學,應該會留意到這個網站絕大部分專案都是.net寫的。

我喜歡看開源專案的程式碼,首先了解某個專案的主要功能,然後看程式碼專案結構,不除錯,直接從主類入手,看設計思想和新技巧,基本上半個小時可以看幾千行吧。

我更喜歡通過寫開源專案來學習新技術,譬如之前寫的那個SQL Monitor,就用了C#4。

最近去了新公司,做新專案的開發,因為老系統的設計有嚴重缺陷,無法應付大訪問量的情況,所以和技術總監研究分析後,決定採用ASP.NET MVC 4 + Knockout + bootstrap。

國外

圍城,外面看裡面好,裡面看外面好。那我們看看外國多少50歲+的程式設計師吧,為什麼我們要對那些大牛致以崇高的敬意,因為他們經過多年的技術鑽研,在某個領域達到一個高度,可以給後來者各種幫助、影響,可以指出技術發展路線。舉個例子,pascal/delphi/c#之父Anders Hejlsberg,沒有他,估計也就沒pascal/delphi/c#,那軟體開發領域少了多少色彩。

正是由於這個不可改變的國內大環境,我選擇了移民。在外國,對工作人員的年齡沒多少要求和“歧視”。應聘的那些公司,從來不會問你年齡,只會純粹地要求你多少年的xx技術經驗。

p.s.外國的待遇比中國好很多,碼農的待遇還是可以過上不錯的日子的。

何去何從

對大齡碼農來說,出路主要有以下幾條:

  • 繼續開發生涯,做資深碼農,從senior、team lead、tech lead到principal,如果你無慾無求,可以安心做個普通的碼農,跟少林的掃地僧那樣,隱藏得很深,很深。。。
  • 轉做設計和架構,譬如architect
  • 轉型做諮詢,譬如consultant,這個在外國很流行,收入也比普通開發人員高
  • 轉型做管理,譬如project manager,director, 技術總監,CTO等
  • 轉型做測試,遇到過這樣的同事,計算機科班,碩士,做了10多年開發,後來轉做測試,也相當的成功
  • 轉型做業務分析,用豐富的經驗,去分析業務,相信可以駕輕就熟
  • 轉型做技術支援,相信有豐富開發經驗的開發人員,可以解決各種客戶提出的技術問題
  • 創業,估計有不少開發人員有這個想法,始終流水的兵,創業可以賺更多,不過風險也高。如果你有很好的創意,相信可以吸引到投資,創一番事業。身邊有幾個朋友經過多年的開發,現在在搞創業
  • 轉行,認識幾個人,轉行了,就跟當年一些同學,從別的專業轉到開發人員一樣。至於行業的選擇,那是因人而異,有做售前的,也有做售後客服的,當然也有跟開發沒有啥關係的,譬如網站管理。更有甚者完全脫離IT行業,譬如去淘寶開網店。。。

出路是因人而異的,沒有模式。一些同學蠢蠢欲動,但對前景又沒有信心,彷徨,猶豫,隨著時間流逝,年齡越來越大,心裡越是沒底,就跟一個沒跟的浮萍,走一步看一步,其實這樣是沒有辦法中的一個辦法。當你沒有相當的信心,不貿然下決定去改變前途,這是可以理解的。但歲月不能因此而蹉跎啊,今天30歲,一眨眼,明天就是40歲了。我仍然清晰記得20年剛開始學程式設計的日子呢,那個時候是純粹的信徒,對計算機程式設計,那是比劉姥姥進大觀園還要驚訝,覺得寫個程式碼就可以顯示這麼神奇的東西。

說到出國,這隻能算半個出路,因為出國了,你還是從事軟體開發的話,那就不是轉型了,只是換了個工作環境。

我的選擇

我熱愛程式設計,程式設計是我的第二生命。

從學程式設計開始到現在,已經20年了,如果說不累,那是不可能的。10年的商業軟體開發,每天10多小時在電腦面前寫程式碼,落下了一身的毛病,嚴重的頸椎病,肩周炎,慢性胃炎,吃止痛藥比吃零食還來得頻繁。

碼農,犧牲太多了,過度的加班不提也罷,長期在電腦面前,臉部油脂分泌也多,面板乾燥,容貌憔悴,尤其顯得比同齡人蒼老。不知道我真實年齡的,都猜我40來歲。而且IT圈子還流行一個段子,說碼農因為接受的輻射太多,所以生女兒的機率很高,那些還幻想子承父業的,估計要崩潰。

說到犧牲,更加別提那些暴斃的碼農了。

如果我不喜歡程式設計,我不會弄到現在全身的病痛,我可以活得更舒服,早睡晚起,無需無休止的加班,無需挑燈夜戰,更加沒有那些無休止的病痛,無需吃那些止痛藥,可以有更多時間陪伴家人,可以有更多的時間去看電影,聽音樂,休息,過舒坦的生活。

不過,做一行,愛一行,專一行。即便你覺得累,如果你真心喜歡開發,也會繼續做下去。如果你不喜歡,純粹是當年高考計算機專業熱門而入了行,那每天也是煎熬。

某樣事情,你重複做20年,你總有覺得身心俱疲的時候。你可以連續加班幾天,甚至一週,但如果你每天都要加班,你必然有崩潰的一天。

每當這個時候,你應該好好坐下來,休息一下,想想何去何從。軟體開發,跟其它工作一樣,首先是要養家餬口,一般來說,大家會選擇收入可觀的行業,幸運的時候,IT相比其它行業,收入還是算不錯的。

每當你想放棄的時候,認真想想,軟體開發生涯,到底是不是到盡頭了。

就目前的情況來說,我還是滿意現在的工作內容的,因為可以學到新東西,也可以用自己的經驗給同事解決問題。

在未來的幾年裡,我仍然會選擇繼續做軟體開發。