在从上海到杭州的火车上,小杰提出了一个问题,就是在6 12个小时里面,分针多少次超过时针。
这个问题跟我在1998年底加入微软前的一道面试是一个风格的.这道题出现在我第4轮面试的时候:
1998位乒乓球运动员打比淘汰赛,问组织者需要组织多少场比赛。
当时刚准备用1+2+4+8…这个思路做下去,忽然觉得不对,后来半蒙半算得说了个"我觉得像是1997场"。虽然当时还不是很肯定,但就这样碰到了正确答案,过关了。
其实答案很简单,就是1998个人决出冠军,需要淘汰1997个选手,而一场淘汰赛淘汰一个选手,就需要1997场比赛。
这个问题的玄妙之处就在于,问题不是“如何安排这些场比赛”而是问需要“多少场比赛”,所有安排上的细节,都可以不考虑。
大象放进冰箱的问题
我个人最喜欢的一个笑话就是关于把大象放进冰箱的问题:
问:如何分三步把大象放进冰箱
这是个几乎无解的题,答案也非常无离头:
答:三步。第一步:打开冰箱;第二步:放进大象;第三步,关上冰箱
关键就在第二步:“放进大象”。这说得到简单,但怎么可以放进大象?回答没有给出,所以这道题一直就是当作一个笑话讲的。
不过,如果不把它当作笑话讲,而作为一种解决问题的方法,倒也是值得研究一下的。这个方法,就是宏观的思考问题的方法。
思考大的图景而忽略细节
有人说,“世界上很多人把自己的视野的边界,当作世界的边界;而又很少的人,能够看到其他人看不到的。” 描述这样的人,有一个我非常喜欢的词:“Visionary” – 高瞻远瞩。
阿波罗计划就是一个典型的这样的项目。当时肯尼迪同志对于人类登上月球这道题的解,就是一个类似于把大象放进冰箱的解法。他说:“在下个世纪里面,把一个人送上月球,并且安全的返回”(讲解远景的课程中的经典语录。)
这到简单,比把大象放进冰箱还省了一步。但问题就在于,具体怎么做呢?当时咨询委员会里面有很多人表示反对,比如化学家们就说,这怎么可能?我们连推动这么强大的火箭的燃料都没有!肯尼迪说:“那么你是不是说,只要有了合适的燃料,我们就可以做到?那么去找燃料吧。”之后的几年里,化学形成了一个新的分支,这个分支就是为了研究合适的火箭的燃料,并且在四年以后找到了这样的燃料。就像燃料一样,一个又一个技术问题被克服,最终完成了一个不可能完成的任务(这个故事来源于:《Seven Secrets of Inspired Leaders: How to achieve the extraordinary…by the leaders who have been there and done it》这本书)
我们的思考方式
我们在思考的时候,尤其在思考复杂的事物,或者涉及众多的人的协调的时候,非常容易掉到细节的泥潭里面,找不到出路。有些时候,看的大一点,先假设一些很难的问题总会解决,还容易得到结果一些。
我个人的心得是,在杠杆开始工作的前5年里面,更多的需要解决细节问题,自己的角色就是在解决实际的问题,比如说在做一个产品,负责一个项目,至于这个产品项目本身为什么要做,尤其是现在的做法之外还有没有其他替代的方案,都不作考虑。慢慢的当很多的细节问题都有非常好的团队成员来解决的时候,如果自己还在解决细节问题,就失去了大的方向,变成“把事作对”,而不是“做正确的事”。
所以最近经常提醒自己,适当的多做些“大象放进冰箱”的决定。
后注:计算机里的函数就是这种思维的产物
学过编程的,就不断地用这种方式解决问题。我记得在火车上,晓娣提到,创新必须有一个限制条件。说到这个话题,我就随口问了个问题:如何用7行代码写一个BBS出来(当时正值客齐集社区上线之前)。这个限制够死的,我出题的时候自己都没有想好答案。
后来,想到了大象的故事,答案就有了,其实不用7行代码,两行就够了。
BBS kijiji = new BBS();
kijiji.Run();
至于BBS这个类怎么写?那是以后的事情,而且肯定写得出来,Ruby on Rails有很多时候就是这种想法,OO也是这种想法,而递归算法不就是这种想法的终极体现吗?
kijiji.run();
;)
inspired
自顶向下,逐步细化,逐步模块化。
hehe,问题应该是24小时内,时、分、秒钟会重合几次。不过,问题本身永远都不是最重要的,重要的是思维方式. :-)
不介意偶转到公司内部论坛上吧。
的 地 得
客齐集的YY已经上线了, 还不错的, 大家可以去玩一下:
http://yy.kijiji.cn/
问题的提出,总需要从宏观角度出发,问题的解决一定要从微观角度思考。
做正确的事,需要的是宏观思维
把事作对,需要的是微观思维
蠻喜歡看您寫的東西的,請問能不能做一個鏈接呢?
12小时内,时针和分针一共重合11次,并非等分,因此6个小时内分针超过时针的答案视这6个小时的位置而定吧?
建硕,我有次也听朋友说起过大象进冰箱的故事,跟着的还有长颈鹿等等,当成脑筋急转弯的题目了,从你的文章里读下来,却又有另外的体会。受益啊!
JS,我觉得你的中文blog写得比英文的有意思,不是说你英文的写得不好,只是觉得很多东西用中文讨论,很能切中要点,关于big picture 还是 detail,这好像也是mbti 的一种
Mingyu, MBTI中间,我是ENFP.
不太象呀,我觉得你应该是entp来的,这么说你一定是一个好老板,以后加入你的公司吧,
要“做正确的事”同时也要看看并支持“把事做对”,这样才能确保“做正确的事”。
其实我们3岁以前考虑问题都很宏观的来。
这是 无聊的争论
“这种思维”不就是 divide and conquer 吗?
看了你的文章,我也猛然意识到自己在do things correctly上花了大量时间,而在do things that are correct 方面投入远远不够!