天天看點

這是給開發者的彌天大謊還是至理名言?(轉)這是給開發者的彌天大謊還是至理名言?

轉自http://www.aqee.net/2011/04/06/the-greatest-developer-fallacy-or-the-wisest-words-youll-ever-hear/

這是給開發者的彌天大謊還是至理名言?

本文是從 The Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear? 這篇文章翻譯而來。

這是給開發者的彌天大謊還是至理名言?(轉)這是給開發者的彌天大謊還是至理名言?

“當我需要用到它時我就去學它! ”

過去這些年裡這句話我聽到無數次;對于處在一個像軟體開發這樣的快速發展變化的行業裡,這聽起來像是一種十分适用主義的态度。從某些層面上說,它确 實十分适用,但從另一個層面來看,我很受這句話困擾。它似乎成了我們這個行業的福音,但卻從來沒有把這個行業變的更好。問題就在于,這句話表面上借明智的有經驗的開發者之言,其實是幌子,實為人們随波逐流的借口。 實在是有太多的東西需要我們在工作之中“發現學習”,但對于這種對新知的“發現學習”,你是工作學習齊頭并進,還是單純的遇到了什麼問題,就學習處理這問題的知識?這兩者之間有很大的差別。

整個行業裡到處都是通才、全才,也許向來如此,隻是我太閉塞,沒有認識到這些,而且我也不願意看到這種情況。沒有人再願意踏踏實實的深入研究一個東 西,包括計算機科學基本原理、你正在使用的最新技術、甚至是你最近幾年一直使用的語言。何必自尋煩惱,也許當你學在半途中時就會發現,這些技術知識已經被 更新更新,被廢棄,被邊緣化,被過時、不再流行。我曾和很多人讨論過這個現象,沒有一個人認為這是一個問題。“做個實用主義的人吧。 ”

與此同時,我們大家都在互相模仿克隆。現在需要一個Java程式員,我是一個Java程式員,你也是Java程式員,我鄰居也是個Java程式員。 我們大家之間有什麼差別?——沒什麼差別!還有,我學會一些jQuery知識。這不錯,這樣我就知道如何做一個可折疊的菜單了。而且,我可以使用 Google在網上搜一下,到處都是,我能搜到最好的代碼,剽竊它。而同時,如果你想招募一個Perl專家(也許你想要一個神奇的解釋器或将大量資料進行 可視化),那你可要準備好足夠的幹糧和水了,因為你根本找不到。

不錯,是有很多地方能看出你我的差別,我有更好的溝通技巧,是以我做的更好。這當然很重要,但是,開發人員通過軟實力,而不是開發技術能力來區分 —— 感覺有些扭曲。 我們大家的溝通技巧都很好,可寫出的代碼是一團糟

這是給開發者的彌天大謊還是至理名言?(轉)這是給開發者的彌天大謊還是至理名言?

。該死,我本不該說這些,因為我也算得上是一個通才。當然,我更願意把自己看作一個既有廣度又有深度(T型)的人 ,但是,如果你願意說真正的實話,你會說,大部分的人都隻有廣度,沒有深度,更像橫線型(破折号型)

這是給開發者的彌天大謊還是至理名言?(轉)這是給開發者的彌天大謊還是至理名言?

。在這些破折号中你就像是個巨大的石鐘乳 —— 你是T型的。你看上去就像個專家,即使你從來不是專家 ,這就是在到處都是通才的時候做為專才的優勢。

投資你的未來

我不想傳道似的告訴大家我們應該對未來的職業生涯進行投資,因為這是每個人都知道的。大多數人認為自己正在投資,他們努力的工作,寫大量的程式,甚 至邊工作邊學習,誠然,這10年下去肯定會成為一個專家,20年下去成為一個資深專家。但是,如果事情果真是這樣,那每個年紀大的人都會成為各個方面的專 家,事實斷然不會是這樣。也許原因是人們不知道如何在某個方向去發展他們的特長(這是實際存在的 ),但我私下裡更懷疑是,人們更多的是缺乏熱情,而不是缺乏這方面的指點 。上面所說的各種問題都基本上可歸于這種情況。

我完全說跑題了。“對未來進行投資 ”隻是我們讨論的問題之一,而主要問題是”我需要用到它時就會去學它 “這句箴言。這句話給我老爸很合适,而且它也為我所用這麼多年。讓我們把這句話的思想應用到金融上吧,“當我需要錢時我會去進行投資的 ”。你會發現有些時候這句話并不是那麼适用。

你不知道你缺少哪些知識

我們都經曆過這樣的時刻:你痛苦被折磨于要解決一個問題,最終是有人過來告訴關于X算法或Y技術,這讓所有問題變得又快又簡單。你很幸運能碰到這樣 一個能告訴你“簡單”方法的人,否則的話你可能要用去數天、數周去把問題弄明白,而且事情會變的亂糟糟。你不會因為此而受到責備,因為你不可能提前知道你 會缺少什麼樣的知識。我想,這就是“當我需要它時我就會學它”的思想方法失敗的地方。你不可能去學你從未聽說過的技術知識 。 Google做出了很大的成就來緩解這個問題,但這不能解決所有問題。在茫茫的未知領域你會遭遇到大量的未知難題,它們會讓你撞的頭破血流,要多慘有多 慘,除非你能明白你所面對的是什麼類型的問題(例如,如果你知道一些搜尋算法和限制傳播問題,你可以去解決數獨難題,否則,你就陷入困境了)。你不可能去 學習一種你不知道的或不知道用在哪裡的算法。你不可能去利用一個你根本不知道能做什麼的技術去解決一個問題。不可能一直有人在旁邊指點你正确的方向。我敢 打賭這世界上有數百萬的代碼可以被替換成更高效、更整潔、更有效的代碼,隻是因為寫這些代碼的人不知道自己欠缺某方面的知識。

我想反向說明一下這個問題,假使能提前知道我們缺少什麼知識,那麼,誠然,我需要關注大量的知識。粗淺的大範圍的盡可能多的涉獵各種知識對我們有很大幫助。當問題發生時,我就能看出問題是什麼領域的,然後針對這種知識深入的研究。可是,事情并不會這樣發生,浮光掠影的通覽各種知識最終并不會在我們的腦海裡留下任何痕迹, 我們的大腦不是這樣工作的。如果我不去強化和深入挖掘某個知識概念,我們的大腦會很快就會把它标記為不重要資訊,完全是一種浪費時間(回想一下你為了考試而死記硬背的東西在第二天還能記住多少? )。然而,如果你能集中精力對某一主題進行深入研究——并伴随着興趣——你會收獲頗豐(這将是你不會忘記的 )。我爺爺是一個核實體學家,數十年如一日的收集研究這個領域裡的知識使他成為了一個專家,但這也同時使他成為了一個出色的數學家,一個不錯的化學家,一個非常棒的地質學家,一個合格的生物學家,等等。這隻是因為深入研究而獲得的廣泛的副産品。

你能以足夠快的速度學會它們嗎

這是給開發者的彌天大謊還是至理名言?(轉)這是給開發者的彌天大謊還是至理名言?

有些東西需要你花很長時間才能學會。我有信心在不皺眉頭的情況下學會一個以前從未見過的ORM架構,因為類似的東西我以前見過,它們概念是相同的。 但如果你需要做一些把演說轉換成文字的東西,這可不會這麼簡單,你沒有足夠的背景知識。把希望寄托在Google上,搜出一些東西我們可以去粘貼拷貝。這 是一個很壞的做法,隻有大學裡的研究人員才會去做這種爛事。如果是開發一個網站呢?我們都知道該怎麼做,但如果需要能支援每天1千萬的使用者通路量呢?我需 要知道如何去更新,我相信不花一兩個月的研究你是不可能把速度提上去的

這是給開發者的彌天大謊還是至理名言?(轉)這是給開發者的彌天大謊還是至理名言?

。是呀,我太蠢了,我應該做的是雇一個專家,然後 … 哦 … 慢,等等,我們的幹糧和水都不夠了。

為什麼我在乎這些

跟專家一起工作實在是太爽了 。也許你以前有過這樣的經曆,他們說的那些東西都是那麼新穎和有趣,他們的每行代碼都能讓你受益匪淺,你幾乎都能感到你的腦容量在膨脹

這是給開發者的彌天大謊還是至理名言?(轉)這是給開發者的彌天大謊還是至理名言?

。你希望能跟專家學習,可當你找不到這樣的專家時,那就太不幸了。因為每個人都是在“需要”的時候才去學習,沒有人可以教别人什麼東西。而這其中最大的教訓是,專家同樣也想和專家一起工作,是以,你的問題在于,要能清楚專家是否願意和你一起工作? 如 果能做到在需要的時候就去學習,這是個不錯的做法,但你不能把它當作一個軟體開發者的至理名言。不錯,這個行業很寬廣,你不可能樣樣都學,是以要選擇一 些,學精,如果你很好奇而做了深入研究,你會發現最終你在很多其他知識上都會有一個相當的掌握。而且如果你能做出一份出色的工作,其他精英賢達都會希望和 你左右同行,因為他們這樣可以從你身上學到知識,而你也能從他們身上學到更多的東西。這對每個人都是再好不過。

Image by SamueleGhilardi and SpecialKRB

繼續閱讀