如何优雅的提问?

学习方法

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、良好的沟通和提问习惯以及强大的自我学习能力,这些都是一个人个人能力的体现。

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

往期精彩:

深度学习100问-19:什么是空洞卷积?

深度学习100问-18:如何计算CNN的感受野?

深度学习100问-17:语义分割有哪些常用的评价指标?

深度学习100问-16:为什么U-Net在医学图像上表现优越?

深度学习100问-15:什么是深监督(Deep Supervision)?

深度学习100问-14:图像语义分割有哪些经典的上采样方法?

深度学习100问-13:深度学习如何制作个人数据集?

深度学习100问-12:深度学习有哪些经典数据集?

深度学习100问-11:什么是学习率衰减?

深度学习100问-10:如何部署一个轻量级的深度学习项目?

深度学习100问-9:为什么EfficientNet号称是最好的分类网络?

深度学习100问-8:什么是Batch Normalization?

深度学习100问-7:dropout有哪些细节问题?

深度学习100问-6:有哪些经典的卷积类型?

深度学习100问-5:如何阅读一份深度学习项目代码?

深度学习100问-4:深度学习应遵循怎样的论文研读路线?

深度学习100问-3:深度学习应掌握哪些Linux开发技术?

深度学习100问-2:深度学习应掌握哪些Git开发技术?

深度学习100问-1:深度学习环境配置有哪些坑?


一个算法工程师的成长之路

长按二维码.关注机器学习实验室

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值