程序員的謊謬之言還是至理名言?

程序員的謊謬之言還是至理名言?

2011年4月7日陳皓發表評論閱讀評論28,111 人閱讀    

有朋友(網友never)在酷殼Coolshell.cn的留言版上問我,爲什麼關注了這很多的東西,我想我可以用下文來回答這位網友,因爲我和作者的觀點幾乎一致。這篇文章由 ALAN SKORKIN寫的 “The Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear?” ,我把其全文翻譯如下,我很喜歡這篇文章,希望你也喜歡。(翻譯的也許不好,歡迎指正)

—————————————————正文分隔線——————————————————

Wisdom

I will learn it when I need it – 我會在我需要的時候再學“!我聽到這句已經很多年了。這對於一個高速變化的軟件行業環境來說,這似乎是一個非常實用的態度。 在某些方面這的確很實用主義,不過在其它的方面,我爲這句話感到很不爽。這句話變成了整個軟件行業的福音,但卻沒有讓我們的軟件行業變得更好。其問題在於,這句話僞裝在於其聽上去像是一個智慧的有經驗的開發者說的,但是人們只是以此爲藉口而隨波逐流。實在是有太多的東西需要我們去了解,我們也的確需要在工作當中來學習這些東西。但是, “在工作中學習”和“根據遇到的問題撿知識”這兩者有着巨大的不同。

  • 另外,目前整個軟件行業越來越需要一堆多面手,也許現在已經是這樣了,只是我還沒有注意到。當然,我也不喜歡這種情。現在,好像沒有人願意花更多的時間來把某一個東西學好學深學紮實,比如 計算機科學的基礎知識,或是最新的你正在使用的技術,甚至你在最近幾年內每天都在使用其編碼的程序語言(參考:Java is passed by value)(譯註:我在如何學好C++一文的回覆中已經看到一些這樣的人)。何苦呢?你會在你的學習路途中看到這些東西被更新,被廢棄,並可能變得小衆化。我和很多不同的人討論過很多次,但是好像沒有人意識到這是一個問題。 “哥們,做個實用主義的人吧”。
  • 與此同時,我們所有的人都在相互地克隆和模仿(譯註:參看中國的C2C)。你需要一個Java程序員,我是一個Java程序員,你也是一個Java程序員,我的鄰居也是一個Java程序員。我們之間有什麼差別?其實,基本沒有差別。好吧,我有一些jQuery的經歷,太好,所以,你知道怎麼來做一個摺疊式的菜單?當然,我可以Google一下,然後剽竊別人最好的代碼給你 :)(譯註:參看“十條不錯的編程觀點”中的”Googling it” is okay)。

  • 與此同時,你需要招聘到真正的專業級的人物(比如,你需要寫一個很牛的解析程序來以圖形化展示一下後臺數據),那麼你可能需要準備足夠的啤酒和三明治,因爲你可很有一段時間找不到這樣的人。

好了,其實,是有一些方法來區分,比如,我有更好的溝通能力,這就是爲什麼我可以做得更好。這是相當重要的,但是,如果我們用軟能力而不是用技術能力來區分程序員的好壞 –  是不是有那麼點反常和變態。我們所有人都可以溝通得很好,但是我們的代碼亂成一團 :)。該死的,我本不應該說這事,我也有一點全才的樣子。當然,我覺得我自己是一個 T型人才譯註:即有深度又有廣度),但是如果我們都非常誠實的話,我們會發現更多的人的能力是“橫線型”或是“下劃線型”的(譯註:廣度型),其中只有很少數的人才是有能力的。而我們的“T型人才”在這些人中就像一個巨大的鐘乳石。你看上去像一個專家,但也許你從沒有做過專家,這就是專才在滿是全才的世界中的優勢。

投資你的未來

我不想以說教的方式來告訴你人們應該怎麼樣來投資自己未來的職業生涯,因爲每個人都知道我們應該怎麼做。很多人也許認爲他們正在投資,他們努力奮鬥,寫很多的代碼,並也做一些閱讀,當然,這樣堅持下去,也許十年也可以成爲一個專家,而成爲一個諮深專家可能需要20年(我會不斷地說這些觀點,總有一天我會把這個事說明白 :) )。但是,如果真是這樣的吧,每一個老傢伙都會成爲各個方面的專家,當然,事實是不會這樣的。也許是因爲人們不知道如何發展他們的專長(這是事實),但我私下裏卻懷疑,大家缺少的是熱情而不是知識。我所說的這些東西難道不都是這樣的原因嗎?

我完全跑題了。“在專業上投資未來”只是這些流行語中的一個,而重點是那句話 – “I will learn it when I need it – 我會在我需要的時候再學”。對我老爸來說這樣做挺好,迄今爲止對我也有效。但是讓我們換一個角度看看,比如金融方面,如果我們說:“我會在我需要錢的時候再去進行投資”。在這句話上面那個實用主義的光環就不那麼漂亮了。

你不知道你不知道的

我們都有過這樣的時候,當我們痛苦地在解決一個問題的時候,有人突然告訴你一個算法或是一個技術,其把這個問題變得又快又簡單。是的,有人告訴你一個容易的方法是一件很幸運的事,否則你可能需要花上數天或數週才能找到解決方法,並且事情可能會變得一團糟。你不會因此而被批評,因爲你不知道你所不知道的東西。對此,“I will learn it when I need it – 我會在我需要的時候再學”在這個時候就走不通了。因爲,你不可能學習那些你以爲不存在的東西。Google做了很多的工作來減輕和緩解這樣的問題,但並不完美。在一個陌生的環境下面對着一堆陌生的問題,會讓你非常非常地痛苦,除非你知道你所面對的是什麼(例如:如果你對搜索和約束傳播(constraint propagation)有點了解的話,那你就可能 容易地解決數獨問題,否則的話, 這的確是 非常 難的)。你無法學習一種不知道或是你不知道用在哪裏的算法。你也不可能去用一個你以爲不存在的技術去解決一個問題。同樣,你身邊也不可以一直都有一個高人隨時在給你指引正確的方向。我敢打賭,這個世界上有幾十億行代碼可以被 幾百萬行更快,更清楚,更簡單的代碼所取代,因爲無論是誰來寫,他都不可能知道他所不知道的東西

我想在這裏成爲這個觀點的反方,如果我們知道我們有哪些東西我們不知道,那麼我們就知道我們需要去關注哪些東西。粗淺地儘可能的大範圍的知道這些東西,那麼,我們就可以在遇到問題的時候明白我們應該去更深地學什麼樣的知識。但是,這樣來做在實際上並不有效,因爲,這些浮雲般的知識不會讓你記下來,我們的大腦不是這樣工作的。如果我們不去強化或是深度挖掘去消化這些概念, 我們的大腦會很快地 把這些信息標爲不重要並換頁出去,這麼做無非就是在浪費時間(你回頭想一想你那些“填鴨式”的死記硬背的知識,你今天還記得嗎?)然而,對於那些你集中精力深度研究過的東西——並伴隨着你的興趣的東西——你會收穫到紮實的知識(那是你大腦裏實際存下的不會忘的東西)。我的爺爺是一個核物理學家,數十年的在工作中獲得這個領域中更深的知識讓他今天成爲了一個專家,同時也讓他成爲了一個優秀的數學家,不錯的化學家,非常好的地理學家,還是一個合格的生物學家,等等。只需要一些 觀察性的證據 你就知道廣度的知識是深度研究的副產品

你學得足夠快嗎?

Learn fast

有些東西你需要花很長的時間才能學會。我對自己有信心不需跳躍性的就能把一個我從沒有見過的ORM框架學會,因爲我以前用過相似的東西,它們在概念上是相同的。但是,如果你需要做一個把演講轉成文本的東西呢,這並不簡單,因爲你沒有足夠多的背景知識。你可以希望通過Google給你提供一些東西讓你Copy/Paste,但這是一個很不好的做法,只有大學裏的做研究的研究員幹這種爛事。如果是要創建一個網站呢,我們都知道怎麼去創建一個網站,但是有多少人會知道如何架構一個每天有一千萬用戶訪問的網站?那麼我們需要去學的就是怎麼做擴容擴展,我相信你的用戶需要等你一到兩個月才能把速度提上去 :)。是的,我太笨了,所有我需要做的就是去招一個專家,然後……嗯……哦等一下,我們的啤酒和三明治都不夠了。

爲什麼我應該關心

和高手在一起工作真是超爽無比。你也許以前經歷過,他們每說的一件事總是新鮮的,總是有意思的,你能從他們每一行的代碼中學到很多小技巧,你幾乎可以感覺到你的大腦在不斷膨脹:)。你想從高手學習,所以,如果你身邊沒有高手,那真是太糟糕了。因爲每一個人只會去學那些“需要”被學的東西,所以沒有人能教給你任何有意思的東西。然而,這些高手也總是想和高手一起工作, 所以,你需要做的事就是確定能讓高手想和你一起工作?。按需所學也許是一個不錯的技能,但其不應該成爲程序員的價值觀。是的,這是一個巨大的行業你不可能學習所有的東西,所以,你需要有所選擇地把其學精,只要你有足夠的好奇心去跟從你的興趣,你會發現最終你會真正掌握很多很多其它的東西。如果你能把你的工作做好,那麼其它的超級牛人都會想要和你一起工作,因爲他們可以從你這學到東西,而你又可以從他們那裏學到東西。這樣一來,所有的人都會是成功者。

Image by SamueleGhilardi and SpecialKRB

—————————————————正文結束分割線——————————————————

我在這裏想說幾個我的觀點:

  1. 我特別同意作者的,如果你把一個技術搞精搞深,你的知識面自然會很廣的。
  2. 面對於各種比較深的東西(比如C++的奇技淫巧),作爲一個實用主義者可能很不屑,但是你也會爲此而失去開闊眼界的機會。
  3. 爲明天做一些技術儲備,因爲你不知道你所缺的東西。多多閱讀,多多交流,最好能把自己的心得寫下來強化自己的認識和記憶。
  4. 不要只寄望於在工作中學習,工作沒有覆蓋的地方你就不學了。真正的高手在工作之餘都會花很多時間去自己研究點東西的。
  5. 永遠和高手一起工作。如果你面試的公司的面試太簡單了,那就不要去,因爲簡單的面試通常意味着平庸。去那樣的公司工作只會讓你的學習速度變慢,甚至倒退。
  6. 很多東西在概念上是相通的,在哲學層次上是相通的,這是你需要去追求的學習知識的境界。
  7. 最後echo一下作者的話——“很多時候,你缺少的不是知識而是熱情”!

謝謝大家又花了一點看我的嘮叨。呵呵。

(轉載本站文章請註明作者和出處 酷殼 – CoolShell.cn ,請勿用於任何商業用途)

——=== 訪問 酷殼404頁面 以支持公益事業 ===——
發佈了175 篇原創文章 · 獲贊 13 · 訪問量 64萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章