<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          什么是基礎(chǔ)知識?

          共 2537字,需瀏覽 6分鐘

           ·

          2021-11-27 02:21

          譯自:https://skorks.com/2010/04/on-the-value-of-fundamentals-in-software-development/

          譯者:cxuan

          我相信基本面的價值,但有時似乎只有我一個人相信。

          我認為在軟件開發(fā)或者說其他方面真正掌握專業(yè)知識做到觸類旁通的關(guān)鍵在于基礎(chǔ)知識,而只有牢牢掌握這些基礎(chǔ)知識,才能讓你在應用開發(fā)時不加思考就知道該怎么做。然而,每當我提出這些想法的時候,我總是發(fā)現(xiàn)我才是那個局外人。

          我們軟件開發(fā)人員總是想把自己當做問題的解決者。我們真的不需要對任何事情有足夠深入的了解和理解,只要我們認為某個功能甚至某項技術(shù)能夠完成需求,我們就可以隨時推斷、查找它從而達到讓我們使用的目的。

          這個態(tài)度是非常正確的,但是對基礎(chǔ)知識來說卻是錯誤的方式,這也是很多人反對我的緣由,所以在繼續(xù)討論之前,我們先定義一下什么事基礎(chǔ)知識。

          基本面:股票中一般會用基本面來表示一個行業(yè)的基本情況,在這里可以理解為基礎(chǔ)知識層面。

          什么是基礎(chǔ)知識

          幾年前,我在一次面試中被問到這個問題,請你解釋一下 Hibernate 中的樂觀鎖的工作機制,此時我對 Hibernate 的研究甚少,更別說是專家了,所以我畫了一個大大的圈。

          我這次面試徹徹底底的失敗了,我覺得很羞愧,因為樂觀鎖并不是 Hibernate 所特有的概念,它只是一個基本的并發(fā)控制概念。

          我認為基本面大體上可以分為宏觀層面微觀層面

          在宏觀層面上(即從整體上來看)無論你從事的是何種類型的工作和領(lǐng)域,都有使用的概念、算法和知識。比如數(shù)組(Arrays)、哈希(Hashes)、樹(Trees)、排序(Sorting)、查詢(Searching)和圖算法(Graph algorithms)、緩存(Caching)、某些面向?qū)ο蟮母拍?、懶加載和樂觀鎖之類的東西,還有一些其他的。你需要向后來理解這些概念,在小型和大型數(shù)據(jù)集上使用它們、它們適用的常見問題、局限性以及如何克服等。在你的職業(yè)生涯中,你將每天都會和這些打交道,所以,你更應該盡可能深入的理解。但是事實情況是,大部分人充其量只有工作知識,自從大學以來一直保持相同的水平。

          在微觀層面(包括特定的技術(shù)、語言和 API 庫)上,你必須內(nèi)化?API 細節(jié)、工具才能真正有效。當我開始學習 Ruby 時,我閱讀了各種書籍、博客文章,同時我發(fā)現(xiàn)了各種技術(shù)和工具,但是它們是否對我的代碼質(zhì)量或者我的編碼速度產(chǎn)生了重大影響?

          我認為不是的,至少你不會注意到,它超出了你所希望的改進。然后又一次,我花了幾個小時仔細研究 Array 類的 API,我想不起來這么做的原因是什么了,但是我明顯的感覺自己編碼速度更快了,而且能夠持續(xù)心流很久很久。

          然后,我就不用再花太多時間在查找 Array 類及有關(guān)東西上了。我真的很驚訝產(chǎn)生了這么大的差異,所以你知道我對開始學習 Ruby 的人有什么建議嗎?數(shù)組、哈希、字符串和文件這些 API 你要盡快記住,這樣你能夠馬上領(lǐng)先其他 Ruby 程序員。這是微觀上的基本面。

          真正理解

          將某件事情完全內(nèi)化是什么意思呢?我們以武術(shù)為例,你可以找一本武術(shù)書,把它們都讀一遍。你可以讓某個師傅向你展示所有動作,甚至你可以嘗試一些其中的動作,但是這會讓你成為一名武術(shù)專家嗎?

          你需要練習,一遍又一遍的練習,練習到這些基本動作能夠形成你的肌肉記憶,你的條件反射,對此你可以說內(nèi)化了它們。

          更重要的是,你不用花很多時間練習復雜的組合。你要多花時間在基本動作上,因為復雜動作都是由基本動作構(gòu)成的。如果你把動作做扎實,那么你就可以通過簡單的組合來完成更復雜的動作(如果我過于簡化了任何東西,我向真正的武術(shù)家道歉)。

          然而,在軟件方面,我們大多數(shù)人就像那個狂熱的武術(shù)家,我們啃掉了一點 Ruby,又啃了一點 JavaScript,然后轉(zhuǎn)到 C# 并回來嘗嘗 Rails。最后,回到 Java 領(lǐng)域,我們吸收了剛好夠用的 Spring 和我們需要的 Hibernate 將其列為簡歷中的一項技能。

          我們從一個技術(shù)跳到另一個技術(shù),想了解一切并意識到一切(讓我們不會落后主流技術(shù)),但一直以來,我們可能都沒有練好我們的基礎(chǔ)動作。

          不管你知道多少種面向?qū)ο蟮木幊陶Z言,如果你確定耦合、內(nèi)聚意味著什么,不管你的代碼怎么寫可能都同樣糟糕。不管你用過多少種控制反轉(zhuǎn)容器,如果你不知道依賴注入試圖解決什么問題,那么你只是一只準備跟隨領(lǐng)導者跳下懸崖的羊(真是真的,羊真的會這么做)。

          真正理解某件事情與學習它足夠應付工作之間是有根本區(qū)別的。

          通常日常工作你只需要了解工作的相關(guān)知識就可以了,根本不需要了解你處理過很多庫的技術(shù)細節(jié)。之所以你工作沒問題,是你對這些技術(shù)的基本原則有一定的認識。

          如果你了解懶加載或樂觀鎖的實現(xiàn)原理,你就無需了解 Hibernate 或 ActiveRecord 實現(xiàn)的細節(jié)。如果你不懂 MVC,那么無論你使用 Structs 還是 Rails 都沒有區(qū)別,這只是一個實現(xiàn)細節(jié)問題。一個好的經(jīng)驗就是,你得基礎(chǔ)越扎實,你建的房子就越穩(wěn)固。

          有時我認為,一個基本面扎實的人才能成為技術(shù)專家。你有沒有見過走到電腦前,編碼 10、15、20 分鐘沒有停下來,不用參考任何東西?這樣的人是不是令人印象深刻?他們似乎在很短的時間內(nèi)產(chǎn)生了驚人的代碼數(shù)量,

          當他們離開時,人們可能會認為他是個天才,其實這里并沒有什么天才,只是有人愿意花時間學習特定領(lǐng)域的基礎(chǔ)知識,并且不斷練習罷了。

          你可以做同樣的事情,把你的宏觀和微觀層面的基本面打扎實。對我來說,這一切都很有意義。我原以為這對其他人也同樣有意義,但我經(jīng)常發(fā)現(xiàn)人們在這一點上不同意我的觀點——這真的很令人費解 :)。






          PS::) 這個表情我今天才知道是什么意思。

          不過作者寫這篇文章的時候是 10 年,那時候作者已經(jīng)使用了這個表情。

          然后我發(fā)現(xiàn)才最近我們流行起來了這個表情,這說明了什么?

          瀏覽 23
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美一区二区视频在线77777 | 日韩无码视频一区二区三区 | 奇米影视一区二区三区 | 中文字幕乱伦视频 | 91人人干 |