Hello,大家好,我是 Sunday。
为什么需要提出一个好问题
自从做了 1v1前端私教 以来,我每天都会和很多同学进行沟通,帮助很多同学解决 工作中 和 学习中 的问题。
随着接触的同学越来越多,我发现 很多同学很难清楚的描述一个问题,比如昨天的这位同学发言:
这位同学我们叫他 小A。
小A 同学给了我一段代码,让我帮他看一下算法规则,我打开代码一看 好家伙,5000 多行代码...(a1 和 a2 两个数组 5000 多行)
我就完全看蒙了,然后我问 小A,你这是要做什么呀?
下面是 小A 同学给我的回复:
说实话,完全没有看懂。
然后我们先是文字沟通,然后语音沟通,慢慢解释,磨蹭了半个小时,我才明白什么意思。然后花了 5 分钟解决了这个算法问题
颇有一种 面试路上一小时,面试聊了 5 分钟 的既视感。
并且这种情况并不是个例,而是一个普遍的现象。如果没有办法提出一个好的问题,那么这将会大大的浪费自己的时间。
所以说 如何提出一个好问题非常的重要
如何提出一个好问题
01:提问之前:需要先进行尝试
千万不要什么都没做就直接提问!因为,这样你是没有办法提出一个问题的。
想要提出一个问题,那么前提一定是 自己进行了思考。思考的方式可以有很多种:
- 利用搜索引擎来搜索答案
- 利用 GPT 尝试获取答案
- 翻阅文档查找原因
- 翻阅之前的代码,看看是否有类似的处理
- ...
在提出问题之前,请先保证自己已经尝试过以上的方式了。
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 独家整理 大厂面试题 和 大厂真实面经