走出浮躁的泥沼

來源: Veda原型  發布時間: 2012-11-27 17:47  閱讀: 7735 次  推薦: 124   原文鏈接   [收藏]  

  關于技術與工作

  我覺得,技術與工作最理想的結合狀態是,自己能學習到新的技術,這些技術也能應用到工作中;工作的內容又不那么枯燥,都那么具有挑戰性。

  程序員的工作首先應該是富有挑戰性的

  有這么一句名言:

工作,它之所以成為工作,是因為你只需要工作而不需要思考。

  你也許會對這句話有異議,但是大部分人和大部分工作確實是這樣的。工廠員工在流水線上機械地組裝,服務員每天重復著招待客人,廚師日復一日地烹制菜肴,等等。工作,就是人和機器之間的中間層,等到某一天機器人有這種功能了,人自然就不用工作了。

  但是我覺得,如果你在工作中比別人多那么一點思考,也許你就會出類拔萃,程序員這份工作就是這樣。我認為,程序員的工作首先應該是富有挑戰性的。但是我見到很多國內的程序員,只是項目完了接著下一個項目,代碼重復了一遍又一遍……也許知道代碼有問題要重構,系統架構不好要改進,可是沒那么多時間啊,天天加班干活,項目時間緊迫。就這么惡性循環,就應了那句話:你說你有5年工作經驗,但在我眼里,你不過是將一年的工作經驗重復了5年。

  程序員的工作是富有挑戰性的,但是這個是在國外,在國內,很少真的有程序員,能做到程序結伴,不斷挑戰新的高度。大多數是年輕的時候努力奮斗了幾年,到后來,因為本方向的發展空間不是很大了,但是又不能跳轉到其他的方向,怎么辦呢,帶幾個新人吧,這樣也有點領導的性質了。但是,有沒有想過,大學研究生讀了這么多年,工作寫了這么多代碼,突然有一天不寫了,轉做項目管理了。這也就是中國的IT的現狀,工作幾年之后大家都痛苦地拋棄了代碼,拋棄了自己以前的很多代碼積累。

  程序員的工作與賺錢

  我們出去工作,說到底,最根本的目的就是賺錢。但是,我們不能因為賺錢,而丟棄自己的信仰。

  先來來看看這個一個故事吧:

  照片上那個戴墨鏡的哥們, 叫 Nicholas McGuire, 是蘭州大學的客座教授。看到這個照片,和我一樣,一定有無數多的問題, 我一個一個幫你問,然后解答吧。

  • 你可能會奇怪,這么鄭重的場合, 他為什么戴墨鏡? 耍酷嗎 ?
  • 答:其實不是耍酷,Nicholas 其實是一個半盲人。
  • 別人都是西裝,他為什么只有襯衣 ?耍酷嗎?
  • 答:其實不是耍酷, Nicholas 真的沒有西裝,他穿的那身,是他能找到的最好的衣服。
  • 他到蘭州大學研究什么的? 是研究戈壁生態, 還是沙漠治理,還是蘭州拉面 ?
  • 答:其實都不是,他研究開源的嵌入式實時操作系統——RTLinux, 以及與此相關的一切開源軟件以及嵌入式系統,是 RTLinux 的內核代碼管理員之一,不折不扣的高科技。
  • 他是蘭州大學高薪聘請來的嗎?
  • 答:沒有高薪,事實上,一直連薪水都沒有,直到今年,才申請了一些。
  • 他是不是每年來蘭州一兩個月,就當是度假?
  • 答:不是,他實實在在在蘭州大學呆 10 個月, 只有 2 個月回德國老家度假。
  • 他是不是只這樣做了 1 兩年.
  • 答: 不是,他從 2005 年開始,直到現在,一直這樣。
  • 他圖什么 ?
  • 答: 因為蘭州大學有一個叫周慶國的老師以及小組, 不停地向 RTLinux 的內核提交代碼。他去蘭州大學,就是要和他們一起工作
  • 蘭州大學的學生英語如何?能和他一起工作嗎?
  • 答: 他和蘭州大學的學生, 無論是生活都是開會還是寫文檔,通通遵循開源社區的標準, 用英語交流,木有問題。
  • 為什么選擇蘭州大學?
  • 答:因為蘭州大學有一個叫周慶國的老師以及小組, 不停地向 RTLinux 的內核提交代碼。
  • 周慶國老師拿到過國家項目的資助嗎?比如發展開源軟件基金,紅旗 linux 神馬滴。
  • 答:幾乎沒有,蘭州地處西部,離北京很遠,拿到項目很難,他能作的就是不停地研究代碼,提交代碼,向開源社區貢獻代碼。
  • 這個與賽靈思有神馬關系?
  • 答: 當他聽說賽靈思的在 ZYNQ 的 QEMU 模型上跑的開源 Linux 內核推出了,并且發布在 wiki.xilinx.com 上,立即就開始下載研究,跑起來, 即沒有要項目經費,也沒有要資助和捐贈,因為在開源人的眼里——無論是開源軟件還是開源硬件,開源就象信仰一樣,無需證明

  看完這個故事有什么感想嗎?

  不是每一個程序員都要成為比爾·蓋茨,都要建立商業帝國成為世界首富。也不是每一個程序員都要做馬化騰,建立QQ帝國君臨天下。但是我覺得,每個程序員都應該向Dennis Ritchie(C語言之父)學習,在貝爾實驗室默默為計算機界奮斗一生。每個程序員都應該向Linus Torvalds學習,寫出改變計算機世界的Linux但卻不爭名奪利。比爾·蓋茨、馬化騰是IT商業化的代表,而Dennis Ritchie和Linus Torvalds則是計算機界學者的先驅。

  臺灣作家龍應臺說了這么一句話:你可以選擇做官,你也可以選擇掙錢,但你不能選擇通過做官來掙錢。

  同樣的,對程序員而言,你可以選擇研究技術,也可以選擇賺錢。但是以賺錢的心態去做程序員,那么你也許會品嘗不到技術的很多快樂。程序員是一個職業,一個專業的職業,那么作為一個程序員應該有一個專業上的目標,賺多少錢和程序員的專業素養沒有關系,你可以把賺多少錢開寶馬作為人生的目標,但是你作為程序員的目標不應該是賺錢。可以這么說,現在行業內的程序員很多都不是真正的程序員,對那些做著程序員工作的代碼工人來說,程序員只是一個混口飯吃的工作而已,那么工作的目的就是賺錢,盯著錢看就沒什么不對了。人生目標和自己的專業目標分不清楚,難怪哪頭都討不到好。專業和職業是兩碼事,專業關注的是你做事的能力,職業關系的是你在公司的職位,這個東西理不清楚就只能是兩頭不討好。真正的程序員應該是個熱愛技術的Geek,喜歡創造與挑戰,享受技術帶來的喜悅與創造帶來的成就感,而非不斷編寫著一遍又一遍重復code的碼農。

  作為程序員應該追求的是自己專業素養上的提升,作為一個職員應該向著高薪努力,當然有的程序員自己又是老板,比如康盛創想的戴志康 ,那么作為老板又有另外的追求了。我覺得作為一個程序員,在一個程序員的社區里應該關注的是自己的專業而不是在這里大談程序員怎么怎么賺不到錢。

  也許,每一個程序員在開始的時候都想過要寫出非常牛逼的程序,做個人人崇拜的高手,直到有一天,他發現他的代碼并不能改變世界的時候,就會向現實屈服,甚至拋棄往昔自己喜歡的編程。

  與程序打交道,是我們選擇的工作,也是我們選擇的職業。程序員,應該是一個值得驕傲的稱號,而非是碼農的代名詞。走出浮躁的泥沼,我們會找到另外一個不同的自己。

  學會享受學習過程的樂趣

  學習是一輩子的事情,對于程序員來說更是如此,所以如果沒有學會享受學習過程的樂趣,那么學習將會是你人生的一個重壓。

  以學習數據結構為例。大家都知道,對于程序員而言,數據結構是基礎,是必須學會的課程。但是現在很多語言,細節都封裝得很好,比如Java、.Net、PHP,幾乎都不需要你用到多少數據結構與算法的知識,以致于很多人覺得,我就不會數據結構,我還不一樣好好工作嗎?這就是浮躁的開始了。

  的確,對大部分程序員來說,工作上很多時候不需要用到數據結構。但是你會發現,工作若干年后,你的技術水平會停滯不前,做的東西總是CURD,再加上一點設計模式,再者可能有NoSQL、memcache之類的應用。但是,當你寫這些代碼寫到疲軟的時候,你會發現這些都是應用層面的東西,別人做好的現成的東西,到你想理解它們底層與原理的時候,沒有數據結構與算法的知識支撐,你會很吃力。勿在浮沙筑高臺,盡管你開源軟件用得多好,如果不去理解計算機的底層,頂多也就是個高級點的碼農。

  要走出浮躁的泥沼,只要理解一句話就行:

學習的真正樂趣不是因為它有用,而是因為學習的過程本身有趣。

  所以你需要去發現學習過程有哪些樂趣,還是拿數據結構的學習為例。

  1. 數據結構的學習在短期內不會對工作有什么效果,但它是對未來以及自己的投資。學習它你一定不要浮躁,不要覺得它短期內收益不大就不去學習。摒棄浮躁的第一步就是,不要帶著功利的眼光去學習。

  2. 數據結構的學習幾乎都是從線性表開始,然后講到最重要的單鏈表。單鏈表的基本操作就建表、插入、刪除、查找等,如果你把這些操作都學完了,是不是該立即進入堆棧的學習呢?我的建議是,不。“學習”是一個實際上不應該分割的詞匯,只有“學”沒有“習”將必然導致膚淺。當學完單鏈表的基本操作,你需要做更多的“習”。這時候你需要嘗試著研究下面的問題:單鏈表的逆序、求單鏈表的倒數第N個元素、單鏈表的排序、單鏈表的環……等等。當你對單鏈表的學習進入某種境界,才進入堆棧的學習,這樣你的單鏈表就很扎實,同時學習堆棧也會變得很有效率。你可以參考我之前所做的專題:《數據結構物語卷二

  千萬不要覺得這很浪費時間。左學點右學點,散沙式的學習才浪費時間,連續的思考才是高效的。

  3. 享受思考的樂趣。數據結構一開始學也許你會覺得有點難,比如插入一個數據都要涉及幾個結點的地址操作,但是當你思考并完全理解為什么這么做,你會有一種豁然開朗的感覺。并且更重要的是,每解決一個單鏈表的問題,就相當于做了一次思維訓練。思維訓練做得多了,對單鏈表的理解就更深了,以后解決問題就更快。我們可以這么認為,每做一次思維訓練,都能夠使我們的思維加速,使我們的大腦加速。為什么牛人一看問題就能知道如何解決?很簡單,因為他做過普通人無法想象的大量的思維訓練,正如巴菲特7歲就開始拜師學投資一樣。沒有人天生就是大牛,對吧?

  4. 關于學習的欲望。很多人心里知道,我要學習,但是總是容易被分心。一會看看微博,一會折騰下其它什么東西,結果半天還沒看得進一點東西。不要假學習,不要為不學習找理由,沒錢?沒時間?累?只要你內心堅定且欲望強烈,就會主動學習。

  可以看看這篇文章:另外八小時,用辛勤換幸福。如果能把寫博當作是一種放松,如果能把寫博當作一種享受,不帶任何功利的雜質,那么你就會非常強烈地想去寫博。(對我來說,寫博就是學習)

  你可以嘗試下早上6點半起來,學習一個小時再去上班,效果很好。這篇文章就是我早上6點多開始寫的。學習大部分時間是一個人的活動,難免會有孤獨感,當你精力高度集中時,孤獨感會減少。當你全神貫注的時候,甚至會感到身心愉悅。“耐得寂寞不寂寞,耐不住寂寞反寂寞。”

  5. 不要被厚厚的書嚇住。有的人也許會說,你看,數據結構那么多章節,你光單鏈表這一章就做了一百多個練習,花了一兩個月,什么時候才能看得完啊?我說,學習沒人逼你進度,隨意看,什么時候覺得自己精通了再轉入下一個學習階段。過早地進入下一個階段只會讓你過早地忘記前面的知識,比如草草地看了單鏈表的基本操作,就去學堆棧,過一個星期我問你單鏈表的反轉,你也許就會一時想不出。所以我認為:

堅持做一件事,直到達到一個境界——至于是什么境界,我不知道,你才知道——然后才開始做另外一件事。

  6. 你對學習有如饑似渴的感覺嗎?對待學習,我很推崇完美主義。比如單鏈表的基本操作弄懂了,寫程序過了一遍,然后開始研究它的各種常見操作。都研究完了,開始研究比較少見的操作,帶頭結點與不帶頭結點的都要過一遍。然后翻遍互聯網,看看有沒自己疏漏的。發現有疏漏的,你會很高興,馬上再寫程序自己過一遍。直到Google搜索“單鏈表”前100頁的結果你都能馬上知道什么回事,知道怎么做,嗯,那就差不多了。

  很瘋狂嗎?在常人看來也許是。但是對我們自己來說,不這么做,很難達到某種境界,或者說,精通。對知識的如饑似渴的時候,當得到新的發現新的知識,你會得到很大的滿足感,而且一路走來的成就感,也是對你之前努力的最大回報。

  那么,從現在開始,逃離浮躁的泥沼,享受學習過程的樂趣。

124
5
 
標簽:程序員 學習
 
 

文章列表

arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(1) 人氣()