`
llyzq
  • 浏览: 579935 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多

      没有人是完全独立的孤岛,每个人都是整体的一部分。——约翰·多恩

  对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序。如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码。即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案。



  如果不借助搜索技术、网络及集体智慧,现代化高效编程是难以想象的。因此,搜索技巧对高效程序员变得愈发重要。

  现在,我们不需要了解和记住如何解决众多的编程问题,可以采用搜索技术。我们正变得更加高效、高生产力,并能够解决更多的问题。但这是否意味着在构建软件时,拥有好的搜索技巧就足够了呢?本文将讨论,搜索技巧在程序员知识的形成过程中的作用,以及如何高效使用搜索技巧。


  知识的类型及它在程序员大脑中如何成长。 


  有三类知识:

  概念知识(为 什么、是什么、如果—— 语义上的)——理解软件系统构建过程中的概念、原理、关系及主要方法。根据这类知识,能够找出体系结构或代码必须按特定方式设计的原因,以及从中选择最佳 设计方案的备选方案和逻辑是什么。概念知识,不是指用特定编程语言解决特定问题,而是对问题的长远看法和理解。

  • 用途:对复杂的开放式问题寻找新的解决方案,并创建稳健的软件系统。
  • 收获:学习计算机科学、体系结构以及编程概念,在实际实现和经验的基础上,构建自己的理论。


  实践性知识(如何做 —— 过程中的)—— 关于如何解决特定编程问题的知识。这类知识不需要深入理解实现方法选择过程中隐含的概念及基本原理。搜索技术在这里最重要,因为对有限的编程语言问题所采取的特定解决方案,搜索能相对容易的加以共享并说明。

  • 用途:用已证实的和已知的解决方案快速解决问题,而不是每次都重新发明一种新的方法。
  • 收获:搜索现有的解决方案,通过例子学习或提出自己的解决方案并以后对其重利用。


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

  • 用途:利用自己的专长、经验及直觉来实现最佳解决方案。
  • 收获:构建软件并从结果中学习知识。 

  设计模式(还有架构、领域及其他)是不同类型知识相结合的有趣的例子:“如何做”的例子,这些例子中隐含的概念及实现过程中积累的经验。这种知识的表现方式是模式成功及广泛应用的原因之一。


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


  因此,在软件开发过程中,概念知识和隐性知识仍然是非常重要的。在使用搜索技术时,我们应当努力扩充各种知识,而不是仅仅解决特定问题。随着解决更高级问题的能力的提高,你会取得成功,成为更高效的程序员。 


  可解决实际问题的高效搜索

  A. 查找

  • 1. 定义——弄清楚要解决什么问题,并以要查找的内容为焦点。网络上有如此多的有趣的材料,以至于搜索过程能轻易地占掉你全部的工作时间(和个人时间)。
  • 2. 检索(使用标准的Google、代码搜索或其他的检索引擎)—有很多关于如何高效的使用检索引擎的建议。
  • 3. 浏览结果(内容的质量、可信度及专业技术的水平;如果资料的可信度过低,无须再看)-> 阅读 -> 评估(人力物力、所需工具及函数库)


  B. 使用

  • 1. 复制代码 - 单独复制(针对这一目的,带有长钉技术的显式单元测试最适合)
  • 2. 清除代码 - 仅保留最小限度、相关性代码,清除解决方案中的其它代码。
  • 3. 在系统中应用代码。


  C. 学习

  • 1. 理解——你做了什么及你为什么那样做——从代码和实现中学习。
  • 2. 扩充知识——
    • a. 实践性知识:解决问题的特定方法、技巧及风格;
    • b. 概念知识:学习新概念、提炼现有的并构建自己的概念;
    • c. 隐性知识:明智地使用并学习搜索到的解决方案,经验会自然而然地得到增长。
  • 3. 收集(链接、意见、参考文献、阅读清单)—任何对你今后搜索、发现及学习有用的有趣信息。为这些目标积累知识。


  你还有其他高效搜索代码的诀窍吗?欢迎在评论或微博中和大家分享。

 

      本文出处:伯乐在线 - 职场博客
  本文链接:http://www.jobbole.com/entry.php/371

 

分享到:
评论

相关推荐

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

    如何使用搜索技巧来成为一名高效的工程师?没有人是完全独立的孤岛,每个人都是整体的一部分。——约翰·多恩对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序。如果在用Google搜索相关示例时幸运的话,...

    电子书(如何成为一名优秀的JSP程序员)

    本书旨在帮助读者掌握JSP的核心概念、开发技巧以及最佳实践,从而提升在Web开发领域的专业技能,成为一名杰出的JSP程序员。 **JSP概述** JSP(JavaServer Pages)是Java平台上的一个标准组件,用于创建动态网页...

    作为一个程序员的最基本要求

    以下是对成为一名好的程序员所必需的关键要素的详细解释: 首先,扎实的基础知识是程序员的基石。这包括理解计算机科学的基本概念,如数据结构、算法、计算机网络和操作系统原理。对于初学者,学习C语言是建立基础...

    优秀程序员之路 C# 开发经验及技巧大汇总.rar

    首先,成为一名优秀的C#程序员,你需要掌握基本语法和数据类型。C#支持多种数据类型,包括整型、浮点型、字符型以及布尔型。理解变量的声明、初始化和作用域是至关重要的。同时,掌握控制流语句,如if条件语句、for...

    书中描述对了,相当一名好的程序员的必经之路

    在编程世界里,成为一名优秀的程序员并非一蹴而就的事情,它需要不断...通过阅读和实践书中的内容,程序员可以逐步掌握JavaScript的核心概念、高级特性,以及与之相关的开发技巧,从而走上成为一名优秀程序员的道路。

    程序员技巧收集助手 v1.3

    "程序员技巧收集助手 v1.3"是一款专为程序员设计的工具软件,旨在帮助程序员们高效地收集、整理和分享编程技巧与经验。这个版本1.3可能包含了新功能和性能优化,使得软件更加易用和实用。标签“技巧助手”暗示了其...

    everything搜索工具,程序员好帮手!

    "Everything"是一款高效快速的文件搜索工具,深受程序员和IT专业人士的喜爱。它的设计目标是提供一个几乎实时的文件和文件夹搜索功能,极大地提升了在大量文件中查找特定内容的效率。 1. **实时搜索**: "Everything...

    Linux程序员— C语言

    Linux程序员在学习C语言的过程中,会接触到一系列关键概念和技术,这些是成为一名熟练的系统级开发者的基础。本资源包包含了电子教案、源代码和其他相关资料,为深入理解和实践C语言提供了全面的学习材料。 首先,...

    高质量的C++编程 让你成为一个优秀的c++程序员

    《高质量C++编程:让你成为一...这些内容都是成为一名优秀C++程序员所必须掌握的技能。通过深入学习和实践,读者不仅可以提升编程能力,还能培养出编写高质量、易于维护代码的习惯,从而在软件工程领域取得更大的成功。

    如何成为优秀的JSP 程序员

    在IT行业中,JSP(JavaServer Pages)是一种用于构建动态...以上这些知识和技能是成为一名优秀JSP程序员的基础。通过深入学习和实践,不断积累经验,你将能够创建高效、可维护的Web应用程序,并在IT行业中脱颖而出。

    C++高级程序员手册

    《C++高级程序员手册》是一本专为C++开发者,特别是有一定基础的程序员设计的参考书籍。这本书旨在深入探讨C++编程语言的高级特性和...通过系统学习,你将能够熟练运用C++解决复杂的编程问题,成为一名真正的C++高手。

    程序员杂志

    它可能涵盖了从技术技能提升到团队协作、项目管理、持续学习等多方面的内容,旨在帮助程序员提升全面素质,成为一名更专业、更有价值的开发者。 总的来说,这个压缩包提供了一套全面的学习资源,涵盖了算法、开源、...

    超强版linux程序员手册

    了解这些基础知识是成为一名合格Linux程序员的基石。 2. **Linux命令行工具**:书中详细列举并解释了数百个常用的Linux命令,包括文件和目录管理、文本处理、系统监控、网络通信等,这些都是日常开发和系统维护中的...

    你是合格的程序员吗?—合格程序员应该具备的12种能力

    综上所述,成为一名合格的程序员并不简单,它要求广泛的知识和技能,涵盖从解决问题到个人发展,再到团队合作等多个方面。文件"解决问题,创造力及个人知识管理.ppt"可能进一步深入探讨了这些关键能力,提供了具体的...

    c语言高级程序员编程指南

    通过学习和实践这些高级主题,你将能够编写出更为高效、健壮和优雅的C语言程序,成为一名真正的C语言高级程序员。记住,实践是检验真理的唯一标准,理论知识需要通过不断的编程实践来巩固和提升。

    Java程序员面试宝典

    总的来说,要成为一名成功的Java程序员,不仅需要扎实的技术功底,还要具备不断学习和适应变化的能力。利用提供的压缩包资源,结合自身的实践和思考,将极大地助力你在面试和职业生涯中取得成功。

    如何成为一名合格的架构师

    总的来说,成为一名合格的架构师,需要深厚的编程基础,卓越的团队协作能力,以及对新技术的敏锐洞察。他们不仅能够设计出高效的系统,还能通过实际行动影响团队,推动项目的成功实施。因此,每个渴望成为架构师的...

Global site tag (gtag.js) - Google Analytics