对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序。 如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码。 即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案。
如果不借助搜索技术、网络及集体智慧,现代化高效编程是难以想象的。 因此,搜索技巧对高效程序员变得愈发重要。『继续阅读:程序员怎样提高写代码的速度』
现在,我们不需要了解和记住如何解决众多的编程问题,可以采用搜索技术。 我们正变得更加高效、高生产力,并能够解决更多的问题。 但这是否意味着在构建软件时,拥有好的搜索技巧就足够了呢? 本文将讨论,搜索技巧在程序员知识的形成过程中的作用,以及如何高效使用搜索技巧。
知识的类型及它在程序员大脑中如何成长。
概念知识(为什么、是什么、如果—— 语义上的)——理解软件系统构建过程中的概念、原理、关系及主要方法。 根据这类知识,能够找出体系结构或代码必须按特定方式设计的原因,以及从中选择最佳设计方案的备选方案和逻辑是什么。 概念知识,不是指用特定编程语言解决特定问题,而是对问题的长远看法和理解。
实践性知识(如何做 —— 过程中的)—— 关于如何解决特定编程问题的知识。 这类知识不需要深入理解实现方法选择过程中隐含的概念及基本原理。 搜索技术在这里最重要,因为对有限的编程语言问题所采取的特定解决方案,搜索能相对容易的加以共享并说明。
隐性知识(专业知识、经验及直觉)——基于软件系统实现过程中所积累的个人经验,在大脑中形成的内在知识。 通过强大的大脑功能,隐性知识可以综合并协调其他两种知识。 这类知识很难传授,因为它的大部分都存储在我们的潜意识中。 在特定环境下,它和直觉一同发挥作用,能够在经验、对概念性和实践性知识的反馈和评估的基础上,制定最佳决策。
设计模式(还有架构、领域及其他)是不同类型知识相结合的有趣的例子:“如何做”的例子, 这些例子中隐含的概念及实现过程中积累的经验。 这种知识的表现方式是模式成功及广泛应用的原因之一。
随着越来越多的可供使用的实践性解决方案和示例出现在网络上,人们大脑中的实践性知识的价值越来越小。 我们不需要记住实践性知识。 现在我们能够处理软件构建过程中几乎所有可能遇到的常见编程问题。 然而,除能够解决问题的示例或从哪搜索这些示例以外,一名大师级的程序员还知道更多的知识。 他能够提出自己的解决方案,制定大部分最佳决策,并采用最好的方式应用它们。 此外,很难在网上找到新的、复杂的、领域性的及特定环境下的问题的解决方案。 而且,对所有重要的软件工程,在制定优秀解决方案的过程中,都需要高水平的软件开发理论、 这些理论的应用经验、对系统的深入了解、问题空间及环境等相关知识。
因此,在软件开发过程中,概念知识和隐性知识仍然是非常重要的。 在使用搜索技术时,我们应当努力扩充各种知识,而不是仅仅解决特定问题。 随着解决更高级问题的能力的提高,你会取得成功,成为更高效的程序员,人有多大懒,才有多大闲。