学习方法

Author:louwill

Machine Learning Lab

关于提问的事情,都是老生常谈了。偶尔也能看到呼吁正确提问的帖子,但似乎很多人并不是很重视提问的方式和价值。本着惩前毖后的原则,笔者也来写一写提问这个话题。

生活中当我们向外界抛出一个问题时,这个问题能否得到有用的回答,很大程度上取决于我们提问的方式。闻道先后,术业专攻,向他人请教问题是每个人都避免不了的事情。三人行,必有我师焉说的就是这个道理,所以总体而言,我们都是鼓励大家提问,一问一答的交互过程,本身就是提问者和被提问者相互学习和启迪的过程。但现实情况下,问答之间的交互过程会因为提问者的不当发问而出现问题,问问题的水平会直接影响到问题答案的质量。

所以,前面说的鼓励提问并不是对提问的完整理解。孔子说必有我师和不耻下问,放到今天,也得加上一层正确发问的含义。技术人鼓励提问,但并不是我们鼓励随便提问,而是鼓励在充分努力自我获取答案而不得的基础下有见地的发问。

提问之前应该做的事

一般情况下,每个人都有自己的事情,并为此而忙碌。因为向别人提问而占用别人大量时间本身就是一个让人过意不去的事情,对于大多数从事专业技术的人来说,时间比任何事情都宝贵。所以在提问之前,最好要确保自己的问题不会成为他人的时间杀手。但凡事没有绝对,可能你的问题没办法让回答者一两句话说清楚,也可能愿意回答你问题的人本身就足够耐心或者古道心肠。即使如此,我们要确保在提问前做到以下两个原则。

第一是不问蠢问题。第二是不当懒家伙。这两个原则通常相辅相成,有些朋友是因为懒不想自己动手搜寻答案而导致问一些愚蠢的问题,有些朋友则是不愿意思考而随口问出没人愿意回答的问题。所以,第一个问题,什么是蠢问题?蠢问题就是提问者本身动动脑筋和动动手就可以从搜索引擎得到答案的问题。所有人都应该对这种提问表示蔑视,这样的人只想做伸手党,只想从他人那里直接获取,以至于浪费他人宝贵的时间来自私自利。我们把这样的懒家伙归为最令人讨厌的那一类人。

典型蠢问题和懒家伙

把握住两个基本原则之后一般就能避免大多数尬尴的提问局面了。在这个过程中,你需要善用搜索引擎,让你能够高效的从互联网中找到问题的答案。熟练使用谷歌搜索和擅于在Stack Overflow、GitHub Issue、Quora、Medium和Reddit上找到问题的答案是每一个技术学习者都应具备的基本能力。为什么我们会这么重视通过互联网搜索来解决个人问题呢?一是互联网上开源资料汗牛充栋,这些都足够解决你碰到的一些问题。再者是你作为初学者在学习过程中碰到的问题和踩到的坑99%的人都碰到过,并且在网络上也都留下了解决方案,你要做到只是把你的Error Information丢到谷歌里去。

比如下图是Python的一个简单报错,列表索引超出了:

IndexError

即使是小白初学者,碰到这种问题一般根据代码的报错信息就可以自我解决问题了,稍微麻烦点把报错复制到谷歌同样也可以很快解决问题。如若这类问题还有人要拿来问,且不说被提问者会不会回答你,他可能会对你的学习能力产生很大质疑对你来说才是重大关切。

除了使用搜索引擎之外,很多工具使用、编程语言和代码使用问题,官方都会给相应的Manual或者Tutorial。比如说学习R语言你会用到R help,学习PyTorch官方也给了一个非常完整的PyTorch Tutorial。

PyTorch Tutorial

所以,正式提问前的一些自我探索的工作很可能能解决你个人80%的问题,在这个过程中你熟练了如何使用搜索引擎,学会了如何对获取的信息流进行区分,知道了在什么地方可以找到一个问题的答案,假以时日,你就是一个学习能力超强的人。同时也节约了他人时间,让你极大了减少了成为别人时间杀手的概率。可以说,提问前的搜索和阅读决定了你的成功。

正式提问时

人生不如意者十有八九。搜索引擎能解决我们碰到的80%的问题,但剩下的不能靠自己解决的20%总是要面对的。所以这时候,就大胆地向别人提问吧。经过提问前的准备,相信99.9%的人都不会再问出蠢问题,问出的问题也一定是付出了努力和经过深思熟虑了。

走到这一步,我们也要注意一些问题,让我们的提问更加易于理解并能快速得到反馈。首先是我们提问的平台或者说方式,如果是身边的同事和同学,梳理一下逻辑、组织好语言,直接找到对方就可以提问了。线下的提问和交流一般不会出什么问题。但大家身边能随时可以请教的人不多,很多人还是习惯于线上提问。比如说通过微信向他人提问,就某段开源项目的代码给作者发邮件等等。

线上提问很重要的一点就是语言描述。跟当面请教别人一样,你先要理一下基本逻辑,你要做什么,尝试了什么方法,在什么环境下用了什么工具,碰到了什么问题,说明通过搜索引擎找到的答案都不能完全解决等等。总的来说,你需要把你问题的来龙去脉用简单的语言表达清楚。千万不要小看这一点,很多时候提问者的语言表达能力简直可以用混乱来形容。

bad case

我们看一下上面这个bad case。作为一个咨询类提问,提问者先是对自身情况做了一个一句话的介绍,让被提问者知道他是哪个学校的以及他是一名大四学生。然后该学生就直接提出了他的问题,想找一份算法工作,然后问需要做什么。我不知道大家看到这样的提问会是什么样的感受。就笔者而言,第一感受就是一个字都不想回答。即使有意愿回答,也不知道从何答起。第一,这位同学在提问之前肯定是没有做调研,哪怕把这个问题原封不动的输入谷歌都没有试过,否则不会问出这样的问题。第二,即使是没做调研,把自身情况说详细一点,有专业背景,受过哪方面训练,想做哪个方向的算法,针对算法岗自身有哪些相关比赛和在校项目等等。

我们来对上面的bad case做一下修改,大家可以做个对比:

bad case修正

修改之后虽说问的也不是很好,但至少言之有物,介绍了更多的自我情况,问的问题相对具体许多,让被提问者有可以接话的点。

其次是追问的时候注意不要踩雷。通常来说,一次问答交互过程极有可能不足以帮你解答疑惑。这个时候追问就很重要了,比如说下面这个例子:

bad case

提问者的追问可以说是非常糟糕的。对于被提问者的回答,提问者应该像提问之前自己解决问题的过程一样,对对方的回答出现的未知概念先做一个基本的了解,努力搞懂对方的回答。图中追问的方式就是典型的不假思索的追问。

还有很重要的一点就是要注意礼貌。俗话说礼多人不怪,没人会因为你多礼而怪罪你。也不是要有多礼貌,就是基本的对话礼貌用语即可。开头询问时要打招呼,别人回答完要说感谢。仅此而已。相信下面这种对话仅仅是少数,大多数人都干不出这种事。

bad case

最后说一下涉及到代码的提问。毕竟与代码相关的问题占了技术学习者的大部分时间。有代码就会有bug,有bug自己解决不了就会向外界发起求助。在向人询问有关代码bug的问题时,最好是能说明该bug是在什么运行环境下产生的,比如在Linux Python3.6环境下,该代码在第8行报了一个RuntimeError,谷歌尝试的方法都没能解决,这时候在向对方描述的时候就会非常具体了。高手之间的代码询问可能会通过制作bug测试用例来呈现问题,当然这不做普遍要求,通常能够描述清楚自己的运行环境、Bug所在位置和预期结果就足够了。大家在Stack Overflow上查问题时可以留意一下,别人是如何描述自己的代码bug的。

终极目标:锻炼自己快速解决问题的能力

提问永远只是一种解决问题的手段和方法,对于技术学习来说,我们的终极目的是提升自己快速解决问题的能力。每个人都应该以此为目标。使用搜索引擎快速解决bug、良好的沟通和提问习惯以及强大的自我学习能力,这些都是一个人个人能力的体现。

就简单的说这么多,很多地方可能说的词不达意,但核心目的都是希望大家能够努力提升自己解决问题的能力,进而提升个人核心竞争力。最后祝愿大家都能愉快的提问。

欢迎大家留意讨论。

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑AI基础下载(pdf更新到25集)机器学习的数学基础专辑本站qq群1003271085,加入微信群请回复“加群”获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/yFQV7am喜欢文章,点个在看

【建议】如何优雅的提问?相关推荐

  1. 众筹编写《微生物组数据分析与可视化实战》——成为宏基因组学百科全书的创始人...

    众筹编写<微生物组数据分析与可视化实战>--成为宏基因组学百科全书的创始人 高通量测序的发展极大地推动了微生物组/宏基因组领域的发展.微生物组的数据分析和解读需要微生物学.生物信息学.统计 ...

  2. 研究生新生进入实验室后,如何成长?5点建议分享

    作者|罗民 研究生和本科生有何不同,你当然可以说出很多不同之处. 我认为有一个显著的不同之处就是:从个人奋斗到团队奋斗的转变. 在本科阶段,一个学生是作为一个个体在学习,从老师,从同学,从学校环境中学 ...

  3. 微生物样本取样及微生物基因组DNA提取建议

    本文转载自"锐翌基因",己获授权. 想得到好的测序结果,首先得有个高质量的DNA样品,所以取样与DNA提取是大家普遍关心的问题.今天,给大家准备了各种微生物样本的取样和基因组DNA ...

  4. MER:1.8万字带你系统了解宏组学实验与分析(高通量测序应用于病原体和害虫诊断——综述与实用性建议)...

    高通量测序应用于病原体和害虫诊断--综述与实用性建议 High‐throughput identification and diagnostics of pathogens and pests: Ov ...

  5. 如何通过提问成为更好的开发人员

    如何通过提问成为更好的开发人员 这是新的一年的开始,所以我想以一篇我已经计划写了一段时间但从未真正开始创作的帖子开始.我最近开始了一份新工作,加入Elastic[1],负责开发他们的 .NET 语言客 ...

  6. 【转载】提问的智慧(How To Ask Questions The Smart Way)

    提问的智慧 How To Ask Questions The Smart Way Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen 本指南英文 ...

  7. 请打开正确的提问方式

    请打开正确的提问方式 许多项目在他们的使用协助/说明网页中链接了本指南,这么做很好,我们也鼓励大家都这么做.但如果你是负责管理这个项目网页的人,请在超链接附近的显著位置上注明: 本指南不提供此项目的实 ...

  8. 程序员提问的智慧(How-To-Ask-Questions-The-Smart-Way)

    提问的智慧 How To Ask Questions The Smart Way Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen 本指南英文 ...

  9. 提问的智慧 How To Ask Questions The Smart Way

    提问的智慧 How To Ask Questions The Smart Way Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen 本指南英文 ...

最新文章

  1. 那个曾经为美国NASA开发火星大脑的AI公司,现在和华为合作了
  2. linux 如何显示一个文件的某几行(中间几行)
  3. 韦博英语危机爆发,教培行业如何应对中年危机?
  4. 判定一个点是否在三角形内
  5. java 正则 多个空格_java正则表达式 多个空格替换多个成-
  6. LeetCode 1146. 快照数组(哈希map + 有序map)
  7. Android加载大图片不OutOfMemoryError
  8. 七夕单日票房破5亿!创复工后单日票房新高
  9. MYSQL集群的备份与恢复最终版本
  10. Tarjan+topsort(DP)【P3387】 [模板]缩点
  11. 计算机与科学a,[第一单元] 计算机与计算机科学-课文A参考译文
  12. 矩阵分析(2)--正规矩阵、正交矩阵
  13. Xcode打包ipa的步骤
  14. ftp服务器复制文件命令,FTP服务器的Copy命令的使用
  15. 盘点2022年最受欢迎的6大前端框架
  16. python HEIC2jpg 压缩
  17. 计算机网络中的NET与应用中的.NET
  18. mac mysql 没有my.cnf_mac下mysql配置my.cnf无效
  19. 深入分析JavaWeb技术内幕系列之---DNS域名解析过程
  20. Java解决杨辉三角问题(这里提供了两种方法)

热门文章

  1. 2018.11.09 codeforces487E. Tourists(tarjan+树链剖分)
  2. 关于异步IO与同步IO的写操作区别
  3. ZJOI2012网络 题解报告【LCT】
  4. mysqldump 和 sql命令导入sql文件
  5. maven下载spring
  6. 续流二极管原理及应用
  7. 如何 Credit Hold 客户
  8. 电脑开机进入桌面很慢的解决办法
  9. 孝敬父母 天经地义 |有人这么疑问?
  10. c语言 char memcpy,在C中使用memcpy复制无符号字符数组