如何使用搜索技巧来成为一名高效的程序员

搜索技能的重要性

对于缺乏编程知识的人来说,完全有可能开发一个网页或一个小应用。如果运气够好,当你使用谷歌去搜索一些示例的时候,你有可能会搜索到现成的代码,并因此而完成工作。即便是那些经验丰富的程序员,也经常会为了节约时间和精力而去搜索现有的解决方案。

 

如果没有搜索引擎、网络和集体的智慧,现代化高效的编程技术是难以想象的。因此,搜索技巧对高效的程序员而言,变得越来越重要。

 

现在,我们不必去了解或记住许多程序的解决方法–只需要搜索即可。我们变得更加高效、更加有创造性,并且能够解决更多的问题。但是,难道这就意味着好的搜索水平就足够去开发软件了?本文,将深入探讨搜索技能在程序员知识形成过程中充当的角色,以及如何有效的使用搜索引擎。

 

 

知识的分类

 

有三种类型的知识:

 

 

 

searchskill-2.png

 

 

概念知识(为什么、是什么、如果– 语义上的)–理解开发软件过程中的概念、原理、关系及主要方法。这类知识,可以回答软件体系结构或代码必须按特定方式设计的原因,以及其中的最佳选择和选择背后的逻辑是什么。概念知识,是对问题的长远看法和理解,而不仅仅是指用一门编程语言去解决具体的问题。

用途:对复杂的开放式问题寻找新的解决方案,并创建稳健的软件系统。

收获:学习计算机科学、计算机体系以及编程概念,并在实践过程和经验的基础之上,构建自己的理论。

实践知识(如何做 – 在程序中)——如何用知识去解决具体的编程问题。这类知识不需要高深的概念知识和背后隐藏的理论基础。对于这点,搜索技术显得最为重要;因为编程语言所遇到的问题,以及问题的特定解决方案都是有限的,搜索引擎可以相对容易的共享这些问题和解决方案。

用途:用已证实的和已知的解决方案快速解决问题,而不是每次都重新发明一种新的方法。

收获:搜索已有的解决方案,通过例子学习或自己研究,并且以后可以重复利用。

隐性知识(专业知识、经验及直觉)—— 人们在实现软件体系过程中积累的经验,会在大脑内部形成知识。通过强大的大脑功能,隐性知识可以综合及协调其他两类知识(概念知识和实践知识)。这类知识很难传授,因为大部分隐性知识都存在于我们的潜意识中。在特定条件下,它会和直觉一起发挥作用, 能够在经验、以及对概念性和实践性知识的反馈和评估的基础上,做出最佳决策。

用途:利用自己的专长、经验及直觉来实现最佳解决方案。

收获:开发软件并总结。

 

 

设计模式(还有架构、领域及其他)都是结合了多种类型知识的有趣的例子:都是“如何做”的示例,这些例子背后的“概念知识”和实现它们的经验。这种知识的体现形式,正是设计模式成功并广泛应用的原因之一。

 

随着越来越多的可供使用的实践性解决方案和示例出现在网络上,人们大脑中的实践性知识的价值越来越小。我们已经不需要去记住实践性知识。现在我们能够解决软件开发过程中,几乎所有可能会遇到的常见编程问题。但是,除了能搜索到的示例,以及知道去哪搜索这些示例以外,一名大师级的程序员还知道更多的知识。他能够提出自己的解决方案,制定大部分最佳决策,并采用最好的方式应用它们。此外,对于新的、复杂的、领域性的以及特定环境下问题,是很难在网上找到解决方案的。并且,对所有重要的软件工程,在制定优秀解决方案的过程中,都需要高水平的软件开发理论、这些理论的应用经验、对系统的深入了解、问题空间环境等相关知识。

 

因此,在软件开发过程中,概念知识和隐性知识仍然是非常重要的。在使用搜索技术时,我们应该去努力的扩展各种知识,而不是仅仅为了解决某个具体问题。随着解决高层次问题能力的提高,你将会成功的成为一位更高效的程序员。

searchskill-3.png

 

用于解决实际问题的高效搜索

 

 

A.查找

 

定义——搞清楚你要解决的问题是什么,并将注意力集中在查找内容上。网络上有非常多有趣的资料,搜索的过程会轻易的花费掉你全部的工作时间(和个人时间)。

搜索(常用高级搜索语法)——如何正确高效使用搜索引擎,如何高效使用百度搜索。

浏览结果(内容的质量、可信度及专业技术的水平;如果资料的可信度过低,无须再看)– 阅读 – 评估(人力物力、所依赖的工具及函数库)

 

 

B. 使用

 

复制代码 – 单独复制(为此,最好能加上各种极端的单元测试)

清除代码 –为你的解决方案仅保留最小限度、相关性、清晰的代码。

在系统中应用代码。

 

 

 

C. 学习

 

理解–你做了什么及为什么要那样做–从代码和实现中学习。

扩充知识—— a. 实践知识:解决问题的具体方法、技巧及风格; b. 概念知识:学习新概念、提炼已有的并构建自己的概念; c. 隐性

 

知识:如果你明智地使用搜索到的解决方案并从中学习,经验自然会地得到提高。

收集(链接、意见、参考文献、阅读清单)——任何对你今后搜索、探索及学习有用的有趣信息。为这些目标积累知识。

 

posted @ 2017-07-04 11:11  蓝神  阅读(1650)  评论(1编辑  收藏  举报