程序员人生 网站导航

程序员从技术到人生

栏目:互联网时间:2017-01-04 09:44:17

 我从CSDN上看到的一篇文章,感觉很不错,今天分享给大家 

 关于提问,你有没有碰到过这种情况,有人拿着一个问题跑来,大概交代了一下他想解决的场景,然后描述了他的思路,然后这中间碰到一个障碍,就问你怎么解决这个障碍。

  面对这类具体的障碍问题,我经常很难回答。因为即使是同一个场景,不同人会有不同的思路,而也许我的思路就不会有这样的障碍。比如:你想去一个十公里外的地方,对方也许会问你怎么套马鞍的问题,这时你就很困扰,因为你的思路是坐车或开车啊。这就是一个针对技术人员面对同一场景问题,所能选取的不同技术方案可能处在不同的时代背景下的类比。

  所以,关于怎么提问我觉着本身就是一个好问题。

  在国内的技术社区比如:CSDN 或 SegmentFault 都有技术问答社区。我跑上去浏览过几次,基本上每个问题的浏览量寥寥十几二十,回答更是少的可怜。上面的问题大部分都是类似下面两种模式:

  某某出错了,怎么办?如何针对某某封装一个库?某某可以是一种具体的技术或框架,这两种提问模式代表了两个方向,都让人无法回答。第一种太模糊而无法回答,而第二种则太庞大则不愿回答。

  如果你能绕过这两个提问的大坑,提出一个具体的问题,那么算是前进了一大步。但具体问题也有一个陷阱,就是前面套马鞍那个例子。也许有人回答了你怎么正确的套马鞍,但你依然可能走在落后的道路上。所以就具体问题提问,除了问及手段,还最好跟上你的目的和你就此目是怎样提出的手段,然后才走到了这一步的障碍,让你不得不在此提问。

  具体的问题是关于「术」的问题,一般都是解答题。表达清楚你的解答目的,也许你的困扰在高手那里根本就不存在。你只是走了一个弯路而已,这样不仅绕过了障碍,还获得了一条近路,是最有意义的提问。

  而另有一类具体问题,叫做答案藏在问题中,属于无法提问的问题。说得比较抽象,我举个例子:曾经碰到过一个线上问题,系统间隙性出现超时,只有重启能解决。而且出现的很无规律性,不和什么流量之类成正比,就是莫名其妙偶然出现,然后不能恢复,只好重启。曾经困扰了很久这个问题,但这类问题虽然很具体,但你只有一个现象,你甚至找不到一个好方式来描述这个问题。

  如果我就把上面这段描述的关键现象,偶现超时并结合使用的具体技术,如:JVM配置、开源框架配置和业务场景一起抛出来问人,你觉得有人能回答吗?这类就属于答案藏在问题中的问题,唯一的办法只能是找和你一起共事的同事从各人不同的思维角度去分析、抽丝剥茧。当你能找出提问的方式,基本答案也就出来了。

  当我定位到上面现象的根源是服务线程池的配置有误,结合在某些慢业务场景下会引发连锁超时。这时的问题是怎么配置服务线程池才最合理,这个问题本身就简单到完全无需再问了,自然就有了答案。

  《大教堂与集市》的作者 Eric Steven Raymond 曾就如何提技术问题写过一篇影响颇大的文章 How To Ask Questions The Smart Way,距今已经十多年了,修订了十多次(见下图的修订历史),翻译成了十多个国家的文字,我觉得值得好好读读。

  

  这篇与其说是文章,不如说是一个关于如何提技术问题的提问指南,而且把写文档当作写代码的模式,不断提交新的 Fix 和 Feature,并提供完整的修订历史,这就是我所推崇的方式和口味:“像写代码一样写文档(规范),像写文档一样写代码(可读)。”

  具体提问之术的指南,大家可以去仔细阅读 Eric 的文章,最后归纳下其关于提问之术的基本理念:

  草率的问题,只能得到一个草率的答案。你得到的答案的好坏取决于提问的方式和开发答案的难度。只索取而不愿思考和付出的提问者,要么什么也得不到,要么只会得到RTFM或STFW。术语解析:RTFM: Read The Fucking Manual STFW: Search The Fucking Web123123

关于「道」的问题基本都是选择题,比之于「术」更抽象的选择题。这类问题反而很少有人提,没人提多半是思考的人也少,随波逐流的多,但这类问题实际要更重要的多。


  李笑来老师最近在得到专栏的一篇文章《什么决定命运》提到:


选择决定命运,什么来决定选择?价值观。



价值观这个概念就比较抽象了,所以我们还是举一个比较具体的例子来说明。吴军博士也在他的得到专栏里写了好几篇关于巴菲特的投资理念的文章,其中有一条是:巴菲特不做空。长期以来巴菲特都秉持一个投资原则,永远不做空自己的国家。这就是在投资这件事上巴菲特的价值观所做出的选择。


  去年有一部很著名的讲 2008 年美国金融危机的电影《大空头》,里面布拉德·皮特饰演一位声望很高的退休银行家,两个初出茅庐的年轻投资者找上他帮忙参与到贷款违约保险市场中。当跟着布拉德·皮特卖空的两位年轻人高兴的手舞足蹈(他们马上就要赚一大笔钱)时,布拉德·皮特严肃的对他们说:


你们知道你们刚刚做了什么吗?我们在对赌美国经济。


  是的,我们完成了交易,我们做到了(年轻人高兴之情溢于言表)。

  这意味着什么,意味着什么,你们清楚吗?(连说两遍)

  假如我们是对的,人们就会失去房子,失去工作,失去退休金,失去抚恤金。

  别在我面前为此而跳舞。


这是另一个关于投资价值观的生动例子。


  大部分问题都是从一个选择题开始,才是解答题,而很多时候我们都忽略了选择题,因为围绕你的环境里通常有一个默认选择,这就是随波逐流。而默认选择一般都不是好选择。

  关于提问之道就是给自己的选择题,这类问题可以提出来,正如李笑来在文中所说:“听听大多数人的话,参考少数人的意见,最终自己做决定。”这类问题的回答者只有自己,也只能是自己。无法逃避,逃避是一种不选择,但实际也是一种选择。


在自己的成长路上,其实我碰到过好多问题,所有的问题都是我们的困惑。遗憾的一点是,我没能把这些问题记录下来。在工作的前五年我并没有开始写博客的习惯,所以也就没能记录下这些问题或困惑,以及我是如何跨越这些障碍的,如今再来回忆,只剩下些零星的片断。


  所以,这就是为什么一开始就要养成写作记录的习惯呢。有人说我没东西可写、没有积累也写不出什么来,而且文笔也不好。这是一个误区,至少你可以从记录问题和解决问题开始写起,不断去积累并留下一些东西。比如,对于程序员,你总会碰到各种问题,那么我就把这些问题按一种模式记录下来也可以,比如像下面这样:

  问题的上下文问题的具体描述问题的解决思考和思路问题的解决方案和具体技术或办法问题解决后留下的思考或其他延伸的疑问之前写过一篇文章《程序员,你为什么值这么多钱?》 提到了除了积累价值,也要传递价值。这篇文章发出去后,有人评论说:“就是除了会做,还要会吹嘛?”,很多程序员对此评论表示赞同。其实自吹自擂乃下策,更好的方式是:“Share what you learn(分享你所学到的)”。可以是一个问题、一个观点或一个认识,任何你学到的东西。


Give give give, and sometimes you will receive.


  持续给予,终有所获。


这就是我所认同的传递价值和提升价值的好方式。


  …

  所有的成长过程都是从提出一个问题开始,并找到了答案,最后融入自身的价值观,完成下一次更好的选择,周而复始。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐