青青子衿, 悠悠我心, 但为君故, 沉吟至今
« 安全卫士的个性化请给用户离开的权利 »

成为高效程序员的搜索技巧

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

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

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

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

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

  有三类知识:

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

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

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

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

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

  • 用途:利用自己的专长、经验及直觉来实现最佳解决方案。
  • 收获:构建软件并从结果中学习知识。
如何使用搜索技巧来成为一名高效的程序员

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

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

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

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

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

  A. 查找

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

  B. 使用

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

  C. 学习

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

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

  来源:伯乐在线投稿,原文链接



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/2453.html
  • 文章排行:
  • 1.梅花牌运动服
  • 我的手机是nokia6300,下次也去下载个玩玩
  • 2010/12/18 0:50:17   支持(13)反对(6) 回复
  • 2.奎奎玩站
  • 有时候也可能搜来很多没用的东西,还让自己折腾半天。
  • 2010/12/18 19:10:44   支持(15)反对(8) 回复
  • 3.我的名字叫麒
  • 强力插入前十~~~~~~~~
  • 2010/12/16 19:51:08   支持(13)反对(7) 回复
  • 4.第一主页
  • 好棒的博客啊,回访一下嘛
  • 2010/12/17 19:59:18   支持(11)反对(5) 回复
  • 7.耐磨地坪
  • 很有指导,有启发!
  • 2010/12/23 11:03:23   支持(11)反对(6) 回复
  • 8.爱新奇
  • 讲得很有道理 程序员需要高效
  • 2010/12/16 19:06:26   支持(12)反对(8) 回复
  • 9.修行者
  • 我想把六条合并成三条.作为我以后的指导性意见(我不是学编程的,我只是应用本文的理念)
  • 2010/12/16 19:15:59   支持(9)反对(6) 回复
  • 10.laok4399
  • 说的太对了,我自己就是一个几乎靠搜索弄个小站的人。。。
  • 2010/12/17 12:14:36   支持(8)反对(5) 回复
  • 12.创意日博客
  • 呵呵 编商业软件的确难而且难卖,我只编些小软件来推广自己的博客、、
  • 2010/12/17 9:15:32   支持(12)反对(10) 回复
  • 15.古典家具
  • 很难看懂。看了好一会,原来是这样的啊,程序员的大脑有问题,嘿嘿
  • 2010/12/16 20:41:10   支持(9)反对(8) 回复
  • 16.天乐博客
  • 很受启发,不错的文章。
  • 2010/12/16 22:32:12   支持(13)反对(12) 回复
  • 19.悟天
  • 搜索技巧,算是程序员默认的技能
  • 2010/12/19 19:51:06   支持(8)反对(7) 回复
  • 21.小狼
  • 饼图挺好看的。今天的文章提前了点。
  • 2010/12/16 18:51:27   支持(8)反对(8) 回复
  • 23.WordPress啦
  • 注重技巧啊!人要学会变通。。。
  • 2010/12/17 10:18:41   支持(8)反对(8) 回复
  • 27.xiaoo
  • 要刷新下才可以看见评论,月光大哥博客前几天访问真卡
  • 2010/12/16 19:12:20   支持(10)反对(12) 回复
  • 29.冰雪封情
  • 以前还想做程序员,现在想都不敢想了

    牛人这么多,何时才能出人头地
  • 2010/12/18 17:39:24   支持(10)反对(12) 回复
  • 31.土工布
  • 最近,正在学习这方面的知识,受益了!
  • 2011/4/16 9:34:44   支持(6)反对(8) 回复
  • 33.ILAGO
  • 正在努力成为一个合格的程序员
  • 2010/12/17 12:01:09   支持(10)反对(13) 回复
  • 37.小邓
  • 沙发沙发他说太短了怎么办?
  • 2010/12/16 18:52:03   支持(12)反对(18) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.