提个问题:从技术到人生

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

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

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

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

  • 某某出错了,怎么办?
  • 如何针对某某封装一个库?

某某可以是一种具体的技术或框架,这两种提问模式代表了两个方向,都让人无法回答。第一种太模糊而无法回答,而第二种则太庞大则不愿回答。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

别在我面前为此而跳舞。

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

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

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

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

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

  • 问题的上下文
  • 问题的具体描述
  • 问题的解决思考和思路
  • 问题的解决方案和具体技术或办法
  • 问题解决后留下的思考或其他延伸的疑问

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

Give give give, and sometimes you will receive.

持续给予,终有所获。

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

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



写点文字,画点画儿,记录成长瞬间。

微信公众号「瞬息之间」,既然遇见,不如一起成长。

时间: 2024-10-29 19:12:20

提个问题:从技术到人生的相关文章

JAVA多线程提高一:传统线程技术&传统定时器Timer

前面我们已经对多线程的基础知识有了一定的了解,那么接下来我们将要对多线程进一步深入的学习:但在学习之前我们还是要对传统的技术进行一次回顾,本章我们回顾的则是:传统线程技术和传统的定时器实现. 一.传统线程技术 1.创建方式 1.继承thread类 Thread t = new Thread(){ @Override public void run() { } }; t.start(); 2.实现Runnable接口 Thread t1 = new Thread(new Runnable() {

哈伦IT学院—打开美妙技术人生

哈伦IT学院是哈伦教育集团旗下倾力打造的IT职业技能培训机构.学院依托于长安大学城浓厚的学习创新文化氛围,秉承技术驱动人生的教育信条,坚持"实用","高品","前沿"的教学模式,致力于培养"德业并进.学思并举.脑手并用"的IT精英人才. 学院拥有上海和西安两大教学基地及研发中心,凭借长三角领先世界的技术和前沿科技,集创新思路.方法为一体的教学系统.并独创哈伦梦工厂学员服务系统,为哈伦学员提供教育,实训,就业,创业,生活等一站式

提醒一下技术人,你是不是陷入局部最优了

首先看一张函数图像: 很明显,这个函数最小值点在E点,而A.C.G是函数的局部极小值点.我读书期间学的数学专业,研究的方向就是最优化算法,说的直白点,就是找函数的最小值点,如果得找到了E点就说明成功了,可是如果只找到了A.C.G中的一个就停滞,这时算法就陷入局部最优了,这个时候就需要修改算法,需要加入一些扰动或者其他策略,避免函数陷入局部最优解,所以最优化算法有一个非常重要的点就是要避免算法陷入局部最优. 局部最优解梯度为零,意味着没有变化,一直维持着某一种状态,一个人陷入局部最优解就意味着没有

程序员的人生职业规划

很多大公司的工作氛围是这样的:每天上班来打卡,然后坐在自己的工位上开始做事,很少和同事有交流,公司为了减少同事之间的交流甚至在工位之间用板子隔开,即使和同事交流也只谈工作的事情:公司没事的时候很闲,大公司养人,没事做时能让你闲半年, 在闲的时候和同事交流更少,每天只是上班打卡,然后虚度一天,下班打卡走人.这样的工作方式是以工资驱动的, 大公司认为,只要把工资给足了,就不会有人轻易的走,为了防止人走,他们还可能会押人半个月工资. 这是过去的工作方式,不是未来的工作方式, 这样的工作方式60.70后

ThinkSNS开源社交系统基础技术要点

ThinkSNS采PHP+MySQL技术平台,社交核心+多应用+多插件机制. 下面我们将为大家介绍开源社交系统ThinkSNS基础的技术要点: 开源社交系统ThinkSNS中,应用都有一个配置文件,目前应用目录是apps/<app name> 所以,配置文件就是:"apps/<app name>/manage.json",下面有演示代码:    我们可以看到这是比较新的应用配置,老的应用中只需要配置"resource"项即可,配置这项后,静态

百度和 Google 的搜索技术是一个量级吗?

著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Kenny Chao 链接:http://www.zhihu.com/question/22447908/answer/21435705 来源:知乎 很多答案是从使用上讲的,我加两个技术方面的. 搜索引擎需要对抓取到的结果进行管理.当索引结果越来越多时,保证存储和查询速度,保证数万台服务器内容一致的难度越来越高.Google于03至06年左右公布了三篇论文,描述了GFS.BigTable.MapReduce三种技术以解

论写技术博客与开源的关系

开源,代表着一种自信,好多公司不开源自己代码,除了涉密之外,很大程度上也有知道自己代码写的烂,不好意思开源的原因:同时开源也代表着一种无私,体现了对人类社会奉献的精神,比如Linus Benedict Torvalds开源了Linux: 而且我相信开源是技术发展的一种趋势,我坚信总会有一天,所有公司都将不再有涉密代码,所有代码全是开源,公司之间的竞争,将全部转移并体现在对资源的整合能力与对商品的营销上来. 其实在一定程度上来讲,写技术博客,也是一种开源:相信每一个写技术博客的同行,潜意识都有一种

产品经理如何与强势的技术沟通? 技术比较有资历,会以技术无法实现等方面的原因拒绝处理产品提出的需求。 你们是否遇到这样的技术? 产品懂技术的话,是不是会好一些,因为可以和技术说“行话”了,并且产品懂技术就不会被忽悠了。

PM在YY...作为强势的技术来回答一下吧.说明白WHY,HOW,WHAT就好了. 我想点两个赞,u can u up,no can no bb 什么的. 微软的win8之父年轻时候也是一个PM应该是微软最伟大的pm之一了吧.他有一天和程序员起了冲突,程序员说必须有两周才能干完,他说项目等不及了.就这样冲突一直没有一方让步,直至一周后,这个PM带着自己写的code给程序员看,他只用一周就可以这些功能.所以产品经理还是要懂一些技术才能和程序员更好交流 我觉得碰到强势的工程师是一件好事.同时,别人拒

IT软件人员的技术路线(写给技术迷茫中的你) - 项目管理系列文章

前面笔者曾经写过一篇关于IT从业者的职业道路文章(见笔者文:IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章).然后有读者提建议说写写技术方面的路线,所以就有了本文.本文从初学者到思想者的四步方面对IT从业者的技术路线做了阐述(见笔者文:IT从业者的学习规划 - 学习者系列文章开篇),从浅到深的对技术路线需要学习的内容做了叙述,后续会对学习者系列文章进行书写,本文就当做该系列文章的一个版图吧. 对于技术路线,笔者认为,在工作之余,就该自我主动的去学习技术和业务方面的知识.一方面是