十几年前的小品《卖拐》中,赵本山问范伟:1+1在什么情况下等于3?大家都知道答案了:在算错的情况下等于3。
我们都认为这只是一个脑筋急转弯而已,但我说“1+1”是蕴含着大智慧的。
如果你看到“1+1”,你会想到什么?你会毫不犹豫地回答:等于2。但如果我告诉你,我们现在并不是使用十进制算法,而是在使用电脑中常用的二进制算法时,那结果是10,而不是2。这道题目,看似连幼儿园小朋友都会回答,现在却难住了一些高学历的人吧。
现在,我们再进一步,这下将要难住博士学位的人啦!
如果我告诉你,“1+1”是三个汉字,你会不会很惊讶?数字“1”实际上和汉字笔画中的“竖”在字形上是完全一样的,但这一“竖”本身就是一个汉字。简化字里当然没有这个字,但小篆和以前的古文字中却包含这个字,这个字念“滚”。
因此我们需要从二进制还是十进制的纠结中跳出来,也需要从汉字还是数学题的迷惑中走出来,才能给出正确的答案。但我们不能仅限于惊叹,我们还要弄明白这到底意味着什么?它能给我们的工作和生活带来什么启示?
【思维维度】
我认为,这实际上是关于思维维度的问题。
电影《盗梦空间》大概很多人都看过,电影里的三层梦境其实就是一个思维维度的问题。有了《盗梦空间》的三层梦境基础,我们再回过头来看“1+1”的场景就会容易一些。
当我们看到“1+1”并把它和2画等号时,我们实际上已经跳过了两个思维的维度,而直接到达了最终的第三个思维维度。第一个思维维度是:这是一道数学题还是汉字,或者是其他的什么。我们并没有经过第一维度的判断或询问出题人,就自动认为这就是一道数学题,于是我们进入第二个维度:这是十进制还是二进制算法。于是我们又自动确定了这是十进制算法,直接进入了第三个维度:计算1+1。于是错误在某种情况下就发生了。
这种错误在绝大多数情况下是不会发生的,但一旦你在特定的领域工作,或者遇到了特定的情况,这个直接跳过思维维度的做法,就可能犯下方向性错误,而践行了古人“南辕北辙”这个成语。
【软件领域的案例】
下面这个真实的案例,说明了直接跳过高层的思维维度是多么可怕!
在软件研发领域中,用户发现了一个缺陷(叫Defect或Bug),程序员就需要修复这个缺陷。在修复的过程中,程序员找到了导致缺陷发生的那段代码,发现有两个条件判断都有可能导致这个缺陷发生,经过分析之后,确认修改其中一个条件判断就可以了,于是一切看起来很成功。
但这个缺陷发生的根源不在代码那一层,而在于代码之上数学模型!这个数学模型是驱动代码逻辑的,所以代码是无辜的。具体情况是这样的:这段程序代码是处理一个数学模型的,而这个数学模型会在合适的条件下,将某个SQL语句转化为一种简化的SQL语句。问题就出在“合适的条件”那里!
代码忠实地执行了那个数学模型,但那个数学模型本身却是错的!所以再怎么修改代码层的东西,都不会起作用,相反,可能会引起副作用。
最终程序员通过修复数学模型本身的错误,而修复了这个缺陷。这个修复方案,和之前的代码层错误修复方案,差别只在于一行代码,但这个方案在解决问题的同时避免了更大错误的发生。
【结束语】
其实,工作中还有很多更直观的例子,也属于本文描述的思维维度问题。例如,你的上级领导关注的是项目的时间,而你却只是想把手头的工作做到完美,想在崇尚速度的公司里践行“工匠精神”。结果很显然是:你越努力,越得不到重用,因为你的思维维度和公司的思维维度是不同的。
最后再说说我们能做点什么吧。确实,想在任何事情上都有思维维度的思考,是有相当难度的,因为我们无法确定:我们的领域或当下情况是否应该做思维维度的思考。我的建议是:一方面,我们进入一个新的工作领域时,应该有意识地思考一下;另一方面,我们也可以在错误发生之后,进行反思。
----------结束----------
作于2017-3-12。
网友评论
资深程序员来简书是书写人生还是?
哈哈,突然之间,不知道如何回你呢