程序员优雅提问宝典《九步真经》 | 软技能

411 阅读7分钟

一日,少年问一大师

少年问: 这个BUG,怎么解?
大师曰: 无解!
少年又问: 为何无解?
大师怒骂: 你眼瞎啊! 这个数组溢出!
少年落荒而逃...


作为基础程序员,需要学会好好提问,学会《九步真经》


基本口诀


先靠自己、再靠别人
排除原因、礼貌问答
善于总结、手留余香

修炼步骤


一: 翻文档


如果你遇到属于一个开源库或者框架的问题(如vue,react,wxparse)
你需要先去github的官方仓库,看一下是不是有相关的文档

如果文档中不存在这个问题的说明
那么你一定要学会issue查询

基本上很多问题你应该可以在仓库内解决的。

(看不懂英语怎么办?把英文版圣教抄100遍.)

二: 善用搜索

搜索是一门很重的学问
并不是你写的越多,你就可以搜索到想要的答案的
(我觉得目前一个人遇到的90%的问题,都是可以通过搜索解决的)

如果想要找到一个问题的精确答案,那么”关键词”是很重要的

个人理解,”关键词”是建立在你对基础知识、框架结构、问题来源的理解的综合体.
“GOOGLE”大法好,”Baidu”(有人要打我)也不错!

只要关键词找的对,答案自己就来跪!

三: 组织问题

如果1-2步无法解决你的问题,你需要处理并且系统化你的问题,来曝光问题获取外界支持

a.利用问答社区, 展示你的问题


这样是比较好的描述,资料也全



b.你需要集中描述,精简说明


如果你会向技术群或者专家来回答的时候
你可能更加认真对待你的问题描述
你在对话流中进行提问,往往如果你不一次性提供参考内容
很容易被别人忽略,或者排斥。

你可以组织如下语句,一次性发送在群,或者 个人聊天提问中



问题: React native配置后,一直'Installing react-native package from npm...'

环境: mac + node v7.1 + iterm2
采用教程: 极客公园的文档: React Native 官方文档中文版

问题描述: 已经进行到init项目阶段,但是一直'Installing react-native package from npm...' 没有反应了,没有报错等信息

相关截图...



一般情况下,你需要提供”配置运行环境”、”报错代码段”、”报错信息截图”、”个人猜测原因”等


这样最容易让别人了解问题出现的情况,也容易将别人带入到问题中来,产生共鸣.

四: 优选社区

找到一个关于自己技术领域的专属社区,是解决自己问题,同时也是提高自己,分享自己的最佳办法.

(打造自己的个人ID是程序员另外的生存之道,你可以不做,但是要培养最起码的意识,不要羡慕其他大神的魅力,你也可以,我会另起炉灶讨论这个话题)

现在技术社区很多,问答类的很多
同时也会分为广度和深度两种

广度是指基本上所有的技术类型问题都会覆盖,同时也有庞大的程序员群体,解决N多问题


具有广度的举两个例子:
国外:stackoverflow.com/
国内: segmentfault.com/

(广告时间: segmentfault.com/u/difn 关注我)

深度是指垂直类的技术论坛或者社区,提供给专职一个技术的人群,来解决问题,同样也会分享很多比较深度的编程文章


深度再举两个例子:

div.io/ div.io高质量前端资源汇聚
weappdev.com weappdev-小程序垂直开发论坛(这个广告很硬)

看自己的技术类型,然后选择不同的社区和渠道,可以加速你解决问题的速度。

当然,我同时建议你在解决掉一些问题后,能够review你的问题,并且形成有力的证明和记录,反馈给社区。这样,让更多的人能够遇到的时候找到解决方案

相信我,这对你以后是很重要的。

五: 精选群组

精选技术群!精选技术群!精选技术群!
重要的事情说三遍,要不然你会垮。

一般大神组织的技术群,里面藏龙卧虎,找到一个这样的群,你应该很庆幸。
你不仅可以在群里交到很多大神级的码友, 更重要的是”收集整套的斗图!!!

(如果有机会,一定要把大神变成你的好(基)友,他能帮你的不仅仅是技术, 你懂吗?)

技术群里面有水的时间,也有严肃的时刻。

当然,在群里得到正确答案的概率虽然比较大,但是也会受到语言的攻击,或者小看(大千世界无奇不有)。
选择恰当的时机抛出你的问题,但是一定要做到上面几点,再来发问。

同时技术群的主要作用就是来曝光你的问题,并提供给解答者一个渠道去解答你的问题。
在群里提问,你也需要注意和一对一问”专家”中的几点,可以继续往下看。

六 专家对话

如果你有一个技术领域的专家可以解决你的问题,那么请务必珍惜这个朋(基)友
(再次强调,这个人对你不仅仅是技术帮助,还有其他用处,待你发掘)

注意时间问题

当你们一对一的解决问题时候, 时间会变的很重要,因为每个人都很忙,除非是责任或者是付费用户,否则别人帮助你解决问题完全是热心帮助。(最好别在半夜微信轰炸!)

严禁低级错误

不要将基础的代码写错,然后来问问题。
问题一眼看去就是简单语法造成、数组泄漏等造成的,千万别问,因为这种问题在开始就不应该出去。你应该自己在找本书或者教程好好看看。

严禁拖泥带水

不要支支吾吾说不清楚问题,提问前请做好”组织问题”这一环节

在”组织问题”就出现了问题,那么很可能造成对方的误解,那么即使他想帮助你,也会有心无力,同时也会浪费对方的时间,这对于下次问问题埋了一个雷。

最好别胡乱问细节

不要在没有领会对方告知的你内容前胡乱发问。
如果对方回答了你的问题,比如你问”用什么框架来做数据可视化?”,对方回答”d3.js”。在你没有看过D3是什么之前,千万不要做过多傻瓜式的问答。同时你最好接受到对方的回答后,说一下”谢谢,我去了解下!”。对话结束后,你需要快速动手去实践,如果有问题,可以自己尝试解决或者再次发问。

及时反馈

“准备问题”环节中,你需要把所有该准备的材料准备齐全

不要出现,你询问对方后,对方给你回复,你可能半个小时或者很长时间不回复,这样对方不会有耐心去回复你的问题。
甚至把你直接剔除!

七: 等待回复

最好别在半夜微信轰炸!
然后,在对”专家”进行提问后,你需要做好等待或者没有回复的心理准备
(不要在一根绳子上吊死)
积极的去寻找其他的解决方案,如果解决了,回复一下”专家”,如果你能输出解决方案,那这样会获取对方的赞赏和注意。

八: 致谢

如果你在上面的步骤中,获取了技术群或者个人的帮助
一定记得致谢,不要不了了之是一个很不礼貌的做法。

如果可能,发一个答谢红包。
如果不可能,发一句谢谢。

个人认为你如果做好了以上几点,你基本上是一个合格而且尊重自己和别人的提问者。

九: 归纳

如果你提出的问题是有价值,而且社区中没人遇到过,也是比较隐藏的问题
你可以将问题总结,整理,然后分享到相关的社区等地方
一方面是自己的备忘,同时也是为其他人分享避坑,手留余香

到这一步,一个问题基本上已经达到了闭环和回归。

以上为个人总结,如有错误,欢迎留言指正。

20170330 脚注:没有角度,哪有深度!