在职场上、在生活中提问无处不在,有时我们扮演着提问者,有时我们扮演着回答者。
有些人可能觉得不就是提个问嘛?有啥难的?我很认真的告诉你,提问是一门技术活。
如何正确地提出问题,是一个至关重要的技能。
在写公众号之后,有很多同学会私信我,问我各种问题,作为过来人,我当然懂得那些初入行的程序员们的困惑,我也经历过那个阶段。
在入行初期,我也会问出一些让人难以回答的问题,后来经过社会的毒打,我才渐渐地懂得提问的艺术。
今天我就想谈谈程序员们应该如何提问,有些观点可能听着有点刺耳,但这就是现实。
错误的提问
提的问题其实只要简单的用下搜索引擎就能得到答案。
比如有人问:什么是区块链?
很难吗?身为程序员搜索引擎都不会用?
还是你已经懒到需要别人把:
- 打开搜索引擎
- 输入关键字
- 点击搜索
- 点击答案
这几步骤帮你做了,然后再发你链接,你直接点就行了?
再比如一些代码错误,搜索引擎随便一搜即可得知答案,比如:
前人栽树后人乘凉,你偏不在那棵树下待着,拉着别人让他当场种树。
我从来没劝退过学编程的,看到这种的我要劝退你了。
搜索引擎都不会用写什么代码?
你不适合写代码,你没有编程细胞,你适合做少爷。
所以提问之前至少要先自己搜搜吧?别遇到个问题就抛出来,自己都不努力,不去尝试,就想着饭来张口吗?
还有工作上的一些事情,也需要提一提。
比如领导上周发了个代码规范手册,内容很多,上百条。
然后你今天写代码的时候忘了里面一项具体的约束,但是你有点印象,这时候我建议你自己去拉下那个文档找一找,而不是去问同事。
你可能会觉得问下同事更快,但是你自己记不得不要期望别人能记得,公司文件盘就在那里,你自己下载,翻一下很快,能不打扰别人尽量不要打扰别人。
职场上养成这样的习惯,同事间的关系会更加融洽。
就像小时候妈妈教的,自己的事情自己做。
提一些范围过于大的问题。
比如有人问:如何才能学好编程?
我很能理解你想要努力成长奋斗的热血之心。
人人都想上进,人人都想成为别人家的孩子。
但是问题范围过于大,怎样才算是你心目中的学好编程?
是做出个网站就算了吗?还是做出个有口皆碑的轮子?
是月薪达到 1W、2W、3W?
这类问题很模糊,而且只言片语间是说不清的,这肯定是需要经过系统的研究,这估计得一个专栏才能讲得清,这样你让人如何回答?
如果非得让我给出一个答案,那我只能说努力学习?
我估计得到这答案你又不乐意了,说我在敷衍你。
再来个问题:mysql 如何调优?
我感觉你在面试我,我只能回答你:***********。
懂的掌声!
问题冗长,错别字连篇,一堆代码。
这类问题在我们程序员中还是比较常见。
因为我们碰到的问题经常是需要结合一大段代码,需要涉及具体业务逻辑。
然后一堆代码直接微信发过来,没有任何排版,问题有好几段话,直接一扔,坐着解答。
还有一些打了错别字,语句不通,你聊天的时候打错字可以理解,但是你现在是在提问,是请求别人帮你解答。
你需要为自己的提问负责,你的问题都说不清晰,回答者为什么要耗费精力去解读你的提问?
是有几十套房整天想着如何收租,真的闲的蛋疼了吗?
将心比心,别人向你提问的时候这样一堆甩过来,代码一堆,问题都读不通顺,你有何感想?
所以上点心,这种问题,我贴个 RocketMQ issue template,参照这样的格式,写出来,然后发过来提问。
还有和业务强相关的问题,在你充分研究都束手无策之下,真心建议问下你 leader,放着 leader 不用干嘛?外人理解你业务都得花很大精力。
leader 不是拿来供着的,是拿来用的。
正确的提问
自己要先想清楚细节,精简问题。
问题不要张口就来,你遇到问题你真的努力思考过了吗?
你真的理清数据的来龙去脉的吗?
你真的自己打断点一步一步调试过了吗?
还是你只看到,呀,这个服务报错了,怎么回事?
于是问旁边的老哥,我这调用怎么报错了,你帮我看看?
我以前就是这样的,因为我是真的不懂,束手无策,那时断点都打不利索。
随便出点问题就睁眼瞎。
这时候就需要反思下自己,去学习,让知识武装自己。
再说回来,如果你仔细思考过你可能会发现问题被你解决了。
有时候就是缺少前后的梳理,你就集中在某个点,一直想一直想,抓破脑袋也想不出来。
这时候就可以通过为了要正确的提问反推一下自己,因为正确的提问需要提炼问题,需要清楚里面的细节,所以迫使你自己从头开始理,往往到最后问题就被你自己解决了。
就算还有疑问,那问题也相当精简和准确,面对回答者的反问,你能很清晰地把流程说清楚,提高解决问题的效率。
所以自己先摸清细节,精简问题,既能锻炼自己的问题排查能力,提炼能力,还能更好地提问,百利而无一害。
不要觉得替你解决问题理所当然,要珍惜每一次提问。
我其实是一个不喜欢提问的人,我觉得会麻烦别人,除非自己真的解决不了我才会发问。
奈何能力有限,所以我还是会经常问别人问题,我也有提问得不到回复的时候,我会气愤,凭什么不回答我的问题。
人之常情,我很能理解编辑了一段话之后得不到任何回应的感受。
但是反过来想想人家可能在赶项目?
人家可能每天凌晨两点到家?我又没给人钱,人家有什么义务和责任来回答我的问题?
所以要接收这个现实,也没什么好抱怨的,他不是你爸妈,他也很忙,理解一下。
所以有人回答你的提问时你要珍惜,在提问之前你要思考这个问题这样问好不好,是不是模棱两可?
别人抽出时间回答你的问题,你能做的就是缩短别人回答的时间,最高境界就是能提出一些有价值的问题,让双方都得到收益。
还有,保持尊重,不要用向你提问是给你面子一样的语气说话,蜜汁自信?
尽量自己先思考得出几个可能性,或者说几个方案。
提问之后说出自己的理解,至少证明你努力思考过。
毕竟你自己是当事人,你熟悉自己的问题场景,所以可以说说几个大方向,或者备选方案。
我随便举个例子,比如:我现在要做些日志的处理,消息队列用哪个好?
把这种问题换成:我现在要做些日志的处理,消息队列是用 Kafka 、RocketMQ 还是 RabbitMQ?
这样问题就更加具体,这里就有个选择题好过简答题的说法。
比如你向领导提问,让他做决定。
提问 A:领导,最近业绩有点下滑,我这里有两个方案,A方案需要XXXX,B方案需要XXXX,您觉得哪个比较好?
提问 B:领导,最近业绩有点下滑,我该怎么办?
你是领导,你喜欢哪个?
毋庸置疑,在考试的时候我就喜欢做选择题,而不是简答题。
领导招你是要你想给方案,而不是给你想方案。
最后
这篇文章的目的不是出于讽刺,而是希望大家都能正确的提问。
正确的提问不仅能提高个人对问题的分析能力、提炼能力,还能提高解决问题的效率。
这样,你好我好大家好,才是真的好。
别做伸手党,有些问题真的是需要自己钻研才能成长,别人告诉你的和你自己研究出来的不一样。
还有强调一下,这篇文章不是让我们不要提问,而是正确的提问。
然后再推荐看一篇文章,《How-To-Ask-Questions-The-Smart-Way》,专门写给我们编程人士看的。