程序员如何搜索
当今程序员可以说完全离不开搜索工具,从一个项目要使用什么工具,到一段代码怎么实现,再到一个问题怎么去解决,等等,几乎全程都有搜索的行为发生。
但是据我的观察,在国内相当一部分程序员,不会使用合理的利用搜索功能,导致一些简单的问题迟迟无法解决或者过程不是很顺畅。
因此我一直想写一篇关于搜索文章,来分享一下我对于搜索的理解和看法,尽可能的把搜索这件事情,从我的角度阐述明白,希望可以帮助到一些需要的程序员。
我会送三个大的方面展开问题,第一是国内的中文互联网质量,第二是程序员应该具备哪些搜索技能,第三是如何正确利用搜索结果。
一. 国内中文互联网
这个大问题,我开篇点题,国内的中文互联网环境堪忧,大量的垃圾信息充斥其中,给搜索有价值的信息带来了极大的干扰。
为什么我要先说这个问题呢,因为我们说搜索这件事情,意义并不是单纯指的搜索本身,它背后有着一个隐藏含义,那就是搜索这个行为发生的环境。
如果环境本身就存在大量无价值的信息,那么必然会带来的就是搜索的成本上升,你要花费更大的精力去优化你的搜索,更多的时间去筛选和甄别你的搜索结果。
很不幸,我们国内的中文互联网,甚至是不仅仅是与技术相关的互联网环境,正是这种充满了大量无价值信息的环境。
这种环境如果说仅仅导致了低效这件事,那还不是很严重。
更大的问题是,这种环境给了大量的程序员低水平的甚至错误的引导,他们无法更好的提升自身的技能水平,相应的,很多项目的水平也无法提高,某些公司的大量项目会反复的陷入到无尽的 bug 和低水平运行中,这带来的影响是非常深远的。
低效搜索的原罪:百度
在国内提到搜索,百度是一个永远绕不过去的词。
作为互联网绝大部分信息的入口,百度身上肩负的责任不用多说。
但是如今的百度受利益驱使大过责任本身,向搜索中投放了大量广告,热门搜索被相关利益团体买下,搜索结果谁给的钱多谁就排在前面,搜索答案准确性导向变弱,中文搜索经常找不到自己想要的答案。
很多简单的初级问题,在百度搜索的加持下,兜兜转转无法解决,或者是无法搜索到高质量的解决方案。
对于技术搜索来说,百度,已经成为一个过去式。
原地踏步的中文互联网环境
如果说百度作为中文互联网环境的守门人,没有做好守门人的责任,那门内的世界也并不是如此美好,其造成的危害甚至要比百度带来的问题更加严重。
中文环境或许是由于 stackoverflow 的出现,阻碍了其发展,导致技术问答平台不够多,且质量低下。
知乎是一个问答平台,但它是综合性的,不是一个专门提出技术问题的地方,这意味着提出的技术问题的搜索度会被大量其它非技术问题稀释,简单说就是难搜到。
segmentfault 平台是一个专业的技术问题平台,但是十分小众,很难在搜索排名中进行竞争。
百度知道就更不用说了,彻彻底底的毒瘤平台。
可能是技术问答领域的缺失,大量的博客文章涌现来填补空白。
但是文章本身存在三个问题:
- 文章是个人经历总结,无法针对性的解决某个问题,你会经常搜索某个问题的针对性文章,但是大量文章模式都是作者长篇介绍问题背景,更有甚者从下载 jdk 到后台项目搭建到前端搭建整个流程都给你介绍一遍,这样导致的问题有价值的信息被稀释,解决问题的效率变低。
- 文章编写门槛低,文章不像问答形式能够过滤大部分人,这就导致文章经常出现重复拷贝且低质量的情况,加上由于很多平台不做质量上的审核和管控,使得情况更为严重,这也间接导致提出的问题只要稍微复杂一些,搜索难度倍增,经常出现相同的程序报错,中文环境给的文章五花八门,有说改这个有说改那个,不对错误根源进行剖析,不对解决方案进行解释,甚至有些文章给出的解决方案是:不知道怎么回事改个东西就好了。
- 标题逐渐向营销号靠拢,因为文章的大量涌现,加之互联网短视频普及大家都对流量开始有了新的认识,很多文章作者也开始使用各种吸引眼球的标题,这并不是一个好的现象,本身标题就没有几个字,为了吸引眼球在浪费宝贵的文字去稀释文章的主题,这对搜索和分辨文章是否是有价值的内容又增加了难度。
相信有很多人在搜索时,会发现,当你使用中文搜索时,无论你使用什么平台入口进行搜索,都会有大量重复的文章。
无论是有营养的文章,还是没营养的各类文章,都被大量的拷贝复制,发布在各个平台,谁也分不清到底哪篇文章谁是原创。
比较有代表性的就是简书、CSDN、51 等等平台,众多平台打着技术分享的旗号,扩大平台注册人数,却对平台内容不加以管控,低质量文章层出不穷,乱抄袭乱转载文章数不胜数。
近两年华为、腾讯、阿里也都开始建立自己的技术创作平台,但是问题也是一样的。
中文互联网中,也只有知乎拥有完善的转发和侵权申诉机制,抄袭转载的情况好一些,但是近两年时间内文章质量下滑也十分严重,风气也每况愈下。
这里不是说中文互联网环境就完全没有负责任的文章作者,但是相比较于国内程序员庞大的基数,这个数量实在不足以改变我们的互联网环境。
因此,基于国内的互联网网络存在限制的环境下,我认为建立一个甚至多个相互竞争的高质量的大型专业技术问答平台是十分必要的。
聊聊中文本身
中文互联网的基础自然是一大批同时使用中文的网民。
中文本身经过长时间的发展,历史悠久,变化万千,文化底蕴十分深厚。
但是在当下的技术环境中,中文在搜索方面却有着明显的短板。
那就是表达技术方面问题的不准确性,例如我遇到过的下面两个问题。
问题一
使用中文搜索下面的问题:
- mybatis 不执行查询 获取 sql
英文搜索:
- mybatis get sql without query
这两个问题相比较来看,英文的表述更加准确,因为英文中 without 的含义是明确的,并且容易被算法理解,歧义较少,大量有”不“、”无“、”不存在“、”没有“这个含义的问题,都可以用 without 表述。
而在中文中,”不“、”无“、”不存在“、”没有“的表述就较为模糊,你会发现它们作为谓语,无论怎么组合,修饰后面的宾语时,都会和你想要表达的准确含义差了一些。
体现在搜索方面就是,这个问题你无法用中文找到对应的答案,基本上都是在告诉你,如何在执行过程中获取 sql。
这个问题,就有人提过,标题为《mybatis的LambdaQueryWrapper不配置数据库如何获取即将执行的sql?》。上面的中文问题,和这个实际提过的问题意思都是相同的,但是搜索引擎很难告诉你这两个问题中的”不“到底有什么关联。
问题二
中文问题:
- spring boot 使用代码 获取 bean
英文搜索:
- spring boot get bean programmatically
一样的,中文很难直接找到答案,你能看到的基本全是告诉你 spring boot 获取 bean 的几种方法,其中就包含了使用代码获取 bean。
英文搜索中,关键词 programmatically 优势十分明显,表达的含义准确。
相应的,中文的含义就不是那么准确了,programmatically 在中文中可以翻译成各种表达方式,“编程式”、“用代码”、“使用代码”、“代码”、“纯代码”,其表达的含义类似,但总在关键含义中总是差了那么一点。
without 和 programmatically 这两个关键词会经常用到,它们在我搜索的时候也提供了很多的帮助。
二. 程序员应该具备什么搜索技能
换一个搜索引擎
实际上除了翻墙才能访问的谷歌,必应也是一个选择。
如果有条件,还是首选谷歌。
一个合格的程序员,实在是没有任何理由再使用百度,丢弃百度,意义不亚于说是你编程路上的一次开窍,是你思维上的一次升华。
尽量少的依赖中文
能够踏足编程行业的人,肯定是有一点英文基础的。
我发现大部分的程序员并不是不会英文,平时都看过不少的英文语言电影,编程中的一些单词都是英文,大部分浏览器都带有翻译功能,因此不存在不会英文这件事,只是熟悉与不熟悉的区别。
更多的时候,是本身在惧怕未知的事物,只要迈出第一步,更加广阔的世界就隐藏在中文之外,是的目前的中文世界很匮乏。
在编程过程中,大量英文单词实际上都是重复的,常见的例如 exception、model、test、monitor、listener、factory等等。当你积累了一定程度的单词,很多英文含义通过简单的组合就能大致猜测出来。
这不仅能帮助你快速解决问题,还能帮助你在不得不翻阅源码时,更好的理解作者的意图。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。