对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序。 如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码。 即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案。
如果不借助搜索技术、网络及集体智慧,现代化高效编程是难以想象的。 因此,搜索技巧对高效程序员变得愈发重要。
现在,我们不需要了解和记住如何解决众多的编程问题,可以采用搜索技术。 我们正变得更加高效、高生产力,并能够解决更多的问题。 但这是否意味着在构建软件时,拥有好的搜索技巧就足够了呢? 本文将讨论,搜索技巧在程序员知识的形成过程中的作用,以及如何高效使用搜索技巧。
知识的类型及它在程序员大脑中如何成长。
有三类知识
概念知识(为什么、是什么、如果—— 语义上的)——理解软件系统构建过程中的概念、原理、关系及主要方法。 根据这类知识,能够找出体系结构或代码必须按特定方式设计的原因,以及从中选择最佳设计方案的备选方案和逻辑是什么。 概念知识,不是指用特定编程语言解决特定问题,而是对问题的长远看法和理解。
- 用途:对复杂的开放式问题寻找新的解决方案,并创建稳健的软件系统。
- 收获:学习计算机科学、体系结构以及编程概念,在实际实现和经验的基础上,构建自己的理论。
实践性知识(如何做 —— 过程中的)—— 关于如何解决特定编程问题的知识。 这类知识不需要深入理解实现方法选择过程中隐含的概念及基本原理。 搜索技术在这里最重要,因为对有限的编程语言问题所采取的特定解决方案,搜索能相对容易的加以共享并说明。
- 用途:用已证实的和已知的解决方案快速解决问题,而不是每次都重新发明一种新的方法。
- 收获:搜索现有的解决方案,通过例子学习或提出自己的解决方案并以后对其重利用。
隐性知识(专业知识、经验及直觉)——基于软件系统实现过程中所积累的个人经验,在大脑中形成的内在知识。 通过强大的大脑功能,隐性知识可以综合并协调其他两种知识。 这类知识很难传授,因为它的大部分都存储在我们的潜意识中。 在特定环境下,它和直觉一同发挥作用,能够在经验、对概念性和实践性知识的反馈和评估的基础上,制定最佳决策。
- 用途:利用自己的专长、经验及直觉来实现最佳解决方案。
- 收获:构建软件并从结果中学习知识。
设计模式(还有架构、领域及其他)是不同类型知识相结合的有趣的例子:“如何做”的例子, 这些例子中隐含的概念及实现过程中积累的经验。 这种知识的表现方式是模式成功及广泛应用的原因之一。
随着越来越多的可供使用的实践性解决方案和示例出现在网络上,人们大脑中的实践性知识的价值越来越小。 我们不需要记住实践性知识。 现在我们能够处理软件构建过程中几乎所有可能遇到的常见编程问题。 然而,除能够解决问题的示例或从哪搜索这些示例以外,一名大师级的程序员还知道更多的知识。 他能够提出自己的解决方案,制定大部分最佳决策,并采用最好的方式应用它们。 此外,很难在网上找到新的、复杂的、领域性的及特定环境下的问题的解决方案。 而且,对所有重要的软件工程,在制定优秀解决方案的过程中,都需要高水平的软件开发理论、 这些理论的应用经验、对系统的深入了解、问题空间及环境等相关知识。
因此,在软件开发过程中,概念知识和隐性知识仍然是非常重要的。 在使用搜索技术时,我们应当努力扩充各种知识,而不是仅仅解决特定问题。 随着解决更高级问题的能力的提高,你会取得成功,成为更高效的程序员。
可解决实际问题的高效搜索
A. 查找
- 定义——弄清楚要解决什么问题,并以要查找的内容为焦点。网络上有如此多的有趣的材料,以至于搜索过程能轻易地占掉你全部的工作时间(和个人时间)。
- 检索(使用标准的Google、代码搜索或其他的检索引擎)—有很多关于如何高效的使用检索引擎的建议。
- 浏览结果(内容的质量、可信度及专业技术的水平;如果资料的可信度过低,无须再看)-> 阅读 -> 评估(人力物力、所需工具及函数库)
B. 使用
- 复制代码 - 单独复制(针对这一目的,带有长钉技术的显式单元测试最适合)
- 清除代码 - 仅保留最小限度、相关性代码,清除解决方案中的其它代码。
- 在系统中应用代码。
C. 学习
- 理解——你做了什么及你为什么那样做——从代码和实现中学习。
- 扩充知识——
- a. 实践性知识:解决问题的特定方法、技巧及风格;
- b. 概念知识:学习新概念、提炼现有的并构建自己的概念;
- c. 隐性知识:明智地使用并学习搜索到的解决方案,经验会自然而然地得到增长。
- 收集(链接、意见、参考文献、阅读清单)—任何对你今后搜索、发现及学习有用的有趣信息。为这些目标积累知识。
你还有其他高效搜索代码的诀窍吗?欢迎在评论或微博中和大家分享。
分享到:
相关推荐
如何使用搜索技巧来成为一名高效的程序员, 如何使用搜索技巧来成为一名高效的程序员, 如何使用搜索技巧来成为一名高效的程序员。
【程序员技巧收集助手】是一款专为程序员设计的实用工具,旨在帮助他们更有效地积累和管理在编程工作中遇到的各种技巧和经验...通过合理利用这款工具,程序员可以更好地管理自己的技能库,成为更高效、更专业的开发者。
Justin James在文章中提出了高效程序员所应具备的七个共同特征,这些特征涵盖了学习态度、工作方法、解决问题的技巧、职业热情、团队合作精神、对技术的深入理解以及个人的进取心。 首先,高效程序员通常具有主动...
- **搜索技巧**:利用搜索引擎如Google、Bing等,结合关键词准确查找相关信息。 - **社区求助**:当遇到难题时,可以向Stack Overflow、GitHub等技术社区寻求帮助。 - **多角度思考**:遇到复杂问题时,可以从不同...
EditPlus就是这样一款被广大程序员所推崇的文本编辑工具,它以其丰富的特性,简洁的界面以及对多种编程语言的良好支持,成为了开发者日常工作中不可或缺的伙伴。 EditPlus不仅是一款基础的文本编辑器,更是一款集成...
"Everything"是一款高效快速的文件搜索工具,深受程序员和IT专业人士的喜爱。它的设计目标是提供一个几乎实时的文件和文件夹搜索功能,极大地提升了在大量文件中查找特定内容的效率。 1. **实时搜索**: "Everything...
了解并熟练掌握这两种语言是成为专业程序员的必经之路。 文件操作是任何编程语言中不可或缺的部分,无论是读写文件、处理文件流,还是进行文件的创建、删除和重命名,都是日常开发中的常见任务。理解文件系统的原理...
URNotes是一款专为程序员设计的实用小软件,它允许用户创建桌面便签,方便记录临时的想法、编程技巧或待办事项。作为一个高效的工作辅助工具,URNotes能够帮助程序员提升工作效率,减少因遗忘重要细节而产生的困扰。...
### 老程序员才知道的技巧 #### 1. 重构:程序员的核心技能 重构是程序员的一项核心技能,它不仅能够帮助提高代码的质量,还能增强软件的可维护性和扩展性。重构涉及修改现有代码而不改变其外部行为的过程,通过...
掌握这些基础知识是成为一名合格C++程序员的基石。 其次,书中深入剖析了C++的内存管理,包括指针的使用、动态内存分配与释放,以及如何避免常见的内存泄漏问题。理解和熟练运用指针是C++编程的核心技能之一,而...
Java编程语言是面向对象的、跨平台的编程语言,广泛应用于企业级应用开发、移动应用开发(如Android)以及各种互联网软件开发。本压缩包文件提供了丰富的Java学习...不断学习和实践,是成为一名优秀Java程序员的关键。
"做人"在这里指的是培养良好的职业素养、沟通技巧以及团队合作精神,而"做事"则涵盖了高效编程、代码质量控制以及问题解决策略。 在编程领域,程序员不仅需要掌握扎实的编程语言基础,例如Java、Python、C++等,还...
《程序员面试宝典(第三版)》是一本针对IT专业人士,特别是程序员的面试准备指南,其高清、实用的特点使得它成为面试者不可或缺的参考资料。这本书深入浅出地讲解了程序员在求职过程中可能遇到的各种问题,涵盖了从...
本书以实际案例贯穿始终,让读者在实践中学习,从基础编程技能到项目管理,再到团队领导,全方位提升程序员的综合素质,为成为技术领导者打下坚实基础。无论你是编程新手还是希望晋升的技术管理者,都能从中受益匪浅...
这些命令对于日常开发工作至关重要,能够帮助程序员高效地进行编译、运行、文档生成和调试等工作。具体来说,需要熟悉以下命令: - **appletviewer**:用于查看和执行Applet程序。 - **HtmlConverter**:用于将HTML...
SQL优化是程序员,尤其是数据库开发者和Java开发人员的必备技能,因为高效的SQL语句对于系统的性能至关重要。在数据量逐渐增长的过程中,不合理的SQL语句可能会成为系统性能的瓶颈。以下是一些关于SQL优化的关键点:...
具备较强的异常处理能力和调试技巧是每位Java程序员必备的能力之一。当程序出现异常时,能够根据异常信息快速定位问题原因和发生位置,从而及时修复错误,确保系统的稳定运行。 #### 八、面向对象编程思想 深入...
为了方便开发者学习和提升,Delphi程序员助手可能包含了Delphi语言及相关库的在线帮助文档,以及一些编程技巧和最佳实践,是学习和解决问题的好帮手。 9. **性能分析** 针对性能敏感的应用,助手可能提供性能分析...