走出浮躁的泥沼:關(guān)于技術(shù)與工作
關(guān)于技術(shù)與工作
我覺(jué)得,技術(shù)與工作最理想的結(jié)合狀態(tài)是,自己能學(xué)習(xí)到新的技術(shù),這些技術(shù)也能應(yīng)用到工作中;工作的內(nèi)容又不那么枯燥,都那么具有挑戰(zhàn)性。
程序員的工作首先應(yīng)該是富有挑戰(zhàn)性的
有這么一句名言:
工作,它之所以成為工作,是因?yàn)槟阒恍枰ぷ鞫恍枰伎肌?/span>
你也許會(huì)對(duì)這句話有異議,但是大部分人和大部分工作確實(shí)是這樣的。工廠員工在流水線上機(jī)械地組裝,服務(wù)員每天重復(fù)著招待客人,廚師日復(fù)一日地烹制菜肴,等等。工作,就是人和機(jī)器之間的中間層,等到某一天機(jī)器人有這種功能了,人自然就不用工作了。
但是我覺(jué)得,如果你在工作中比別人多那么一點(diǎn)思考,也許你就會(huì)出類拔萃,程序員這份工作就是這樣。我認(rèn)為,程序員的工作首先應(yīng)該是富有挑戰(zhàn)性 的。但是我見(jiàn)到很多國(guó)內(nèi)的程序員,只是項(xiàng)目完了接著下一個(gè)項(xiàng)目,代碼重復(fù)了一遍又一遍……也許知道代碼有問(wèn)題要重構(gòu),系統(tǒng)架構(gòu)不好要改進(jìn),可是沒(méi)那么多時(shí) 間啊,天天加班干活,項(xiàng)目時(shí)間緊迫。就這么惡性循環(huán),就應(yīng)了那句話:你說(shuō)你有5年工作經(jīng)驗(yàn),但在我眼里,你不過(guò)是將一年的工作經(jīng)驗(yàn)重復(fù)了5年。
程序員的工作是富有挑戰(zhàn)性的,但是這個(gè)是在國(guó)外,在國(guó)內(nèi),很少真的有程序員,能做到程序結(jié)伴,不斷挑戰(zhàn)新的高度。大多數(shù)是年輕的時(shí)候努力奮斗了 幾年,到后來(lái),因?yàn)楸痉较虻陌l(fā)展空間不是很大了,但是又不能跳轉(zhuǎn)到其他的方向,怎么辦呢,帶幾個(gè)新人吧,這樣也有點(diǎn)領(lǐng)導(dǎo)的性質(zhì)了。但是,有沒(méi)有想過(guò),大學(xué) 研究生讀了這么多年,工作寫了這么多代碼,突然有一天不寫了,轉(zhuǎn)做項(xiàng)目管理了。這也就是中國(guó)的IT的現(xiàn)狀,工作幾年之后大家都痛苦地拋棄了代碼,拋棄了自 己以前的很多代碼積累。
程序員的工作與賺錢
我們出去工作,說(shuō)到底,最根本的目的就是賺錢。但是,我們不能因?yàn)橘嶅X,而丟棄自己的信仰。
先來(lái)來(lái)看看這個(gè)一個(gè)故事吧:
照片上那個(gè)戴墨鏡的哥們, 叫 Nicholas McGuire, 是蘭州大學(xué)的客座教授??吹竭@個(gè)照片,和我一樣,一定有無(wú)數(shù)多的問(wèn)題, 我一個(gè)一個(gè)幫你問(wèn),然后解答吧。
你可能會(huì)奇怪,這么鄭重的場(chǎng)合, 他為什么戴墨鏡? ??釂??
答:其實(shí)不是耍酷,Nicholas 其實(shí)是一個(gè)半盲人。
別人都是西裝,他為什么只有襯衣 ?耍酷嗎?
答:其實(shí)不是耍酷, Nicholas 真的沒(méi)有西裝,他穿的那身,是他能找到的最好的衣服。
他到蘭州大學(xué)研究什么的? 是研究戈壁生態(tài), 還是沙漠治理,還是蘭州拉面 ?
答:其實(shí)都不是,他研究開(kāi)源的嵌入式實(shí)時(shí)操作系統(tǒng)——RTLinux, 以及與此相關(guān)的一切開(kāi)源軟件以及嵌入式系統(tǒng),是 RTLinux 的內(nèi)核代碼管理員之一,不折不扣的高科技。
他是蘭州大學(xué)高薪聘請(qǐng)來(lái)的嗎?
答:沒(méi)有高薪,事實(shí)上,一直連薪水都沒(méi)有,直到今年,才申請(qǐng)了一些。
他是不是每年來(lái)蘭州一兩個(gè)月,就當(dāng)是度假?
答:不是,他實(shí)實(shí)在在在蘭州大學(xué)呆 10 個(gè)月, 只有 2 個(gè)月回德國(guó)老家度假。
他是不是只這樣做了 1 兩年?
答: 不是,他從 2005 年開(kāi)始,直到現(xiàn)在,一直這樣。
他圖什么 ?
答: 因?yàn)樘m州大學(xué)有一個(gè)叫周慶國(guó)的老師以及小組, 不停地向 RTLinux 的內(nèi)核提交代碼。他去蘭州大學(xué),就是要和他們一起工作。
蘭州大學(xué)的學(xué)生英語(yǔ)如何?能和他一起工作嗎?
答: 他和蘭州大學(xué)的學(xué)生, 無(wú)論是生活都是開(kāi)會(huì)還是寫文檔,通通遵循開(kāi)源社區(qū)的標(biāo)準(zhǔn), 用英語(yǔ)交流,木有問(wèn)題。
為什么選擇蘭州大學(xué)?
答:因?yàn)樘m州大學(xué)有一個(gè)叫周慶國(guó)的老師以及小組, 不停地向 RTLinux 的內(nèi)核提交代碼。
周慶國(guó)老師拿到過(guò)國(guó)家項(xiàng)目的資助嗎?比如發(fā)展開(kāi)源軟件基金,紅旗 linux 神馬滴。
答:幾乎沒(méi)有,蘭州地處西部,離北京很遠(yuǎn),拿到項(xiàng)目很難,他能作的就是不停地研究代碼,提交代碼,向開(kāi)源社區(qū)貢獻(xiàn)代碼。
這個(gè)與賽靈思有什么關(guān)系?
答: 當(dāng)他聽(tīng)說(shuō)賽靈思的在 ZYNQ 的 QEMU 模型上跑的開(kāi)源 Linux 內(nèi)核推出了,并且發(fā)布在 wiki.xilinx.com 上,立即就開(kāi)始下載研究,跑起來(lái), 即沒(méi)有要項(xiàng)目經(jīng)費(fèi),也沒(méi)有要資助和捐贈(zèng),因?yàn)樵陂_(kāi)源人的眼里——無(wú)論是開(kāi)源軟件還是開(kāi)源硬件,開(kāi)源就象信仰一樣,無(wú)需證明。
看完這個(gè)故事有什么感想嗎?
不是每一個(gè)程序員都要成為比爾·蓋茨,都要建立商業(yè)帝國(guó)成為世界首富。也不是每一個(gè)程序員都要做馬化騰,建立QQ帝國(guó)君臨天下。但是我覺(jué)得,每 個(gè)程序員都應(yīng)該向Dennis Ritchie(C語(yǔ)言之父)學(xué)習(xí),在貝爾實(shí)驗(yàn)室默默為計(jì)算機(jī)界奮斗一生。每個(gè)程序員都應(yīng)該向Linus Torvalds學(xué)習(xí),寫出改變計(jì)算機(jī)世界的Linux但卻不爭(zhēng)名奪利。比爾·蓋茨、馬化騰是IT商業(yè)化的代表,而Dennis Ritchie和Linus Torvalds則是計(jì)算機(jī)界學(xué)者的先驅(qū)。
臺(tái)灣作家龍應(yīng)臺(tái)說(shuō)了這么一句話:你可以選擇做官,你也可以選擇掙錢,但你不能選擇通過(guò)做官來(lái)掙錢。
同樣的,對(duì)程序員而言,你可以選擇研究技術(shù),也可以選擇賺錢。但是以賺錢的心態(tài)去做程序員,那么你也許會(huì)品嘗不到技術(shù)的很多快樂(lè)。程序員是一個(gè) 職業(yè),一個(gè)專業(yè)的職業(yè),那么作為一個(gè)程序員應(yīng)該有一個(gè)專業(yè)上的目標(biāo),賺多少錢和程序員的專業(yè)素養(yǎng)沒(méi)有關(guān)系,你可以把賺多少錢開(kāi)寶馬作為人生的目標(biāo),但是你 作為程序員的目標(biāo)不應(yīng)該是賺錢??梢赃@么說(shuō),現(xiàn)在行業(yè)內(nèi)的程序員很多都不是真正的程序員,對(duì)那些做著程序員工作的代碼工人來(lái)說(shuō),程序員只是一個(gè)混口飯吃的 工作而已,那么工作的目的就是賺錢,盯著錢看就沒(méi)什么不對(duì)了。人生目標(biāo)和自己的專業(yè)目標(biāo)分不清楚,難怪哪頭都討不到好。專業(yè)和職業(yè)是兩碼事,專業(yè)關(guān)注的是 你做事的能力,職業(yè)關(guān)系的是你在公司的職位,這個(gè)東西理不清楚就只能是兩頭不討好。真正的程序員應(yīng)該是個(gè)熱愛(ài)技術(shù)的Geek,喜歡創(chuàng)造與挑戰(zhàn),享受技術(shù)帶 來(lái)的喜悅與創(chuàng)造帶來(lái)的成就感,而非不斷編寫著一遍又一遍重復(fù)code的碼農(nóng)。
作為程序員應(yīng)該追求的是自己專業(yè)素養(yǎng)上的提升,作為一個(gè)職員應(yīng)該向著高薪努力,當(dāng)然有的程序員自己又是老板,比如康盛創(chuàng)想的戴志康 ,那么作為老板又有另外的追求了。我覺(jué)得作為一個(gè)程序員,在一個(gè)程序員的社區(qū)里應(yīng)該關(guān)注的是自己的專業(yè)而不是在這里大談程序員怎么怎么賺不到錢。
也許,每一個(gè)程序員在開(kāi)始的時(shí)候都想過(guò)要寫出非常牛逼的程序,做個(gè)人人崇拜的高手,直到有一天,他發(fā)現(xiàn)他的代碼并不能改變世界的時(shí)候,就會(huì)向現(xiàn)實(shí)屈服,甚至拋棄往昔自己喜歡的編程。
與程序打交道,是我們選擇的工作,也是我們選擇的職業(yè)。程序員,應(yīng)該是一個(gè)值得驕傲的稱號(hào),而非是碼農(nóng)的代名詞。走出浮躁的泥沼,我們會(huì)找到另外一個(gè)不同的自己。
學(xué)會(huì)享受學(xué)習(xí)過(guò)程的樂(lè)趣
學(xué)習(xí)是一輩子的事情,對(duì)于程序員來(lái)說(shuō)更是如此,所以如果沒(méi)有學(xué)會(huì)享受學(xué)習(xí)過(guò)程的樂(lè)趣,那么學(xué)習(xí)將會(huì)是你人生的一個(gè)重壓。
以學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)為例。大家都知道,對(duì)于程序員而言,數(shù)據(jù)結(jié)構(gòu)是基礎(chǔ),是必須學(xué)會(huì)的課程。但是現(xiàn)在很多語(yǔ)言,細(xì)節(jié)都封裝得很好,比如 Java、.Net、PHP,幾乎都不需要你用到多少數(shù)據(jù)結(jié)構(gòu)與算法的知識(shí),以致于很多人覺(jué)得,我就不會(huì)數(shù)據(jù)結(jié)構(gòu),我還不一樣好好工作嗎?這就是浮躁的開(kāi) 始了。
的確,對(duì)大部分程序員來(lái)說(shuō),工作上很多時(shí)候不需要用到數(shù)據(jù)結(jié)構(gòu)。但是你會(huì)發(fā)現(xiàn),工作若干年后,你的技術(shù)水平會(huì)停滯不前,做的東西總是CURD, 再加上一點(diǎn)設(shè)計(jì)模式,再者可能有NoSQL、memcache之類的應(yīng)用。但是,當(dāng)你寫這些代碼寫到疲軟的時(shí)候,你會(huì)發(fā)現(xiàn)這些都是應(yīng)用層面的東西,別人做 好的現(xiàn)成的東西,到你想理解它們底層與原理的時(shí)候,沒(méi)有數(shù)據(jù)結(jié)構(gòu)與算法的知識(shí)支撐,你會(huì)很吃力。勿在浮沙筑高臺(tái),盡管你開(kāi)源軟件用得多好,如果不去理解計(jì) 算機(jī)的底層,頂多也就是個(gè)高級(jí)點(diǎn)的碼農(nóng)。
要走出浮躁的泥沼,只要理解一句話就行:
學(xué)習(xí)的真正樂(lè)趣不是因?yàn)樗杏?,而是因?yàn)閷W(xué)習(xí)的過(guò)程本身有趣。
所以你需要去發(fā)現(xiàn)學(xué)習(xí)過(guò)程有哪些樂(lè)趣,還是拿數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)為例。
1. 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)在短期內(nèi)不會(huì)對(duì)工作有什么效果,但它是對(duì)未來(lái)以及自己的投資。學(xué)習(xí)它你一定不要浮躁,不要覺(jué)得它短期內(nèi)收益不大就不去學(xué)習(xí)。摒棄浮躁的第一步就是,不要帶著功利的眼光去學(xué)習(xí)。
2. 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)幾乎都是從線性表開(kāi)始,然后講到最重要的單鏈表。單鏈表的基本操作就建表、插入、刪除、查找等,如果你把這些操作都學(xué)完了,是不是該立即進(jìn) 入堆棧的學(xué)習(xí)呢?我的建議是,不。“學(xué)習(xí)”是一個(gè)實(shí)際上不應(yīng)該分割的詞匯,只有“學(xué)”沒(méi)有“習(xí)”將必然導(dǎo)致膚淺。當(dāng)學(xué)完單鏈表的基本操作,你需要做更多的 “習(xí)”。這時(shí)候你需要嘗試著研究下面的問(wèn)題:?jiǎn)捂湵淼哪嫘颉⑶髥捂湵淼牡箶?shù)第N個(gè)元素、單鏈表的排序、單鏈表的環(huán)……等等。當(dāng)你對(duì)單鏈表的學(xué)習(xí)進(jìn)入某種境 界,才進(jìn)入堆棧的學(xué)習(xí),這樣你的單鏈表就很扎實(shí),同時(shí)學(xué)習(xí)堆棧也會(huì)變得很有效率。你可以參考我之前所做的專題:《數(shù)據(jù)結(jié)構(gòu)物語(yǔ)卷二》 。
千萬(wàn)不要覺(jué)得這很浪費(fèi)時(shí)間。左學(xué)點(diǎn)右學(xué)點(diǎn),散沙式的學(xué)習(xí)才浪費(fèi)時(shí)間,連續(xù)的思考才是高效的。
3. 享受思考的樂(lè)趣。數(shù)據(jù)結(jié)構(gòu)一開(kāi)始學(xué)也許你會(huì)覺(jué)得有點(diǎn)難,比如插入一個(gè)數(shù)據(jù)都要涉及幾個(gè)結(jié)點(diǎn)的地址操作,但是當(dāng)你思考并完全理解為什么這么做,你會(huì)有一種豁 然開(kāi)朗的感覺(jué)。并且更重要的是,每解決一個(gè)單鏈表的問(wèn)題,就相當(dāng)于做了一次思維訓(xùn)練。思維訓(xùn)練做得多了,對(duì)單鏈表的理解就更深了,以后解決問(wèn)題就更快。我 們可以這么認(rèn)為,每做一次思維訓(xùn)練,都能夠使我們的思維加速,使我們的大腦加速。為什么牛人一看問(wèn)題就能知道如何解決?很簡(jiǎn)單,因?yàn)樗鲞^(guò)普通人無(wú)法想象 的大量的思維訓(xùn)練,正如巴菲特7歲就開(kāi)始拜師學(xué)投資一樣。沒(méi)有人天生就是大牛,對(duì)吧?
4. 關(guān)于學(xué)習(xí)的欲望。很多人心里知道,我要學(xué)習(xí),但是總是容易被分心。一會(huì)看看微博,一會(huì)折騰下其它什么東西,結(jié)果半天還沒(méi)看得進(jìn)一點(diǎn)東西。不要假學(xué)習(xí),不要為不學(xué)習(xí)找理由,沒(méi)錢?沒(méi)時(shí)間?累?只要你內(nèi)心堅(jiān)定且欲望強(qiáng)烈,就會(huì)主動(dòng)學(xué)習(xí)。
可以看看這篇文章:另外八小時(shí),用辛勤換幸福。如果能把寫博當(dāng)作是一種放松,如果能把寫博當(dāng)作一種享受,不帶任何功利的雜質(zhì),那么你就會(huì)非常強(qiáng)烈地想去寫博。(對(duì)我來(lái)說(shuō),寫博就是學(xué)習(xí))
你可以嘗試下早上6點(diǎn)半起來(lái),學(xué)習(xí)一個(gè)小時(shí)再去上班,效果很好。這篇文章就是我早上6點(diǎn)多開(kāi)始寫的。學(xué)習(xí)大部分時(shí)間是一個(gè)人的活動(dòng),難免會(huì)有孤獨(dú)感,當(dāng)你精力高度集中時(shí),孤獨(dú)感會(huì)減少。當(dāng)你全神貫注的時(shí)候,甚至?xí)械缴硇挠鋹偂?ldquo;耐得寂寞不寂寞,耐不住寂寞反寂寞。”
5. 不要被厚厚的書嚇住。有的人也許會(huì)說(shuō),你看,數(shù)據(jù)結(jié)構(gòu)那么多章節(jié),你光單鏈表這一章就做了一百多個(gè)練習(xí),花了一兩個(gè)月,什么時(shí)候才能看得完???我說(shuō),學(xué)習(xí) 沒(méi)人逼你進(jìn)度,隨意看,什么時(shí)候覺(jué)得自己精通了再轉(zhuǎn)入下一個(gè)學(xué)習(xí)階段。過(guò)早地進(jìn)入下一個(gè)階段只會(huì)讓你過(guò)早地忘記前面的知識(shí),比如草草地看了單鏈表的基本操 作,就去學(xué)堆棧,過(guò)一個(gè)星期我問(wèn)你單鏈表的反轉(zhuǎn),你也許就會(huì)一時(shí)想不出。所以我認(rèn)為:
堅(jiān)持做一件事,直到達(dá)到一個(gè)境界——至于是什么境界,我不知道,你才知道——然后才開(kāi)始做另外一件事。
6. 你對(duì)學(xué)習(xí)有如饑似渴的感覺(jué)嗎?對(duì)待學(xué)習(xí),我很推崇完美主義。比如單鏈表的基本操作弄懂了,寫程序過(guò)了一遍,然后開(kāi)始研究它的各種常見(jiàn)操作。都研究完了,開(kāi) 始研究比較少見(jiàn)的操作,帶頭結(jié)點(diǎn)與不帶頭結(jié)點(diǎn)的都要過(guò)一遍。然后翻遍互聯(lián)網(wǎng),看看有沒(méi)自己疏漏的。發(fā)現(xiàn)有疏漏的,你會(huì)很高興,馬上再寫程序自己過(guò)一遍。直 到Google搜索“單鏈表”前100頁(yè)的結(jié)果你都能馬上知道什么回事,知道怎么做,嗯,那就差不多了。
很瘋狂嗎?在常人看來(lái)也許是。但是對(duì)我們自己來(lái)說(shuō),不這么做,很難達(dá)到某種境界,或者說(shuō),精通。對(duì)知識(shí)的如饑似渴的時(shí)候,當(dāng)?shù)玫叫碌陌l(fā)現(xiàn)新的知識(shí),你會(huì)得到很大的滿足感,而且一路走來(lái)的成就感,也是對(duì)你之前努力的最大回報(bào)。
那么,從現(xiàn)在開(kāi)始,逃離浮躁的泥沼,享受學(xué)習(xí)過(guò)程的樂(lè)趣。