★先来看几个例子

  俺一直在软件开发这个行当里混。所以先说说程序员的例子。

  干咱们这行的,常碰到软件开发的延期问题。每当项目进度delay,俺如果问相关的当事人为啥会delay,大都会得到如下的回答:

  1、搞需求的家伙太土鳖了,需求一直都没整明白,老是变来变去的!

  2、搞设计的家伙太傻B了,这种设计根本没法实现嘛!

  3、团队里的其他人太弱了,我被这帮菜鸟拖了后腿!

  4、某某工具/某某语言/某某数据库/某某操作系统太难用了,耽误了不少时间!

  5、测试那帮家伙太没用了,好几个Bug到快发布了才发现,我哪来得及改啊!

  6、......

  从上面这些抱怨,不知大伙儿是否看出一个共同点——都把问题的原因定位在(所依赖的)外部环境中。俺观察了好几年,很少听到哪个开发人员会主动承认delay是因为其自身的原因。

  除了开发延期,类似的例子还有好多,随手都能举出来。

  比如,每当我问某个开发人员,为什么这几年技术没长进,经常听到的回答是“太忙,没有时间学习”。

  比如,解放战争片的那句经典台词:“不是我们无能,实在是共军太狡猾”。

  比如,项羽临死前的那句:“此天之亡我,非战之罪也”。

  ★为啥人们总是归罪于外部因素?

  为啥在出问题时,人们总是怪罪外部环境因素捏?

  首先,和心理上的感受有关。

  如果归罪于自己,会产生一种负疚感,心情肯定会不太爽;而归罪于外部因素,则可以逃避这种负疚感,自我感觉会好一些。

  其次,也和很多人在幼年时期受到的教育有关。

  比如俺经常注意到这样一个场景。一个学步的小孩,如果不慎撞到了椅子并号啕大哭,他/她的父母经常会一边装作打着椅子,一边哄小孩:“宝宝不哭,是椅子不好,我打它”。如果在童年经常受到这种潜移默化的影响,长大之后,容易有“归罪于外”的倾向。

  那么,“归因于外”和“归因于内”,哪一种更好捏?要回答这个问题,先得来说一下心理学的“归因理论”。

  ★什么是归因理论?

  归因理论,洋文叫“Attribution Theory”。(维基百科的解释在这里 )通俗地说,是当人们碰到成功或失败的时候,总是会企图去寻求一个原因,以此来解释成功/失败的根源。

  通常,人们会找到如下一些原因:自己的能力、自己的努力程度、事情的难易程度、运气的好坏、其他人的帮助/妨碍、其它事情的帮助/妨碍 。