|
沒有人是完全獨立的孤島,每個人都是整體的一部分。——約翰·多恩
對于缺乏編程知識的人來說,完全有可能編寫一個網頁或小程序。如果在用Google搜索相關示例時幸運的話,可以搜到現成的代碼。即使是經驗豐富的程序員,通常也會為了節省時間和精力而在網上搜索解決方案。
如果不借助搜索技術、網絡及集體智慧,現代化高效編程是難以想象的。因此,搜索技巧對高效程序員變得愈發重要。
現在,我們不需要了解和記住如何解決眾多的編程問題,可以采用搜索技術。我們正變得更加高效、高生產力,并能夠解決更多的問題。但這是否意味著在構建軟件時,擁有好的搜索技巧就足夠了呢?本文將討論,搜索技巧在程序員知識的形成過程中的作用,以及如何高效使用搜索技巧。
知識的類型及它在程序員大腦中如何成長。
有三類知識:
概念知識(為什么、是什么、如果——語義上的)——理解軟件系統構建過程中的概念、原理、關系及主要方法。根據這類知識,能夠找出體系結構或代碼必須按特定方式設計的原因,以及從中選擇最佳設計方案的備選方案和邏輯是什么。概念知識,不是指用特定編程語言解決特定問題,而是對問題的長遠看法和理解。
- 用途:對復雜的開放式問題尋找新的解決方案,并創建穩健的軟件系統。
- 收獲:學習計算機科學、體系結構以及編程概念,在實際實現和經驗的基礎上,構建自己的理論。
實踐性知識(如何做——過程中的)——關于如何解決特定編程問題的知識。這類知識不需要深入理解實現方法選擇過程中隱含的概念及基本原理。搜索技術在這里最重要,因為對有限的編程語言問題所采取的特定解決方案,搜索能相對容易的加以共享并說明。
- 用途:用已證實的和已知的解決方案快速解決問題,而不是每次都重新發明一種新的方法。
- 收獲:搜索現有的解決方案,通過例子學習或提出自己的解決方案并以后對其重利用。
隱性知識(專業知識、經驗及直覺)——基于軟件系統實現過程中所積累的個人經驗,在大腦中形成的內在知識。通過強大的大腦功能,隱性知識可以綜合并協調其他兩種知識。這類知識很難傳授,因為它的大部分都存儲在我們的潛意識中。在特定環境下,它和直覺一同發揮作用,能夠在經驗、對概念性和實踐性知識的反饋和評估的基礎上,制定最佳決策。
- 用途:利用自己的專長、經驗及直覺來實現最佳解決方案。
- 收獲:構建軟件并從結果中學習知識。
設計模式(還有架構、領域及其他)是不同類型知識相結合的有趣的例子:“如何做”的例子,這些例子中隱含的概念及實現過程中積累的經驗。這種知識的表現方式是模式成功及廣泛應用的原因之一。
隨著越來越多的可供使用的實踐性解決方案和示例出現在網絡上,人們大腦中的實踐性知識的價值越來越小。我們不需要記住實踐性知識?,F在我們能夠處理軟件構建過程中幾乎所有可能遇到的常見編程問題。然而,除能夠解決問題的示例或從哪搜索這些示例以外,一名大師級的程序員還知道更多的知識。他能夠提出自己的解決方案,制定大部分最佳決策,并采用最好的方式應用它們。此外,很難在網上找到新的、復雜的、領域性的及特定環境下的問題的解決方案。而且,對所有重要的軟件工程,在制定優秀解決方案的過程中,都需要高水平的軟件開發理論、這些理論的應用經驗、對系統的深入了解、問題空間及環境等相關知識。
因此,在軟件開發過程中,概念知識和隱性知識仍然是非常重要的。在使用搜索技術時,我們應當努力擴充各種知識,而不是僅僅解決特定問題。隨著解決更高級問題的能力的提高,你會取得成功,成為更高效的程序員。
可解決實際問題的高效搜索
A. 查找
- 1. 定義——弄清楚要解決什么問題,并以要查找的內容為焦點。網絡上有如此多的有趣的材料,以至于搜索過程能輕易地占掉你全部的工作時間(和個人時間)。
- 2. 檢索(使用標準的Google、代碼搜索或其他的檢索引擎)—有很多關于如何高效的使用檢索引擎的建議。
- 3. 瀏覽結果(內容的質量、可信度及專業技術的水平;如果資料的可信度過低,無須再看)-> 閱讀-> 評估(人力物力、所需工具及函數庫)
B. 使用
- 1. 復制代碼-單獨復制(針對這一目的,帶有長釘技術的顯式單元測試最適合)
- 2. 清除代碼-僅保留最小限度、相關性代碼,清除解決方案中的其它代碼。
- 3. 在系統中應用代碼。
C. 學習
- 1. 理解——你做了什么及你為什么那樣做——從代碼和實現中學習。
- 2. 擴充知識——
- a. 實踐性知識:解決問題的特定方法、技巧及風格;
- b. 概念知識:學習新概念、提煉現有的并構建自己的概念;
- c. 隱性知識:明智地使用并學習搜索到的解決方案,經驗會自然而然地得到增長。
- 3. 收集(鏈接、意見、參考文獻、閱讀清單)—任何對你今后搜索、發現及學習有用的有趣信息。為這些目標積累知識。
你還有其他高效搜索代碼的訣竅嗎?歡迎在評論或微博中和大家分享。
本文出處:伯樂在線- 職場博客
本文鏈接:http://www.jobbole.com/entry.php/371
Via:softwarecreation 文章推薦:關關 編譯:伯樂在線 敏捷翻譯組- 牛冬梅
如需轉載,但請注明文章來源和超鏈接等版權信息,否則視為侵權,謝謝合作!
it知識庫:如何使用搜索技巧來成為一名高效的程序員,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。