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

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

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

基本口诀

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

修炼步骤

一: 翻文档

如果你遇到属于一个开源库或者框架的问题(如vue,react,wxparse)你需要先去github的官方仓库,看一下是不是有相关的文档如果文档中不存在这个问题的说明,那么你一定要学会issue查询,基本上很多问题你应该可以在仓库内解决的。

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

二: 善用搜索

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

如果想要找到一个问题的精确答案,那么”关键词”是很重要的个人理解,”关键词”是建立在你对基础知识、框架结构、问题来源的理解的综合体.
“GOOGLE”大法好,”Baidu”(有人要打我)也不错!

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

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

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

程序员优雅提问宝典《九步真经》 | 软技能_第1张图片
这样是比较好的描述,资料也全

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 http://stackoverflow.com/
国内 segmentfault https://segmentfault.com/

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

名称 地址
div.io高质量前端资源汇聚 http://div.io/
weappdev 小码消息 https://weappdev.com

看自己的技术类型,然后选择不同的社区和渠道,可以加速你解决问题的速度。
当然,我同时建议你在解决掉一些问题后,能够review你的问题,并且形成有力的证明和记录,反馈给社区。
这样,让更多的人能够遇到的时候找到解决方案相信我,这对你以后是很重要的。

五: 精选群组

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

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

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

技术群里面有水的时间,也有严肃的时刻。
当然,在群里得到正确答案的概率虽然比较大,但是也会受到语言的攻击,或者小看(大千世界无奇不有)。

选择恰当的时机抛出你的问题,但是一定要做到上面几点,再来发问。
同时技术群的主要作用就是来曝光你的问题,并提供给解答者一个渠道去解答你的问题。
在群里提问,你也需要注意和一对一问”专家”中的几点,可以继续往下看。

六 专家对话

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

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

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

  • 严禁拖泥带水
    不要支支吾吾说不清楚问题,提问前请做好”组织问题”这一环节
    在”组织问题”就出现了问题,那么很可能造成对方的误解,那么即使他想帮助你,也会有心无力,同时也会浪费对方的时间,这对于下次问问题埋了一个雷。

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

  • 及时反馈
    “准备问题”环节中,你需要把所有该准备的材料准备齐全
    不要出现,你询问对方后,对方给你回复,你可能半个小时或者很长时间不回复,这样对方不会有耐心去回复你的问题。甚至把你直接剔除!

七: 等待回复

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

八: 致谢

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

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

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

九: 归纳

如果你提出的问题是有价值,而且社区中没人遇到过,也是比较隐藏的问题你可以将问题总结,整理,然后分享到相关的社区等地方一方面是自己的备忘,同时也是为其他人分享避坑,手留余香到这一步,一个问题基本上已经达到了闭环和回归。

以上为个人总结,如有错误,欢迎留言指正。
20170330 脚注:没有角度,哪有深度!

作者Di 订阅号:小码消息

你可能感兴趣的:(程序员优雅提问宝典《九步真经》 | 软技能)