我的编程入门之路(一) 聪明地搜索和智慧地提问

一、背景

  写这篇文章的时候,我的编程经历刚满两年,充其量也是一个初学者,在编程的道路上摸爬打滚。期间遇到很多的问题,也尝尽了初学者可能会遇到的好多苦头。

  高考填报志愿,软件工程专业不是所选的第一专业,但是被该专业录取了。跟大部分人一样,对该专业基本没什么概念。可能也是上天最好的安排吧,从一开始的无所适从,到慢慢的了解了这个行业,我发现我慢慢的爱上了这个专业所做的事情,我慢慢地热爱了编程。敲代码,其实是一件很有趣的事情。

  在课程学习或者是自学,又或者是做项目的过程中,肯定会或多或少遇到问题,问题很多时候可能会是我们完成某一件事情的瓶颈。以前的我经常会钻牛角尖,坚持认为通过自己的思考肯定可以搞得定,不愿意轻易地求助于别人。这样就可能导致可能因为很小的细节问题而浪费很多宝贵的时间。

   对于编程,从初学者走过来的我认为,很重要的一点是,遇到问题要会聪明地搜索,要会智慧地提问。搜索其实是尝试自己解决问题,而提问则是向别人求助。下面就是我就这两个方面进行我所积累的经验的阐述。

二、聪明地搜索

聪明的搜索,说白了其实就是学会运用搜索技巧

   作为初学者,我首先让自己接受一个观点:自己所遇到的几乎所有的问题,都是别人曾经遇到过的,并且都会有很好的现成的解决方案。因此每当我遇到一些难以解决的问题的时候,我往往会先百度或者google看看问题是否被别人提出过,如果有,看有什么适合的解决方案。
   会打字和会打开浏览器的人都会搜索,但是搜索的结果却有很大的差别。善于搜索的人,能够快速找到自己想要的信息,并且高效的解决目前遇到的问题。

  1. 提炼关键字

   对于搜索,我觉得首先要明确的一点是,搜索引擎是按照关键字来进行搜索的。虽然一般搜索引擎都能做到词法分析自动提取关键字,但是搜索一句话和一段话的做法仍然不值得推荐,因为这样会产生很多无关的关键字,很可能会让想要的网页排到后面而无法让自己捕捉到有用的信息。同时从自己所遇到的问题中提炼出关键字能够让自己很好的理解问题,从而引发不一样的思考,可能会对问题的解决有帮助。

  2. 常用搜索技巧

高级的搜索技巧有很多,但是常用的其实就是几个。所举例子主要基于百度,搜索技巧对于搜索引擎来说基本通用。

   (1) 空格 (多关键字搜索)

  • 搜索引擎匹配一个或者多个关键字。
  • 这是最常用的搜索技巧。
  • 例子:梁朝伟 周杰伦

   (2) | (互斥关键字搜索)

   (3) - (不包含关键字搜索)

   (4) + (包含特定查询词)

   (5) “”(精确匹配搜索)

   (6) site (特定站点搜索)

   (7) intitle (网页标题搜索)

   (8) inurl (url搜索)

   (9) filetype (指定文档类型)

   (10) 百度高级搜索页面

  • 如果你的搜索需要更高精度的匹配,可能需要直接在百度高级搜索页面进行搜索
  • 例子: 百度高级搜索页面

三、智慧地提问

向有经验的人或者专家请教,能帮我们很好的解决问题。现在的问题是,如何请教才能得到他们清晰的回答,要知道他们都很忙,我们需要很好的设计问题而吸引他们回答问题。

(以下观点适合于通过邮件,论坛等提问,可能不适合于通过qq,微信等即时通讯工具的提问)。

   我想每个人都有被人问问题的经历,不同的人精通的领域不同,或者对某方面的经验的丰富程度不同。因此,每个人都有可能是因为是某方面的专家而被提问。我在学习方面算是经验丰富的人,至少相对于低年级的人来说是如此。我有很多被提问的经历,有些问题我觉得很好,可能也是我自己也没有注意的知识,有些问题却是浅层的问题,稍加阅读就能得以解决的,碰到后者的问题,我是不愿意去解答的,往往会回答:“你先把书本看清楚再说吧“。

   聪明的人当然不会问后者的问题,问这些问题的人往往是因为听课或者看书不认真,并且懒于自己查书,或者压根也没有意识到可以查书。

   提问的人都是因为有急需解决的问题,因此并不想自己的问题被忽视。如果你做了充分的思考、尝试和在网上查找,但是找不到适合的解决方案的时候,我觉得这时候可以进行提问了。

   要注意的是,不是说做了这些事情后进行提问,就一定能够取得别人的回答。如果问题模糊,不知所问,仍然可能被人忽视。

   下面我将介绍阅读《提问的智慧》的总结,基本能囊括文章的内容,如果你赶时间,阅读下面的内容即可,如果你觉得总结不好或者想回味原文,你可以直接到点击这里阅读原文

在描述问题上下功夫有很多好处,其中之一就是能让你更清晰的理解问题,可能你在描述问题的过程中就找到了解决问题的方案了。

  1. 提问前

1)尝试在你准备提问论坛的历史文档中搜索答案
2)尝试搜索互联网以找到答案
3)尝试阅读手册以找到答案
4)尝试阅读“常见问题文档”(FAQ)以找到答案
5)尝试自己检查或试验以找到答案
6)尝试请教懂行的朋友以找到答案
7)如果你是程序员,尝试阅读源代码以找到答案

提问时,请先表明你已做了上述事情,这将有助于建立你不是寄生虫与浪费别人时间的印象。

  2. 提问时

    1)仔细挑选论坛

仔细挑选与你问的问题相关的论坛。主要是两方面:问题主题,问题深浅程度。想问c语言相关的问题,你跑到nodejs论坛肯定是不合适的。你是如果是初学者,最好到面向初学者论坛提问,或者提问的时候表明自己是初学者。

    2)使用有意义且明确的主题

在邮件列表、新闻组或论坛中,主题是你在五十个或更少的字以内吸引有资格专家注意的黄金机会,不要用诸如 “请帮我” (这种主题的消息会被条件反射式地删掉)之类的唠叨浪费机会。

    3)用清晰、语法正确、拼写正确的语句书写

用正式语言描述问题,还有使用专业术语,建议不要使用太多的网络流行语,或者表情,这会让人感到厌烦。总的来说是不要浪费文字。写上问题后,要反复核对,检查拼写错误或者术语使用错误。

    4)使用易于读取且标准的文件格式发送问题,注意缩进

如果你需要张贴相应的文件,可以直接放上一个附件链接,但文件最好遵循 6)量不在多,精炼则灵 的原则,如果需要把文件的内容放到问题上,最好通过截图或者编辑器提供的相应格式的呈现内容,比如Markdown语法。

问题逻辑需要清晰,要有良好的分段和缩进,提高可读性,切记不要把问题写在一个段落,或者大篇幅粘贴代码。这样是没有人愿意阅读你的问题的。

    5)说清楚出现问题的环境、错误性问题的症状、你所做过的尝试

问题环境:对于回答者来说,比较希望能了解到提问者问题所在的环境。如:操作系统类型,使用的编辑器,使用的软件,使用的调试工具等等。这有助于回答者了解你的情况。因为可能就是环境本身导致的问题。

错误性问题的症状:症状指的是,问题表现出的与正常情况不符的现象。比如,你要1+1的公式,正确答案是2,输出却是3,这就是问题的症状。提问需要写清楚问题是什么问题,而不是直接说,你的哪里出现了问题。这是不负责任的表现,也会降低别人对你问题的兴趣。

你所做过的尝试:把你所做过的尝试写上去,有助于回答者找到更多的解决问题的思路。

    6)量不在多,精炼则灵

不要大段地张贴错误,或者其他信息,要甄别跟问题无关的信息,筛选出最能体现问题的内容。如果你实在不能甄别,那就用附件的形式放上去。

    7)按时间先后罗列问题症状

如果有多个问题,千万要根据时间来描述问题症状,否则会影响回答者对问题的理解。

    8)提问应明确

明确你的提问是要完整的解决方案,还是希望回答者指明解决问题的方向。比如:麻烦给出合适的解决方案。请指明我下一步应该怎样做。

    9)不要把问题标记为“紧急”, 即使对你而言的确如此

这样的字眼不会得到回答者的青睐,反而浪费了描述问题的字数。

    10)礼貌总是有益的

要知道没有人必须为你解答,所以需要使用适当的客气语气。也要注意过犹不及,因为你的目的是提问和解决问题。适当的礼貌让人舒服,并乐意为你解答。

  3. 提问后

如果问题通过提问得以解决,或者自己想到了解决的办法,最好自己在问题后面附加针对问题的自己发现的最好解决方案,以便让以后遇到同样问题的人,能迅速得到答案,而不需要花长时间的等待和摸索。

  4. 作为回答者

作为问题的回答者,如果你不充分绝对确定你的答案可以解决问题,最好加以说明。否则会误导提问者,浪费他的时间。回答前其实应该验证一下自己张贴的答案是否能够真正解决问题。

  5. 问题示例

从示例中能最直观地学到知识

  • 愚蠢:我在哪能找到关于 Foonly Flurbamatic 设备的东西?

    • 这个问题在乞求得到 “搜搜该死的网络”(STFW) 式的回复。
  • 明智: 我用谷歌搜索过“Foonly Flurbamatic 2600”,但没有找到什么有用的,有谁知道在哪能找到这种设备的编程信息?

    • 这个人已经搜索过网络了,而且听起来他可能真的遇到了问题。

  • 愚蠢: 我不能编译某项目的源代码,它为什么这么破?

    • 提问者假设是别人搞砸了,太自大了。
  • 明智: 某项目的源代码不能在某 Linux 6.2 版下编译。我读了常见问题文档,但其中没有与某 Linux 相关的内容。这是编译时的记录,我做错了什么吗?

    • 提问者已经指明了运行环境,读了常见问题文档(FAQ),列出了错误,也没有假设问题是别人的过错,这家伙值得注意。

  • 愚蠢: 我的主板有问题,谁能帮我?

    • 某黑客对此的反应可能是:“是的,还需要帮你拍背和换尿布吗?”,然后是敲下删除键。
  • 明智: 我在 S2464 主板上试过 X、Y 和 Z,当它们都失败后,又试了 A、B 和 C。注意我试 C 时的奇怪症状,显然某某东西正在做某某事情,这不是期望的行为。通常在 Athlon MP 主板上导致某某事情的原因是什么?有谁知道我还能再试点什么以确定问题?

    • 相反地,这个人看来值得回答。他或她展现了解决问题的能力而不是坐等天上掉馅饼。

四、参考链接

  1. 十大百度搜索技巧
  2. 百度搜索高级语法技巧大全
  3. How To Ask Questions The Smart Way
  4. 提问的智慧
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值