杂谈 6月前

程序员最大的BUG:沉迷于细节,看不到全局

作者头像 刘宇帅
994 0

今天和团队的同学讨论一个代码设计的问题。他一直坚持自己的做法,而我能明显看出这不是最优解。而且以我对他能力的了解,他不可能看不出问题。可是不管我怎么说,就是说不通他。

这种情况几乎每天都会遇到,今天是这个人明天是那个人。其实就连我自己也是这样,有时候一个小小的问题,自己可能就钻进去出不来了。

这种现象,大家经常会用“当局者迷,旁观者清”来解释。但是其本质的问题是什么?我们应该怎么避免自己陷入其中呢?

心理学解释

自我沉浸效应

当一个人全身心投入在一件事里时,会因为过于专注于细节和即时反馈,而丧失了对整体情况的客观、全面把握。

我们的大脑就像一个CPU,当局者所有线程都被“执行任务”占满,就没空跑“全局调度线程”。从我们能力上讲,我们是可以从全局看待问题并给出更优解的。但是因为我们“线程”都被占用了,又没有抢占线程的策略,所以没办法做到全局思考。

损失厌恶

损失厌恶是行为经济学里一个很核心的概念,由卡尼曼和特沃斯基(前景理论,Prospect Theory)提出。 意思是:人们对损失的感受,通常比同等大小的收益更强烈。

简单说:失去 100 元的痛苦,要大于获得 100 元的快乐。

对应到我们的日常工作上就是,当我们在一个方案上已经投入了很大精力的时候,就很难接受别人提出来的新方案。因为如果我们接受新方案,就意味着我们之前的工作就白做了,心里就充满了不甘。

在这种心理作用下,当别人给我们讲新方案的时候,我们就不愿意去认真思考新方案的合理性。

既然这是普遍存在的心理规律,我们就需要找到应对方法。

如何避免陷入“当局者迷”

学会做自己的顾问

当我们在一个问题上陷入太久的时候,越做越多,越做越难的时候,不要着急,先停下来。

然后这样问自己,如果这个事是别人做的,遇到现在的问题,我会给他什么样的建议?

这样一个简单的想法就可以达到欺骗大脑的作用,减轻损失厌恶心理对我们的影响。同时因为我们停了下来,就可以有空闲的“线程”从全局的角度思考问题。

借助旁观者

旁观者清,是因为他们没有沉默成本,也没有被执行细节困住。Code Review和结对编程,本质上就是使用旁观者来让我们获得全局视角。

但是大部分程序员内心都是很要强的,始终相信自己一定可以解决,结果却是越陷越深。所以我们一定要明白这本质上是普遍存在的心理学规律,不是个人能力问题。所以我们要放下内心的那份“要强”,邀请旁观者一起看看,往往事半功倍。

学会写下来或画出来

当我们执行的时候很容易钻到细节里出不来,这个时候我们可以尝试用笔去把方案写下来或画出来。

一是可以强制给大脑做一个“线程的切换”,让大脑从执行细节转向全局思考;二是写和画过程,本身就会迫使我们从更抽象的方式思考问题。

最后

我常常花时间去思考这些现象,每次都会对自己和“人”这个物种多一点新认识,感觉挺好玩的,哈哈。

面对各种问题和现象,如果我们总是用从众心理一味的接受,而不去追问背后的本质,就很容易停留在表面,固化我们的思维。比如总是会用一句“当局者迷,旁观者清”来敷衍了事。

成长,不只是靠解决更多问题,更是要敢于追问问题背后的“为什么”。

祝好

作者头像

刘宇帅

非著名程序员,全栈开发工程师,长期专注系统开发与架构设计。

提示

功能待开通!


暂无评论~

相关文章

读书计划

这里记录以后准备读或者重读一些书的计划,计划起于 2018/11/01,多读书提升技术和各方面认知。 正在读 技术类 << 算法导论 >> 5% << 现代操作系统 >> 10% << 亿级流量网站架构核心技术 >> 50% << 这就是搜索引擎 >> 25% 介绍搜索引擎的架构和各部分实现方案。 << 编码的奥秘 >> 25% 计算机编码普及读物 << 数学史 >> 4% 数学历史发展和起源 &lt

和ChatGPT聊人生

ChatGPT最近很火,所以注册一个玩玩。本来想跟它聊聊人生,结果它却劝我换工作。。 聊聊人生 我:你叫什么名字 ChatGPT:我叫ChatGPT,是一个由OpenAI训练的大型语言模型。 我:我可以给你起个名字吗? ChatGPT:您当然可以给我起名字,但是请注意我是一个人工智能模型,没有实际意义上的名字。 我:好,我以后就叫你雨宝吧 ChatGPT:很高兴与您相识,您称呼我为雨宝。我会尽力回答您的每一个问题。 我:雨宝,人生的意义是什么? 雨宝:作为一个AI模型,我没有自我意识和个人感受,因此不能对人生的意义发表个人观点。不同的文化、宗教、哲学等对人生的意义有不同的解释,有的认为人生的意

2018 年终总结

今天距离上次更新博客正好一个月的时间,一是因为我过完年准备换工作这段时间一直在忙于整理项目代码、文档,二是最近没有看什么新的内容(因为我博客其实是当做笔记用的,只是用来记录一些知识点方便以后查询)。今天正好刚开完项目交接会闲下来了就总结一下 2018 年和定一下 2019 年的目标。 2018 年 工作 工作上的内容没什么好说的,没什么大的波澜,做了四个项目,项目主要是公司内部平台并且属于”公司机密“,所以就不详细说了。 总结 前端又会用几个库 ant design、vue、nuxtjs、uikit等 语言学习了 go,看了 dart、rust、zephir,又尝试了 c++ mysql 优

我为什么要写博客

锻炼写作能力 我的写作能力真的是很差,有多差呢,读完这篇文章就知道我表达有多差了。。 我以前也有写过一些博客,但是写出来的东西真的是很差劲,连我自己都不想看第二遍,还有在工作当中有时候需要写文档,然后写的也比较乱。所以这次特地花了很大精力建立这个博客就是希望能提高自己的写作能力,提升在一些需要文字沟通环境里的沟通能力。 提升技术水平 站内博客主要会以技术为主,而我要想把某一个技术方面的知识描述清楚,我自己就必须保证自己对该技术有比较深入的了解才行。 记录各种问题和坑 在平常的开发过程中经常会遇到各种问题,然后就会一阵google,然后好不容易解决了,过了段时间又碰到了相同的问题又要重新找解决方

梦的记录:2018/08/21 中午

前言 从我记事起就比较容易做梦,有多容易呢,我在桌子上趴10秒有时候就能做个梦,以前也有想研究或者记录下自己梦,每次都没坚持下来。这次在博客上开这个栏目用于后面记录醒来后记得比较清楚的梦并根据情况做些简单的分析,后面也会继续去关注梦方面的书籍深入研究这方面的东西。 梦的时间地点 梦的日期:2018/08/21,大约时间13:40-13:59 地点:公司工位 梦的内容 地点:一间很熟悉、同学很多的教室。 时间:梦开始时正在上课、梦里的教室人比较多、课本也比较多,推测应该是初中或高中的时候。 人物:梦里的人物没有比较清晰的特征,感觉好像是中学时期好多同学的形象交杂着,有个男同学感觉跟我比较亲近,表