Friday, 27 July 2018

鸟笼效应

“鸟笼效应”是一个很有意思的心理学现象:人们会在偶然获得一件原本不需要的物品的基础上,自觉不自觉地继续添加更多自己不需要的东西鸟笼效应也是人类难以摆脱的十大心理之一。

Source:Google

鸟笼效应的来源

鸟笼效应的发现者是近代杰出的心理学家詹姆斯。
1907年,詹姆斯从哈佛大学退休,同时退休的还有他的好友物理学家卡尔森。一天,他们两个人打赌。詹姆斯说:“我有个办法,一定会让你不久就养上一只鸟的。”听完詹姆斯的话,卡尔森根本就不相信,他说:“我不会养鸟的,因为我从来就没有想过要养一只鸟。”
没过几天,卡尔森过生日,詹姆斯送上了一份礼物——一只精致漂亮的鸟笼。 卡尔森笑着说:“即使你给我鸟笼,我还是不会养鸟,我只当它是一件漂亮的工艺品。 你和我打赌,你会输的。”
可是,从此以后,卡尔森家里只要来客人,看见书桌旁那只空荡荡的鸟笼,大部分的客人就会问卡尔森:“你养的鸟去哪里了,是飞走了吗? ”卡尔森只好一次次地向客人解释:“不是这样的,我从来就没有养过鸟。鸟笼是朋友送的。”然而,每当卡尔森这样回答的时候,就会换来客人困惑而有些不信任的目光。无奈之下,卡尔森只好买了一只鸟。
这就是詹姆斯的鸟笼逻辑。这种被别人用习惯思维的逻辑推理误解,并且最终屈服于强大的惯性思维的事情,生活中并不少见。实际上,在我们的身边,包括我们自己,很多时候不是先在自己的心里挂上一只笼子,然后再不由自主地朝其中填满一些什么东西吗?
商城打折促销,衬衣买一送一,尽管送的那件衬衣并不是你喜欢的款式,但是本着有便宜不占白不占的心理,你还是买了回去。回家以后,发现自己没有其他的衣服和配件来配这件衬衣。很多人都不会选择把这件衬衣扔掉,而是又去买裤子(裙子)、鞋子、包包来配这件衬衣。这样,无形之中,不仅增加了自己的消费,还有一种花了一大堆钱买了自己并不喜欢的东西的感觉,生活品质大大降低。
再比如,朋友送了你一条反应速度、灵敏度都极好的键盘,久而久之,你就会发现自己的鼠标配不上这个键盘,然后去换一个更好的鼠标,再过不久,你还会发现自己的电脑也配不上这个键盘……

鸟笼效应的启示

启示一:
看到鸟笼人们自然就会想到鸟,这就是人们的惯性思维。惯性思维是人们遵循之前固有的思路去思考问题,就像物体的运动产生的惯性。惯性思维会使人们的思想固定封闭而形成盲点,缺乏突破和创新。有时,人们需要跳出限定自己的固有思维,才能使遇到的问题迎刃而解。
启示二:
身边那些已经被植入“鸟笼效应”的人,也会给你带来极大的心理暗示和压力。鸟笼效应最可怕的地方在于,即使你对事物的联系有很清醒的认识,没有被植入鸟笼逻辑,但是如果身边大多数人都有这样的逻辑,你就会成为那个异类,重重不理解的眼光就会给你带来极大的心理压力。
由于厌烦被人询问和被怀疑才买了鸟养着,人们通常太在意他人的眼光而形成心理上的压力,生活中人们太在意他人对自己的评论和看法,并且更容易记住一些负面的东西,造成自己心灵受到打击。可是现实是你的形象在不同人的眼里都是不同的,所以不要太在意,应该减轻外界对自己心理上造成的压力。
启示三:
什么事情都不是绝对的,你认为合理的东西不一定是对的,也许它还有另一面的解释。看待事情时需要考虑它的两面性或者多面性,多思考,通过不同角度,会获得不同的信息。
德国一个造纸工人,在生产一批纸时不小心弄错了配方,结果,生产出了大量不能书写的废纸。他被工厂解雇了。正当他心灰意冷时,他的一位朋友安慰他说,事已至此,你只有看看能否从错误中找出有用的东西。这句话启发了他,他很快就发现这批废纸的吸水性相当好,可以用来吸干家庭器具上的水。他把纸切成小块,取名“吸水纸”,在市场上出售,结果相当抢手。因为这个错误的配方只有他一个人知道,他就去申请了专利,成为“吸水纸”的发明者。

预防鸟笼效应的不良影响

方法一:时常检视自己潜意识中的“鸟笼”:
  • 记下那些我们认为理所应当、本该如此的想法,然后回想这些想法是什么时候、怎样产生的;
  • 理智思考造成自己有这种思维的事物,是有效的吗?值得信赖吗?有事实依据吗?
方法二:明确他人“鸟笼效应”背后的内心需求,分清人际界限
当你破除了自己身上的鸟笼效应,接下来要做的就是避免别人的影响。人是具有社会性的生物,每个人与周围的人都有着复杂的联系,很多时候因为周围的人被植入了同一个鸟笼,而自己没有被植入这种鸟笼,自己就会显得是异类,有很多人往往为了满足别人心中的鸟笼而选择自己并不喜欢的生活方式。

合理利用鸟笼效应

任何心理效应都有两面性,只要合理运用,都可以给我们的生活带来帮助。
鸟笼效应的重要特点就是它产生的心理暗示,可以影响我们的行为。利用好这一点,可以帮助自己养成良好的生活好习惯。
人人都知道读书很重要,可以提升生活品质,但是要养成读书的习惯并不是很容易,这个时候我们就可以给自己设置一个“鸟笼”:
你可能很喜欢读书,因为白天工作忙绿,所以买了很多睡前读物放在枕边,想要养成每天睡前读书的习惯。可后来发现,买回来的书越来越多,但是读完的很少,那些书堆放在枕边,越堆越高,而你也越来越少去翻开阅读... ...
其实,不妨试试把床头的书敞开。通过鸟笼效应的作用,敞开的书会比合上的书更让人联想到读书。刚开始你可能只是看到书翻开着,就拿起来随便看看,后来一天过一天,你就会发现自己越来越习惯这个动作,慢慢看的页数也就多了,最终就能够养成按照计划阅读的好习惯。
不要让“鸟笼”束缚你的生活。减少不必要的,增加有效的,这才是鸟笼效应的真正启迪所在
Source:一醉太平|简书,心理学充电时间,搜狐心理

Thursday, 5 July 2018

self study

介绍
我大学是学医的,学了3年。经过漫长而复杂的一系列事件和领悟之后,我萌生了对计算机科学以及随后的软件工程的兴趣。于是,我决定换学院改学软件工程本科课程。
不过那课程我只学了2个月不到。
这不是因为我不想承担义务。相反,我有对目标痴迷到一门心思的本事。因为痴迷,我很容易就会意外地深入学习特定主题时忘记了社交和日常责任等事情。
对于一些人来说,痴迷学习听起来也许跟通常被归纳为“大学辍学生”(我就是)的特征不相符。
但其实这是完全说得通的。我上的课提供给我的材料既不够又不合适。而且学习的进度就像蜗牛一样,我的很多问题都没有回答(哪怕我亲自去找了教授)。我已经厌烦了拷贝板书出来的程序。我已经厌倦了只听见“面向对象范式”而不见这个“神秘”的面向对象的影子。我对只是肤浅地学习已经烦透了。
我记得有一节课后我去图书馆拿起了一本Java书。我整个下午和晚上都在看和做实验。那一个晚上我学到的东西比我在课堂上整整1个半月学到的东西都要多。那么我花钱买到的是什么?不就是个纯正的学位吗?我再也无法忍受自己上这样的课因为我在课堂上花费的时间太多而在学习上花费的时间太少了。
不过我并不认为这是课程的错,这其实是以课堂为基础的一般教育的过错。出于多个原因,课堂教育似乎没有针对能力而优化。不过除了所有那些对教学方式的不安以外,对我而言课堂教育还有一个更深层次的问题:这实在是太无聊了。有时候上课节奏太快太肤浅,有时候又出奇的慢。哪怕课程内容很深,但训练却不是。
总的说来,我发现课堂教育不足以推动学生走到那最后一步:从知识转化为可行动的理解。所谓的“可行动的理解”是指用潜在的新颖方式将知识应用到新的上下文环境的能力。如果不能认识概念在上下文中的存在的话你是不是真的理解这一概念呢?这就好比因为你能对一个函数求导(这仅仅是机械操作)但没认识到适用在什么地方,它为什么重要或者实际意义是什么就宣称你知道那导数一样。计算机就能替我们执行机械擦做。但计算器并不能看清一个问题并且利用直觉理解来推断出正确的办法。它们只能执行被命令去做的操作。难道我们不应该比一部不智能的计算器对导数的“理解”更深入地理解概念吗?我认为应该。但课堂教育似乎不同意这一点。
当我在解决问题、学习新东西,或者形成概念之间的连接时,我喜欢踱来踱去,草草记点笔记,甚至大声地向自己解释想法。我喜欢从许多不同的角度检查我的心智模式,直到找到需要修补的漏洞。此外,一旦旧主题逐渐失势我喜欢不断修正,反过来从新的角度审视这些东西,从而有机会建立我过去错失的连接,重新测试我的理解。
于是我辍学,开启了一段非传统的教育之旅。一开始,我完全按照自主的学习方式。在这一初步阶段,我把绝大部分的精力都放在了想出可靠的学习计划(不是那么简单的)这一项目上面。我知道我偶需要根据第一原则去学习,但是梳理那堆数不胜数的资源需要消耗的时间和精力太多了,所以我的学习进度变得很慢。我知道自己有动力,也能够吸收信息并且综合利用,并且严格地拷问自己的心智模式——这一切都是高效自学者的特质。我不那么熟练的是对自己制订的学习路径的坚持,因为我总认为这样是不够的:我不是这个领域的专家,所以又又什么资格替自己设计一门有效的课程呢?我不是软件工程师应该知道什么方面权威的信息来源。我需要一些指导来起步……最好是来自专家的指导。
学习资源比较
我开始去寻找非传统的外部教育资源来提供更多的指导。
MOOC
我想到的第一个非传统资源是MOOC生态体系。在筛选了无数选项之后,我意识到MOOC有一个问题跟我之前遇到过的类似:那就是几乎每一个专题都有MOOC。此外,它们在质量、深度、教学方法以及时间限制方面各不相同,意味着如果我要把MOOC作为主要学习来源的话我有很多其他因素要过滤。
就像以往一样,我需要筛选掉其中的很多,还要确定报读哪一门课,以及最合理的上课顺序,决定哪些主题是基础,哪些属于“可选”。MOOC不是一个理想的来源于是我当时放弃了,开始另想办法。
训练营
我喜欢训练营的想法,因为高强度学习对我很有吸引力。我不怕压力,并且喜欢挑战认知极限……以及成功突破。我在考察无数的训练营的时候,注意到它们都存在两个致命缺陷:
  1. 时间约束似乎太极端因此排除了迭代测试和评估一个人对主题的理解的能力。在这里是没有机会进行循环学习的。
  2. 主题传授的深度不够。即便是最好的训练营对于学生的基础知识准备得也很不充分。
换句话说,我把训练营看作是产生用户而不是开发者的一种方式。什么的用户?框架和高级开发工具的用户。我不想被局限在特定的工具集或者一些基于软件潮流的狭隘的开发原则里面,而没有根植于基础/根本性的知识和培训。当然,这条规则总会有例外,我也听说过一些相当强的人是从训练营出来的(我就见过几个)。
训练营似乎对那些已经具备技术背景只是想跟进特定专业的人更加成功,比如web app开发或者移动开发。
自学课程
我还发现了好几个由自学者创建也是面向自学者的课程。在Reddit和Medium上会时不时冒出不同的“自行设计的<计算机科学/软件工程/数据科学/AI>硕士学位”文章和要点。我看了很多。我还看了teachyourselfcs上面的课程,内容还是挺可靠的。
这些课程的主要问题不是品质(其实上面还是有一些比较全面、合理的课程的),但是我意识到,纯粹的自学在一个人有了坚固的基础知识和培训,变成内行之后才会更高效。这是因为自学缺乏对新手很关键的一个组件:反馈。
(来自那些有资格提供的人的)反馈是最强大的自我改进形式(假设你遵循的话)。特定领域的新手并不知道如何识别合格的工作或者信息。他们不知道在自己的实践中如何识别反模式。他们不知道如何解释项目(尤其是较大型的)中的微妙之处,也不知道如何让自己对特定标准负责,因为他们不知道那些标准是什么(或者哪怕理论上知道那些标准是什么,也不知道如何在实践中识别)。
Launch School
有一次我无意中遇到一个谜一样的东西——Launch School。我记得我浏览了他们的“Is this for me?(这是为我准备的吗?)”页面,这个是在解释Launch School是什么值钱专门解释Launch School不是什么的。基本上,这个地方不是给仍然在研究自己的选项的人准备的,也不是给那些想迅速找到工作的人准备的。实际上,LS对自己的“慢学习路径”感到自豪。
他们重视深度、掌握、循环学习以及坚持不懈。他们是“方便快捷”这种学习方法的反面。
他们的教学方法正是我想找的。他们称之为“立足于掌握的学习”,这是一种通过能力而不是时间来衡量进展的学习模式。在你证明自己已经掌握了目前课程材料之前是不能转到下一门课程的。
他们通过评估、访谈以及项目的组合来衡量是否掌握。通常的过程是3到4个小时的评估,里面会有各种问题让接受测试者用准确的语言来解释概念。他们的学习指导还解释“精度”是什么意思,如果有任何语言表达含糊或者过于复杂的话,给评估打分的讲师或者TA会让学生改正答案。学生绝对没有办法糊弄自己对材料的理解,因为学生的水平需要能解释概念以防止错过任何重要细节或者回答不清楚。
如果学生得分不够好,会被要求回去改正答案。如果得分低于B,他们会得到“还不行”的评价,然后至少一周的深入学习后必须重新进行评估。另一个“还不行”意味着再进行2周的学习,以此类推。
书面评价只是对是否掌握进行评估的第一部分。评估往往还会有项目及/或面试这些要素。在项目期间,学生会被赋予一套技术规范以及时间限制(通常是24到48小时)来开发出满足这些规范的应用。代码质量、结构以设计决策都会接受严格审查,并且由一位导师进打分,打分者会给学生非常充分的反馈。在面试期间,学生要在面试官面前解决问题,类似于求职面试时进行的编码挑战。面试还要求学生展示自己在开发应用是做出的设计决策。Launch School严格的评估从多方面测试了学生的沟通技能、计划水平、精确度以及代码质量等。
有导师和TA几乎可以全天候地回答问题。他们还对课程期间大量的编程作业进行无数的代码评审(记住:反馈对掌握非常关键)。
通过核心课程耗掉了我还几千个小时的学习。然后我转到了他们可选的顶点课程(capstone program),继续学习优化、算法分析和设计,系统设计。我还开发了一个项目来展示自己的思考能力、研究水平,管理复杂性的能力,以及设计深度。
顶点课程总共又花掉了我1000小时。我在纽约的好几场活动中展示了我的作品,这些作品引起了其他工程师足够的兴趣,他们都想引荐我,以至于我必须拒绝掉其中一些面试机会。在发出第一份求职书之后,我拿到了offer、面试机会,以及在2周内选择各种地点的自由。
我喜欢自己在LS的经历,因为我终于能够发挥自己爱钻研的本事了。我可以用苏格拉底的方式对一个主题刨根问底到死。
补充学习
我也利用了其他的来源学习,作为对LS课程的补充。数学这门课我几乎都没有接受过正轨培训,但是又非常重视这门课,因为它非常重要,而且还能带来智力上的快乐。这是我利用的主要资源:
  1. How to Prove It(如何证明
  2. Discrete Math for Computer Science(计算机科学之离散数学)
  3. Linear Algebra(线性代数)
  4. 群论(同一位作者还写了一本抽象集合的书页很棒但不是必须看的)
  5. 《微积分第一卷》
我还自学了一点架构与设计,利用的是下面一些主要资源:
  1. Ruby实用面向对象设计》(适用一般的面向对象语言)
  2. Web应用架构
  3. 设计数据密集型应用》(此书尤其不可思议)
  4. Web应用安全:初学者指南
基础的重要性
非传统背景对软件“工程师”常见的抱怨是他们知道如何编码但是“工程”方面的知识缺乏。或者换句话说:他们缺乏学生在更传统的教育课程(比如在大学里面见到的)中接触到的基础。
对于自学的开发者以及那些走非传统教育计划的人来说,很容易就会错过了学习基础的知识,以及仍然未意识到自己一开始就缺乏了一套核心的知识。太过专注于实用性的课程会牺牲掉为开发者产生强健的心智模式。这样的学习计划的问题在于构建在理论理解基础上的牢固心智模式其实是一项实用资产,因为它可以让开发者利用这些心智模式将新的信息情景化并且解决新问题。心智模式就像罗盘,辅助开发者在新的技术领域探索。
传统教育课程往往把太多的时间聚焦在理论上。因为这个,它们有时候会犯理论太过深入而牺牲了实践训练的错误。非传统教育课程往往相反:它们往往会犯实践太过深入而牺牲了理论训练的错误。不管是哪种情况,学生的准备都是不充分的:他们受到自身知识的限制而不是为其理解而赋权。这是由于错误的理论与实践的二分法。没有实践,学生对如何应用自己碰到的了理论就没有头绪。没有理论,学生就对如何将新信息适配到现有的“它是如何工作的”的模式没有主意,进而阻止了他们有效地同化新知识到真正理解上面。
缺乏理论的实践会将学生局限在他们当初受到培训的技术上(此处的适用术语是“框架用户”而不是“软件工程师”),而缺乏实践的理论会造就在接收第一本功能规范时对从何开始毫无头绪的学生。
牢固的心智模式需要理论与实践的融合。在进入你的第一个软件开发者角色前是不可能学会你作为一名软件开发者所需要掌握的一切的。总会有更多的东西要学。因此,最好的行动路线是形成牢固的基础理解,从而让你能迅速地吸收新信息,适应不断变化的行业。
传统和非传统教育都有看不见的例外。Launch School是一个非传统的教学计划但却强调心智模式、基础理解以及学习“不会改变的东西”的重要性。尽管软件业总在发生迅速变化,但基础性的东西却不会。对于毕业生来说雇佣他们从事的角色使用的是自己从未遇到过的技术是很常见的事情。
Western Governor’s University(西部州长大学)是大多数大学所遵循的标准教育的例外。我只是最近才了解到这么一所学校,并且对他们采用的所谓的“立足于能力的教育”教学方法印象深刻。在WGU这里,学生需要在特定课程证明自己具备足够技能才能进入到下一门课程。课程并没有时间限制:无论是哪一门学科,学生都要学到获得相应能力为止。
开发者培训的来源是什么无关紧要。不管是传统的、非传统的都行,他们是不是完全自学的也不要紧,需要考虑的最重要的一点是:他们是不是已经把基础给掌握了?
其他
我现在是一名二级软件工程师,正在跟一群非常有才能的工程师和总监共事。在充分掌握了基础并进行足够的实践之后,我感觉自己已经为解决复杂挑战做好了准备。我尤其喜欢现在这个位置的一点是我们所面临的其中一些挑战说没有办法在StackOverflow之类的地方找到的,因为我们是第一次尝试解决这些问题的人。
我希望立足于掌握的教学方法能逐步成为主流,因为它能防止得分在“C”或“D”档的人没完全掌握核心概念就过关了。
原文链接:https://hackernoon.com/how-i-went-from-student-to-drop-out-to-software-engineer-e8123d6a4199