提问比回答更重要!程序员啊,努力提出一个好问题吧

482 阅读5分钟

Hello,大家好,我是 Sunday。

为什么需要提出一个好问题

自从做了 1v1前端私教 以来,我每天都会和很多同学进行沟通,帮助很多同学解决 工作中学习中 的问题。

随着接触的同学越来越多,我发现 很多同学很难清楚的描述一个问题,比如昨天的这位同学发言:

这位同学我们叫他 小A

小A 同学给了我一段代码,让我帮他看一下算法规则,我打开代码一看 好家伙,5000 多行代码...(a1 和 a2 两个数组 5000 多行)

我就完全看蒙了,然后我问 小A,你这是要做什么呀?

下面是 小A 同学给我的回复:

说实话,完全没有看懂。

然后我们先是文字沟通,然后语音沟通,慢慢解释,磨蹭了半个小时,我才明白什么意思。然后花了 5 分钟解决了这个算法问题

颇有一种 面试路上一小时,面试聊了 5 分钟 的既视感。

并且这种情况并不是个例,而是一个普遍的现象。如果没有办法提出一个好的问题,那么这将会大大的浪费自己的时间。

所以说 如何提出一个好问题非常的重要

如何提出一个好问题

01:提问之前:需要先进行尝试

千万不要什么都没做就直接提问!因为,这样你是没有办法提出一个问题的。

想要提出一个问题,那么前提一定是 自己进行了思考。思考的方式可以有很多种:

  1. 利用搜索引擎来搜索答案
  2. 利用 GPT 尝试获取答案
  3. 翻阅文档查找原因
  4. 翻阅之前的代码,看看是否有类似的处理
  5. ...

在提出问题之前,请先保证自己已经尝试过以上的方式了。

02:提问前:提供一个最小的 demo

切记不要把整个项目都发给对方,因为对方并不熟悉你的业务。

所以,在进行提问前,最好可以准备一个 最小的 demo ,这个 demo 一定是用 最少的代码可以复现你目前所遇到的问题的。

以 小A 同学的问题为例,跟他沟通之后,代码可以优化成一下这样:

请忽略大小写的问题

看着是不是清晰很多了。

03:提问先说明目标,而不要描述过程

在进行提问时,一定要先说明 你期望的结果是什么,而不要在哪里描述你做的过程。

否则你想想,如果别人都不知道你想要干什么,那么是不是根本就没有办法为你提出解决方案呢?对不对。

同时,需要注意的是:这个结果一定是一个明确的

咱们还是以这个问题为例,其实 小A 想要的是:

使用 a1 中的 LampFamily 对比 a2 中的 LampClass,两个属性相等,并且 a2 中对象属性的 ScenType 和 ScenType 也都为 0。

那么就拿到这些对象,组成一个新的数组。

从新的数组中根据 Light 属性进行挑选,标准是:找到与给定数字最接近的 Light 属性所属的对象

那么以上这个就是 小A 需要做的事情。

有了这个清晰、明确的要求,我们就知道接下来应该怎么做了。

04:问题解决之后,复盘一下问题

当你可以提出一个清晰的问题之后,那么这个问题通常会很容易得到解决。

当你的问题解决了,那么最好可以 复盘 下整个问题。因为这是对你自己的负责。

同一个问题,我们可以出现一次、两次,但是出现三次就不对了。

所以,当问题解决了,那么好好的复盘一下整个问题,以此来带动自己的成长。

05:更多的提问方式

如果进行更好地提问,这个问题其实在很早之前就已经被大家所关注了。

早在十年前,有个 github 仓库叫做 How-To-Ask-Questions-The-Smart-Way 翻译过来是【如何聪明的提问】,目前已经有了 29.3k 的 star 数,由此可见这个话题的优秀和重要程度。

这个仓库中,描述了进行提问的完成流程,但是因为是国外的译文,所以说很多的语言并不通畅,同时并不适合国内的情况(比如:通过邮件沟通)。同时库中通过几十个步骤描述了提问的流程,非常的全面,如果大家有时间的话,也可以去看一下。

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer 已帮助数百位同学拿到了中大厂 offer

私聊领取:Sunday 独家整理 大厂面试题大厂真实面经