池建强的公开课

讲讲咱互联网行业自己的故事

个人成长,观点,认知, 软技能

池建强 极客时间创始人、墨问西东创始人

第3期 | 你真的会问问题吗?

讲述:池建强 大小:7.49MB 时长:00:07:48
00:00
1.0×

你好,这里是卖桃者说。今天我想跟你聊聊如何更有效的提问这个话题。

前几天看到一篇文章,里面写了程序员要避免的10个坏习惯。其中一个坏习惯是万事不求人,拒绝寻求帮助。这个在学习和工作场景中都还蛮常见的。我们很多人都不愿意主动寻求帮助。为什么呢?主要的原因无非是自尊心作祟,害怕别人知道自己不知道。

心理学中有个专有名词叫“冒名顶替综合征(Imposter Syndrome)”,简单来说就是无法将自己的成功归因于自己的能力,并总是担心有朝一日会被别人识破自己就一个普通人。患有冒名顶替综合征的人通常会坚信自己的成功并不是因为自己的努力或能力,而是凭借着运气、良好的时机,或者别人误以为他们能力很强、很聪明,才导致他们的成功。

程序员其实是蛮容易患冒名顶替综合征的群体。我在公司里和用户沟通的时候,和员工设计产品的时候,甚至做演讲和写作的时候,偶尔也会有这种无力感,这事做成了真的和我有关系吗?与此同时,我们会主观的认为向他人寻求帮助会强化这种感觉,暴露自己是个“弱者”,其实并不是这样。

不愿意寻求帮助,会浪费大量的时间,还会阻碍你的成长。不知道你有没有过这样的经历,一个问题自己想到心碎都没有解决,别人过来随便敲了几行代码,不仅你懂了,连你的小伙伴都懂了。

没人会因为你问问题而批评你,寻求帮助是一件再正常不过的事。当然,如果你想自己找到答案,也没问题,给自己设定一个时间限制就好了。但是,当你的前辈和伙伴就在你旁边,他完全可能帮到你时,千万不要浪费几天时间来寻找答案。

当然,这也不是说你遇到问题就冲到别人跟前开始发问。这样做,你很大可能被大家集体拉黑。

如何问一个有效的问题呢?这里面是有技巧的。提问和回答是交流中最重要的部分,一个好的问题能够让提问者和回答者同时获益。

举个例子,我之前一直在做技术和平台产品方面的工作,我们部门经常会收到公司内外同事和用户的问题邮件,有些好的问题能让你发现自己技术上的缺陷、产品的 bug 或软件提升的空间,去思考、回答和解决这样的问题真是一件让人赏心悦目的事情。但非常遗憾的是,这样的好问题却是凤毛麟角。我经常会被一些莫名其妙的问题搞的啼笑皆非,比如:

  1. 程序运行过程中突然内存溢出,该如何解决?
  2. 如何配置JVM的虚拟机参数?
  3. 程序部署到Linux上后,页面出现中文乱码,是不是中间件的配置出现问题了?
  4. 集群节点不能自动复制,如何解决?

最可气是第四个问题,研发去现场看了一下,最后发现两个节点之间网络根本就不通嘛,这种“异常”在现场该是多么容易发现啊。

美国著名记者弗兰克.赛斯诺就曾经说过这样一句话,“问问题是我们日常中很重要的一个思维方式。提出问题就已经解决了问题的一半。我们的问题反映出我们是谁,我们将续去向何方以及我们的沟通方式,但很少人知道如何系统有效的提问。”

工作初期我也问过不少傻问题,好在那时候大家比较包容。而真正让我意识到好问题重要性的,是在工作中与国外程序员的邮件交流过程。

有一段时间,我的工作是与美国程序员共同维护一个平台级产品,邮件往来必不可少。当时我就发现,他们提问题或报 bug 都非常规范,每个 bug 都有清晰的标题,正文是环境描述、已经采取了什么措施、结果、日志、Core Dump、截图等等。读完邮件,你就能很清楚对方想要表达的意图和希望你能提供的帮助,而且你也知道该做什么,如何回复等等。

那么,如何提一个让双方都满意的好问题并最大程度的得到回复呢?大好人生,谁也不愿意为一个烂问题浪费时间,对不对?

简单分享一下我的经验,如果你按照以下步骤进行,相信提出的问题会更靠谱一些。

首先,遇到问题不要急着问别人,时间允许的情况下,先看看靠自己是否能够解决。这样,一方面能锻炼自己分析问题和解决问题的能力,另一方面,一旦问题解决了,问题就不是问题,而是你的经验和知识库了。况且现在互联网上有那么多的技术资料和各类问答网站,想碰到一个别人没碰到过的问题,已经非常困难了。

如果做了努力依然不能解决,或者客观条件不允许你自己解决了,那么要做的就是选择一个好的提问对象,不管是是现实中的大神,还是网络上的牛人,确保他是你所知道的最佳解决人选。

接下来进入到正式提问环节,首先,你要先用一句话准确概括你遇到的问题,提炼出问题的核心,如果是邮件沟通的话,你可以把它作为标题,更能吸引你的求助对象打开你的邮件。

然后,要用清晰的语言描述你遇到的问题,注意要先在开头说明你想达到的目标,再去详细描述你问题的具体场景,阻碍你的特定步骤等等。因为很有可能你之前的思路、过程就走了弯路,避免误导其他人。

在描述具体问题的时候,要注意提供相关场景和信息,比如所用的操作系统、数据库等相关软件及其版本号等;同时尽可能地提供问题相关的可分析文件,包括日志、截图和 Core Dump 等。另外,你也要说一下自己已经尝试采用了什么措施来解决问题,最终结果是什么样的,问题是否可以重现,采用什么方式重现等等。虽然提供的信息看起来很多,但还是注意不要长篇大论,尽量简明扼要,描述主要问题。

还有一点需要注意的是,如果你是口头问问题,那最好在开口之前,自己先将问题过一遍,不要太相信自己口头表达能力。

最后,不要忘了说请和谢谢,毕竟大家的时间和精力都很宝贵,别人其实没这个义务必须回答问题。

你会问问题吗?你愿意回答什么样的问题呢?欢迎在留言区告诉我。

好,这个话题我们就聊到这里,卖桃者说,明天见。

(编辑:成敏)