Source CC0-1.0 license
如何(有效地!)提问技术问题
你很忙,某些事情出问题了,需要帮助。也许你感到困惑、害怕,或者处于一种焦虑的状态。寻求帮助是很好的!但通过一些技巧,你可以更加有效地寻求帮助,在此过程中学到一些有用的技能,并更快解决问题。
想象一下,帮助你的人非常愿意帮助你,但他们也很忙碌。你如何让他们的时间发挥最大的作用?
继续阅读吧。
步骤
从搜索开始
很可能,无论你遇到什么问题,它都不是新的。别人以前可能已经遇到过了。
你需要先投入一些时间,而开始的地方是搜索。Google、Stack Overflow 是公共搜索的好选择,公司内部的 wiki、共享文档和 Slack 则是内部问题的好地方。你也可以尝试在 GitHub 上搜索错误信息和有用的字符串。最后,一些知识隐藏在需要登录的论坛(如 Facebook、AWS 论坛等)里……在那里也可以搜索。
如果方法得当,99% 的问题可以通过这种方式得到解决,而无需提问。学会高效地使用搜索引擎是一项非常强大的技能。
简洁总结问题
好吧,搜索没有奏效。现在该提问了。
用一句话总结你的问题。让它简洁明了,并包含适当的细节。附上相关链接,如图表(不要仅仅是截图!)和其他支持信息。让别人更容易查看同样的数据并进行尝试,减少往返沟通的次数(见下文关于这一点的重要性)。
描述你已经采取的步骤
你已经为解决问题做出了一些努力(对吧?),所以描述一下这些努力。说明你尝试过的方法、排除掉的可能性、发现的相关性等。预见到别人可能需要知道的信息,以免来回确认耽误进展。
同时,参考你查阅过的手册页和其他文档,来验证你的期望行为与实际行为是否一致。
尽可能最小化重现问题
如果可以,用尽量简单的方式重现问题。这可能意味着你需要专门写一个新的案例来重现问题——去做吧。没人会看一大堆无法编译的代码。
确保你的听众也能尝试你的重现案例。像 The Rust Playground 或 godbolt.org 这样的网站,是分享代码供他人即时尝试的好工具。
快速回应澄清问题
希望你不需要澄清太多,但万一需要,尽快回复。帮助你的人很可能也很忙,你回复得越快,他们越会保持参与,双方都会觉得这次互动更有价值。
需要记住的事情
展现谦逊并保持尊重
这是显而易见的。不要表现得无礼。寻求帮助完全没有问题。这可能会让你感觉自己暴露了弱点,但没关系。展现谦逊,承认自己知识的局限性,以尊重的态度提问和回应,并感谢那些帮助过你的人。
不过!不要问“我可以问个问题吗?”直接提问。如果你问“可以提问吗”,就是在浪费别人的时间(详见 https://dontasktoask.com/ 和 https://www.nohello.com)。
在正确的地方提问
有时候你的问题很好,但你问错了地方或找错了人。半夜叫醒某人解决可以等几小时的问题,不太好。同样,在错误的论坛或 Slack 频道提问也不太合适。
找对地方提问。看看别人问了类似的问题以及他们得到的回应。注意你的环境,尝试适应周围的文化和流程。
绝不要通过私信提问,始终在公开场合提问。 否则你只是在打扰某个人,而对其他人毫无帮助。
写得更好以获得更多帮助
简洁清晰地提问对所有形式的工程工作都至关重要。确保你的问题易于理解。如果你不是用母语提问,这可能会有些挑战,但事实是,你的问题越容易被理解,得到回复的可能性就越高。这可能不公平,但它是现实。
为读者着想,优化你的表达。打磨这项技能。它不仅仅在提问时有用,在其他方面也会有所回报。
减少来回确认
当你提问并提供更多细节时,试着预见别人可能会问的问题,并提前提供信息。这不仅可以更快得到答案,还体现了对帮助你的人的时间的尊重。这会让你的问题更好。
满足听众的需求
有人帮助了你!将来可能会有其他人遇到同样的问题!所以请回来告诉大家问题的根本原因是什么。这是对帮助你的人的一种尊重,也是对后来者的帮助(因为他们可能会通过搜索找到你的问题!)。务必完成这个闭环。
传递帮助
留在帮助过你的论坛里,如果你擅长某些领域,也回答别人的问题。提供帮助,营造一种愿意帮助的文化,同时也温和地引导人们学会如何提问更好(比如分享这篇文章!)。
内化你学到的东西
最后,从你的过程里学习。从答案中学习,但也要从过程中学习。反思你如何能让别人更容易帮助你,并为下次优化。无论你学到多少或在你的专业领域多么出色,你总是需要帮助,也总是在学习。