工作中有问题解决不了?教你如何合理地寻求帮助
刚从学校出来的同学们,在刚刚加入公司的时候通常有大量的东西需要学习,不管是业务代码逻辑,还是工具链,或者自己暂时无法独立解决的复杂bug。我们通常需要向其他有经验的同事寻求帮助,很多公司在新人入职的时候也会分配一个mentor来为新入职的同学提供一些指导。有了搞不懂的问题,向其他人寻求帮助,拜托他们帮忙答疑解惑,是一个再正常不过的事情了。虽然说问问题有嘴就行,但是问太多没什么内容的低级无脑问题总是会让人心生反感。结合自己工作中的一些经历和感受,小葛格在这里整理了一些建议,供各位同学参考,希望不仅可以提高大家的技术能力,还可以提高大家沟通问题,解决问题的效率。
提问之前:
多读代码认清问题
虽然说我们刚刚进入公司,有了技术问题可以比较容易的从其他有经验的同事那里寻求帮助,但是要提高自己的技术水平还是要自己多摸索,努力通过自己的探索解决问题。对于我们新入职而且需要整天与代码打交道的人来说,在一座庞大的屎山上看来看去甚至还要再拉上几坨确实是一件有难度的事情,但是虽然是屎山,但是早晚还是要把它摸透的。当在这座屎山上出了问题的时候,首先还是要自己多去读里面的代码,尽快分析出问题是什么,为什么出现了这样的问题。这也是增进我们对代码逻辑理解和提高技术水平的一个必要过程,需要时间和耐心慢慢梳理。
借助搜索工具积极尝试
通过深入挖掘代码,我们通常可以大概了解问题是什么以及他的原因,下一步就是我们要尝试自己去修这个问题。如果目前我们的能力不足以支撑我们直接修好的话,Google或者百度是我们最好的朋友。通常情况下,经过了这么长时间的发展,我们不太可能遇到其他人完全没有遇到过的bug,通过对问题的搜索我们通常可以得到一些建议。在搜索出的建议的指导下,经过尝试和debug,一部分问题是可以解决的。
提问过程中:
如果经过了自己的搜索和尝试,仍然不能解决问题,那么这时候我们就需要向其他同事寻求帮助了。在寻求帮助的时,我们可以通过一些沟通的技巧来提高效率
描述清楚你想干什么
很多人在提问的时候通常会用大量的语言来描述细节,但是其他人并不能从这些细节中体会到你想要干什么。我们现在在做的事情其他人可能不是很了解或者不是完全清楚内部的细节。如果想弄清楚如何做某事,最好是在开头就描述目标,然后才陈述问题的细节。我们在寻求技术帮助的时候一般在心中有个想要实现的目标,以为在实现这个目标的路上被卡住了,然后来问该怎么走。但其实要实现这个目标其实本可以很简单。如果没有最开始说清楚目标的话往往需要花费一些时间先沟通清楚想干什么。
精确地描述问题
仔细、清楚地描述你的问题或 Bug 的症状。描述问题发生的环境(机器配置、操作系统、应用程序、以及相关的信息)。描述在提问前你是怎样去研究和理解这个问题的。描述在提问前为确定问题而采取的诊断步骤。描述最近做过什么可能相关的硬件或软件变更。尽可能地提供一个可以重现这个问题的可控环境的方法。尽量去揣测一个不了解你在做什么的人会怎样反问你,在你提问之前预先将他们可能提出的问题回答一遍。
不要问愚蠢的问题
这一点可能和上面有重复,一般做到了上面几点就不会问出愚蠢的问题,但是我觉得这一点还是有必要单独拿出来强调一下的。想象一下其他同事问你下列问题你是什么感受
- 我这代码怎么编译不过去了,能帮我看看么
- 我这代码跑出来怎么结果不对呢,求帮忙
- 我这段代码怎么没执行呢,跪求
- 我能在哪找到 X 程序或 X 资源。
这些问题本身自己通过debug或者搜索都可以很快的得到答案,但是如果找其他人帮助,别的不说,他人首先得先好好读一读你的代码,这个事情本身就需要不少的时间,大家的时间都是宝贵的。
清楚明确地表达你的问题以及需求
漫无边际的提问是近乎无休无止的时间黑洞。最有可能给你有用答案的人通常也正是很忙的人(他们忙是因为要完成大量工作)。
如果你明确表述需要回答者做什么(如提供指点、发送一段代码、检查你的补丁、或是其他等等),就最有可能得到有用的答案。因为这会定出一个时间和精力的上限,便于回答者能集中精力来帮你。
所以,界定一下你的问题,使他人花在辨识你的问题和回答所需要付出的时间减到最少,这技巧对你获得有用的答案相当有帮助。如果你的代码不能运作,通常请别人看看哪里有问题,比要求别人替你改正要明智得多。
提问之后
问题解决后,向所有帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向他们表示感谢。
对于有深度的问题,适当的记录是有帮助的。描述问题的最终状态,说明是什么解决了问题,写清楚哪些问题今后需要注意。