老調(diào)重彈:年齡大了,碼農(nóng)何去何從
前言
歲月是把殺豬刀,老了碼農(nóng),白了頭發(fā),殘了身體,消磨了意志。
碼農(nóng)老矣,尚能碼否?
這是一個(gè)老話(huà)題了,按照一些人的說(shuō)法,這是月經(jīng)貼,最近才在博客園上看見(jiàn)這樣的帖子。
今天在cnBeta上看見(jiàn)了這個(gè)帖子:年過(guò)50,還能繼續(xù)當(dāng)碼農(nóng)嗎,本來(lái)只是在閃存發(fā)發(fā)牢騷,后來(lái)想想,干脆寫(xiě)個(gè)帖子,寫(xiě)得長(zhǎng)點(diǎn),打發(fā)一下時(shí)間也好。
我主要談?wù)勎业慕?jīng)歷。
背景
對(duì)那些不知道我的情況的同學(xué),我簡(jiǎn)單說(shuō)說(shuō)我的背景,1993年開(kāi)始學(xué)編程,大學(xué)讀的不是計(jì)算機(jī),而是英語(yǔ)高級(jí)翻譯,畢業(yè)10年,2年前移民澳洲,現(xiàn)在33歲,仍然在做碼農(nóng)。
國(guó)內(nèi)
現(xiàn)實(shí)是非常殘酷的,無(wú)論你是否接受!
在中國(guó),軟件開(kāi)發(fā)這行太固執(zhí)于年齡了,主要有3個(gè)觀點(diǎn)
- 年紀(jì)大了,思維跟不上,不能學(xué)習(xí)新技術(shù)
- 呆久了,老油條,不怎么干活,效率低下
- 當(dāng)然是待遇了,呆了那么多年,工資越來(lái)越高,公司成本壓力越來(lái)越大
現(xiàn)在國(guó)內(nèi)的物價(jià)飛漲,人員的待遇也被迫提高了很多,相比幾年前,甚至以倍數(shù)算。現(xiàn)實(shí)有點(diǎn)荒謬,老人多年加薪,比不上新人入職薪酬起點(diǎn),如果關(guān)注新聞的,那些或許部分被夸張的某某IT巨頭的畢業(yè)生入職20/30萬(wàn)起跳。這對(duì)老人來(lái)說(shuō),情何以堪啊!
對(duì)開(kāi)發(fā)來(lái)說(shuō),碼農(nóng)資歷越深,經(jīng)驗(yàn)越豐富,要解決關(guān)鍵問(wèn)題,還是要靠扎實(shí)經(jīng)驗(yàn),學(xué)習(xí)新技術(shù)也應(yīng)該是駕輕就熟。
舉個(gè)例子,沒(méi)有實(shí)際業(yè)務(wù)系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)的,遇到技術(shù)問(wèn)題,一般都是上網(wǎng)搜索,如果沒(méi)找到,就去stackoverflow之類(lèi)的網(wǎng)站提問(wèn)。但如果身邊有個(gè)經(jīng)驗(yàn)豐富的,能給你解決的情況就比你自己慢慢研究要來(lái)得快吧?
再舉個(gè)例子,剛?cè)腴T(mén)的同學(xué),不都是喜歡拜師,找前輩學(xué)習(xí)的嗎?沒(méi)有這些前輩,那學(xué)習(xí)的過(guò)程會(huì)相當(dāng)周折。
再舉個(gè)例子,沒(méi)有一定的經(jīng)驗(yàn)的同學(xué),要實(shí)現(xiàn)某個(gè)功能,譬如excel文件的讀寫(xiě),除了office automation(不建議),更應(yīng)該去找第三方的組件(相比商業(yè)組件,大家都喜歡開(kāi)源的吧?)。如果平時(shí)積累了豐富的經(jīng)驗(yàn)同學(xué),需要用到某個(gè)功能(如之前說(shuō)的excel文件的讀寫(xiě)),直接就知道可以用如NPOI這樣的組件。
最后再舉個(gè)例子,10年前,對(duì).net一竅不通。記得9年前,一個(gè)同事,老程序員了,很熱衷學(xué)習(xí)新技術(shù)。當(dāng)時(shí).net出了beta,他買(mǎi)了本書(shū),新建了個(gè)winform,拖放了個(gè)DataGrid,再用DataAdapter從數(shù)據(jù)庫(kù)取了數(shù)據(jù)庫(kù)之后綁定到DataGrid,數(shù)據(jù)顯示了,有點(diǎn)RAD的味道,他還演示了master-detail的功能,當(dāng)時(shí)覺(jué)得好神奇。當(dāng)時(shí)一起做同事的,還有另外一個(gè)老程序員,記憶中超過(guò)40歲了,跟我們一起做開(kāi)發(fā),寫(xiě)起程序來(lái)一點(diǎn)都不含糊。
如果我是招聘者,2個(gè)應(yīng)聘者,關(guān)鍵技術(shù)要求都符合,撇除非技術(shù)考量(譬如個(gè)性等),一個(gè)28歲,一個(gè)40歲,我會(huì)選40歲的。
我的學(xué)習(xí)經(jīng)歷
學(xué)習(xí)編程,開(kāi)始于1992年,初一,學(xué)校開(kāi)了計(jì)算機(jī)課程,當(dāng)時(shí)是novell無(wú)盤(pán)工作站,后來(lái)用上了DOS 3.x。先用的GWBASIC,后來(lái)接觸了Quick BASIC和pasal。當(dāng)時(shí)跟幾個(gè)同學(xué)在一起研究,有1年暑假,我們約定要寫(xiě)個(gè)程序出來(lái),比一下誰(shuí)寫(xiě)得更好。其中一個(gè)同學(xué)用Quick BASIC實(shí)現(xiàn)了類(lèi)似x-windows的圖形化的界面,帶輸入法,支持鼠標(biāo)(當(dāng)年dos下都是文字界面,要支持鼠標(biāo)和圖形化,要用asm寫(xiě)),可以顯示圖片,播放音樂(lè)和動(dòng)畫(huà),我覺(jué)得好牛。
在中國(guó)的時(shí)候,經(jīng)常加班,離開(kāi)中國(guó)前的那個(gè)公司,我在那里工作了5年,星期六還要上大半天,覺(jué)得還挺累的。
寫(xiě)商業(yè)軟件這10年來(lái),經(jīng)驗(yàn)是逐點(diǎn)逐點(diǎn)積累的。我9年前開(kāi)始在sourceforge寫(xiě)開(kāi)源項(xiàng)目,大約9年前開(kāi)始在codeproject寫(xiě)開(kāi)源文章,8年多前開(kāi)始在博客園上寫(xiě)博客,每天下班后,再花4-5個(gè)小時(shí)學(xué)習(xí),寫(xiě)開(kāi)源項(xiàng)目,寫(xiě)商業(yè)軟件。
直到現(xiàn)在,我每天下班,仍然是上技術(shù)網(wǎng)站看文章,譬如codeproject,當(dāng)然也包括博客園。也會(huì)去開(kāi)源項(xiàng)目網(wǎng)站看看,譬如 sourceforge和codeplex,說(shuō)起codeplex,這應(yīng)該是當(dāng)年那個(gè)微軟為了推廣.net而推出的gotdotnet網(wǎng)站的繼任者,雖然 codeporoject越來(lái)越多的.net文章,但codeplex更純粹的是微軟為了推廣.net而架設(shè)的,所以從事.net開(kāi)發(fā)的同學(xué),應(yīng)該會(huì)留意到這個(gè)網(wǎng)站絕大部分項(xiàng)目都是.net寫(xiě)的。
我喜歡看開(kāi)源項(xiàng)目的代碼,首先了解某個(gè)項(xiàng)目的主要功能,然后看代碼項(xiàng)目結(jié)構(gòu),不調(diào)試,直接從主類(lèi)入手,看設(shè)計(jì)思想和新技巧,基本上半個(gè)小時(shí)可以看幾千行吧。
我更喜歡通過(guò)寫(xiě)開(kāi)源項(xiàng)目來(lái)學(xué)習(xí)新技術(shù),譬如之前寫(xiě)的那個(gè)SQL Monitor,就用了C#4。
最近去了新公司,做新項(xiàng)目的開(kāi)發(fā),因?yàn)槔舷到y(tǒng)的設(shè)計(jì)有嚴(yán)重缺陷,無(wú)法應(yīng)付大訪問(wèn)量的情況,所以和技術(shù)總監(jiān)研究分析后,決定采用ASP.NET MVC 4 + Knockout + bootstrap。
國(guó)外
圍城,外面看里面好,里面看外面好。那我們看看外國(guó)多少50歲+的程序員吧,為什么我們要對(duì)那些大牛致以崇高的敬意,因?yàn)樗麄兘?jīng)過(guò)多年的技術(shù)鉆研,在某個(gè)領(lǐng)域達(dá)到一個(gè)高度,可以給后來(lái)者各種幫助、影響,可以指出技術(shù)發(fā)展路線。舉個(gè)例子,pascal/delphi/c#之父Anders Hejlsberg,沒(méi)有他,估計(jì)也就沒(méi)pascal/delphi/c#,那軟件開(kāi)發(fā)領(lǐng)域少了多少色彩。
正是由于這個(gè)不可改變的國(guó)內(nèi)大環(huán)境,我選擇了移民。在外國(guó),對(duì)工作人員的年齡沒(méi)多少要求和“歧視”。應(yīng)聘的那些公司,從來(lái)不會(huì)問(wèn)你年齡,只會(huì)純粹地要求你多少年的xx技術(shù)經(jīng)驗(yàn)。
p.s.外國(guó)的待遇比中國(guó)好很多,碼農(nóng)的待遇還是可以過(guò)上不錯(cuò)的日子的。
何去何從
對(duì)大齡碼農(nóng)來(lái)說(shuō),出路主要有以下幾條:
- 繼續(xù)開(kāi)發(fā)生涯,做資深碼農(nóng),從senior、team lead、tech lead到principal,如果你無(wú)欲無(wú)求,可以安心做個(gè)普通的碼農(nóng),跟少林的掃地僧那樣,隱藏得很深,很深。。。
- 轉(zhuǎn)做設(shè)計(jì)和架構(gòu),譬如architect
- 轉(zhuǎn)型做咨詢(xún),譬如consultant,這個(gè)在外國(guó)很流行,收入也比普通開(kāi)發(fā)人員高
- 轉(zhuǎn)型做管理,譬如project manager,CTO等
- 轉(zhuǎn)型做測(cè)試,遇到過(guò)這樣的同事,計(jì)算機(jī)科班,碩士,做了10多年開(kāi)發(fā),后來(lái)轉(zhuǎn)做測(cè)試,也相當(dāng)?shù)某晒?/li>
- 轉(zhuǎn)型做業(yè)務(wù)分析,用豐富的經(jīng)驗(yàn),去分析業(yè)務(wù),相信可以駕輕就熟
- 轉(zhuǎn)型做技術(shù)支持,相信有豐富開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)人員,可以解決各種客戶(hù)提出的技術(shù)問(wèn)題
- 創(chuàng)業(yè),估計(jì)有不少開(kāi)發(fā)人員有這個(gè)想法,始終流水的兵,創(chuàng)業(yè)可以賺更多,不過(guò)風(fēng)險(xiǎn)也高。如果你有很好的創(chuàng)意,相信可以吸引到投資,創(chuàng)一番事業(yè)。身邊有幾個(gè)朋友經(jīng)過(guò)多年的開(kāi)發(fā),現(xiàn)在在搞創(chuàng)業(yè)
- 轉(zhuǎn)行,認(rèn)識(shí)幾個(gè)人,轉(zhuǎn)行了,就跟當(dāng)年一些同學(xué),從別的專(zhuān)業(yè)轉(zhuǎn)到開(kāi)發(fā)人員一樣。至于行業(yè)的選擇,那是因人而異,有做售前的,也有做售后客服的,當(dāng)然也有跟開(kāi)發(fā)沒(méi)有啥關(guān)系的,譬如網(wǎng)站管理。更有甚者完全脫離IT行業(yè),譬如去淘寶開(kāi)網(wǎng)店。。。
出路是因人而異的,沒(méi)有模式。一些同學(xué)蠢蠢欲動(dòng),但對(duì)前景又沒(méi)有信心,彷徨,猶豫,隨著時(shí)間流逝,年齡越來(lái)越大,心里越是沒(méi)底,就跟一個(gè)沒(méi)跟的浮萍,走一步看一步,其實(shí)這樣是沒(méi)有辦法中的一個(gè)辦法。當(dāng)你沒(méi)有相當(dāng)?shù)男判模毁Q(mào)然下決定去改變前途,這是可以理解的。但歲月不能因此而蹉跎啊,今天30 歲,一眨眼,明天就是40歲了。我仍然清晰記得20年剛開(kāi)始學(xué)編程的日子呢,那個(gè)時(shí)候是純粹的信徒,對(duì)計(jì)算機(jī)編程,那是比劉姥姥進(jìn)大觀園還要驚訝,覺(jué)得寫(xiě)個(gè)代碼就可以顯示這么神奇的東西。
說(shuō)到出國(guó),這只能算半個(gè)出路,因?yàn)槌鰢?guó)了,你還是從事軟件開(kāi)發(fā)的話(huà),那就不是轉(zhuǎn)型了,只是換了個(gè)工作環(huán)境。
我的選擇
我熱愛(ài)編程,編程是我的第二生命。
從學(xué)編程開(kāi)始到現(xiàn)在,已經(jīng)20年了,如果說(shuō)不累,那是不可能的。10年的商業(yè)軟件開(kāi)發(fā),每天10多小時(shí)在電腦面前寫(xiě)代碼,落下了一身的毛病,嚴(yán)重的頸椎病,肩周炎,慢性胃炎,吃止痛藥比吃零食還來(lái)得頻繁。
碼農(nóng),犧牲太多了,過(guò)度的加班不提也罷,長(zhǎng)期在電腦面前,臉部油脂分泌也多,皮膚干燥,容貌憔悴,尤其顯得比同齡人蒼老。不知道我真實(shí)年齡的,都猜我40來(lái)歲。而且IT圈子還流行一個(gè)段子,說(shuō)碼農(nóng)因?yàn)榻邮艿妮椛涮啵陨畠旱膸茁屎芨撸切┻€幻想子承父業(yè)的,估計(jì)要崩潰。
說(shuō)到犧牲,更加別提那些暴斃的碼農(nóng)了。
如果我不喜歡編程,我不會(huì)弄到現(xiàn)在全身的病痛,我可以活得更舒服,早睡晚起,無(wú)需無(wú)休止的加班,無(wú)需挑燈夜戰(zhàn),更加沒(méi)有那些無(wú)休止的病痛,無(wú)需吃那些止痛藥,可以有更多時(shí)間陪伴家人,可以有更多的時(shí)間去看電影,聽(tīng)音樂(lè),休息,過(guò)舒坦的生活。
不過(guò),做一行,愛(ài)一行,專(zhuān)一行。即便你覺(jué)得累,如果你真心喜歡開(kāi)發(fā),也會(huì)繼續(xù)做下去。如果你不喜歡,純粹是當(dāng)年高考計(jì)算機(jī)專(zhuān)業(yè)熱門(mén)而入了行,那每天也是煎熬。
某樣事情,你重復(fù)做20年,你總有覺(jué)得身心俱疲的時(shí)候。你可以連續(xù)加班幾天,甚至一周,但如果你每天都要加班,你必然有崩潰的一天。
每當(dāng)這個(gè)時(shí)候,你應(yīng)該好好坐下來(lái),休息一下,想想何去何從。軟件開(kāi)發(fā),跟其它工作一樣,首先是要養(yǎng)家糊口,一般來(lái)說(shuō),大家會(huì)選擇收入可觀的行業(yè),幸運(yùn)的時(shí)候,IT相比其它行業(yè),收入還是算不錯(cuò)的。
每當(dāng)你想放棄的時(shí)候,認(rèn)真想想,軟件開(kāi)發(fā)生涯,到底是不是到盡頭了。
就目前的情況來(lái)說(shuō),我還是滿(mǎn)意現(xiàn)在的工作內(nèi)容的,因?yàn)榭梢詫W(xué)到新東西,也可以用自己的經(jīng)驗(yàn)給同事解決問(wèn)題。
在未來(lái)的幾年里,我仍然會(huì)選擇繼續(xù)做軟件開(kāi)發(fā)。
原文鏈接:http://www.cnblogs.com/unruledboy/archive/2012/09/20/OldCoder.html