1. 程式人生 > >如何使用搜索技巧來成為一名高效的程序員

如何使用搜索技巧來成為一名高效的程序員

程序員 搜索功能

搜索技能的重要性

對於缺乏編程知識的人來說,完全有可能開發一個網頁或一個小應用。如果運氣夠好,當你使用谷歌去搜索一些示例的時候,你有可能會搜索到現成的代碼,並因此而完成工作。即便是那些經驗豐富的程序員,也經常會為了節約時間和精力而去搜索現有的解決方案。


如果沒有搜索引擎、網絡和集體的智慧,現代化高效的編程技術是難以想象的。因此,搜索技巧對高效的程序員而言,變得越來越重要。


現在,我們不必去了解或記住許多程序的解決方法–只需要搜索即可。我們變得更加高效、更加有創造性,並且能夠解決更多的問題。但是,難道這就意味著好的搜索水平就足夠去開發軟件了?本文,將深入探討搜索技能在程序員知識形成過程中充當的角色,以及如何有效的使用搜索引擎。



知識的分類


有三種類型的知識:




技術分享



概念知識(為什麽、是什麽、如果– 語義上的)–理解開發軟件過程中的概念、原理、關系及主要方法。這類知識,可以回答軟件體系結構或代碼必須按特定方式設計的原因,以及其中的最佳選擇和選擇背後的邏輯是什麽。概念知識,是對問題的長遠看法和理解,而不僅僅是指用一門編程語言去解決具體的問題。

用途:對復雜的開放式問題尋找新的解決方案,並創建穩健的軟件系統。

收獲:學習計算機科學、計算機體系以及編程概念,並在實踐過程和經驗的基礎之上,構建自己的理論。

實踐知識(如何做 – 在程序中)——如何用知識去解決具體的編程問題。這類知識不需要高深的概念知識和背後隱藏的理論基礎。對於這點,搜索技術顯得最為重要;因為編程語言所遇到的問題,以及問題的特定解決方案都是有限的,搜索引擎可以相對容易的共享這些問題和解決方案。

用途:用已證實的和已知的解決方案快速解決問題,而不是每次都重新發明一種新的方法。

收獲:搜索已有的解決方案,通過例子學習或自己研究,並且以後可以重復利用。

隱性知識(專業知識、經驗及直覺)—— 人們在實現軟件體系過程中積累的經驗,會在大腦內部形成知識。通過強大的大腦功能,隱性知識可以綜合及協調其他兩類知識(概念知識和實踐知識)。這類知識很難傳授,因為大部分隱性知識都存在於我們的潛意識中。在特定條件下,它會和直覺一起發揮作用, 能夠在經驗、以及對概念性和實踐性知識的反饋和評估的基礎上,做出最佳決策。

用途:利用自己的專長、經驗及直覺來實現最佳解決方案。

收獲:開發軟件並總結。



設計模式(還有架構、領域及其他)都是結合了多種類型知識的有趣的例子:都是“如何做”的示例,這些例子背後的“概念知識”和實現它們的經驗。這種知識的體現形式,正是設計模式成功並廣泛應用的原因之一。


隨著越來越多的可供使用的實踐性解決方案和示例出現在網絡上,人們大腦中的實踐性知識的價值越來越小。我們已經不需要去記住實踐性知識。現在我們能夠解決軟件開發過程中,幾乎所有可能會遇到的常見編程問題。但是,除了能搜索到的示例,以及知道去哪搜索這些示例以外,一名大師級的程序員還知道更多的知識。他能夠提出自己的解決方案,制定大部分最佳決策,並采用最好的方式應用它們。此外,對於新的、復雜的、領域性的以及特定環境下問題,是很難在網上找到解決方案的。並且,對所有重要的軟件工程,在制定優秀解決方案的過程中,都需要高水平的軟件開發理論、這些理論的應用經驗、對系統的深入了解、問題空間環境等相關知識。


因此,在軟件開發過程中,概念知識和隱性知識仍然是非常重要的。在使用搜索技術時,我們應該去努力的擴展各種知識,而不是僅僅為了解決某個具體問題。隨著解決高層次問題能力的提高,你將會成功的成為一位更高效的程序員。

技術分享


用於解決實際問題的高效搜索



A.查找


定義——搞清楚你要解決的問題是什麽,並將註意力集中在查找內容上。網絡上有非常多有趣的資料,搜索的過程會輕易的花費掉你全部的工作時間(和個人時間)。

搜索(常用高級搜索語法)——如何正確高效使用搜索引擎,如何高效使用百度搜索。

瀏覽結果(內容的質量、可信度及專業技術的水平;如果資料的可信度過低,無須再看)– 閱讀 – 評估(人力物力、所依賴的工具及函數庫)




B. 使用




復制代碼 – 單獨復制(為此,最好能加上各種極端的單元測試)

清除代碼 –為你的解決方案僅保留最小限度、相關性、清晰的代碼。

在系統中應用代碼。




C. 學習




理解–你做了什麽及為什麽要那樣做–從代碼和實現中學習。

擴充知識—— a. 實踐知識:解決問題的具體方法、技巧及風格; b. 概念知識:學習新概念、提煉已有的並構建自己的概念; c. 隱性


知識:如果你明智地使用搜索到的解決方案並從中學習,經驗自然會地得到提高。

收集(鏈接、意見、參考文獻、閱讀清單)——任何對你今後搜索、探索及學習有用的有趣信息。為這些目標積累知識。


如何使用搜索技巧來成為一名高效的程序員