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

edithfang發表於2015-03-18
當我需要用到它時我就去學它!

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

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

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

不錯,是有很多地方能看出你我的區別,我有更好的溝通技巧,所以我做的更好。這當然很重要,但是,開發人員通過軟實力,而不是開發技術能力來區分 —— 感覺有些扭曲。我們大家的溝通技巧都很好,可寫出的程式碼是一團糟 :)。該死,我本不該說這些,因為我也算得上是一個通才。當然,我更願意把自己看作一個既有廣度又有深度(T型)的人,但是,如果你願意說真正的實話,你會說,大部分的人都只有廣度,沒有深度,更像橫線型(破折號型) :)。在這些破折號中你就像是個巨大的石鐘乳 —— 你是T型的。你看上去就像個專家,即使你從來不是專家,這就是在到處都是通才的時候做為專才的優勢。

投資你的未來

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

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

你不知道你缺少哪些知識

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

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

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



有些東西需要你花很長時間才能學會。我有信心在不皺眉頭的情況下學會一個以前從未見過的ORM框架,因為類似的東西我以前見過,它們概念是相同的。但如果你需要做一些把演說轉換成文字的東西,這可不會這麼簡單,你沒有足夠的背景知識。把希望寄託在Google上,搜出一些東西我們可以去貼上拷貝。這是一個很壞的做法,只有大學裡的研究人員才會去做這種爛事。如果是開發一個網站呢?我們都知道該怎麼做,但如果需要能支援每天1千萬的使用者訪問量呢?我需要知道如何去升級,我相信不花一兩個月的研究你是不可能把速度提上去的。是呀,我太蠢了,我應該做的是僱一個專家,然後 … 哦 … 慢,等等,我們的乾糧和水都不夠了。

為什麼我在乎這些

跟專家一起工作實在是太爽了。也許你以前有過這樣的經歷,他們說的那些東西都是那麼新穎和有趣,他們的每行程式碼都能讓你受益匪淺,你幾乎都能感到你的腦容量在膨脹 :)。你希望能跟專家學習,可當你找不到這樣的專家時,那就太不幸了。因為每個人都是在“需要”的時候才去學習,沒有人可以教別人什麼東西。而這其中最大的教訓是,專家同樣也想和專家一起工作,所以,你的問題在於,要能清楚專家是否願意和你一起工作?如果能做到在需要的時候就去學習,這是個不錯的做法,但你不能把它當作一個軟體開發者的至理名言。不錯,這個行業很寬廣,你不可能樣樣都學,所以要選擇一些,學精,如果你很好奇而做了深入研究,你會發現最終你在很多其他知識上都會有一個相當的掌握。而且如果你能做出一份出色的工作,其他精英賢達都會希望和你左右同行,因為他們這樣可以從你身上學到知識,而你也能從他們身上學到更多的東西。這對每個人都是再好不過。
相關閱讀
評論(1)

相關文章