#读书笔记#温伯格技术思想三部曲:程序开发心理学——第10章、积极性、培训及经验

在心理学家的眼中,人们在完成特定任务时的工作绩效,是由任务本身及其承担者对任务理解的深度共同决定的。心理学家同样认为,工作绩效同时也受到任务承担者个体在诸如性格和智力等方面差异的影响。尽管性格是可以改变的,而且智力也可以有所提高,但是工作绩效的实质提高还要依赖于培训和实践经验。

不过心理学本身并非一门严密的科学,而且也从来没有严密过。无论心理学家如何对任务及其承担者的理解深度进行考察,无论他们如何对任务承担者个体之间所有差异进行衡量,无论他们如何考虑到培训与实践经验,工作绩效总还是有很多方面无从解释。在所有因素都被考虑到之后,剩下那些无从解释的部分就称为“积极性”。经常出现的情况是:如果某个人的积极性没被激发出来,就不可能很容易地使他投入到学习之中;反之,如果他动力很足,就没有任何办法可以阻止他学习。

=====================

积极性

人,并不只是被动地受制于环境的玩偶。相反地,人们更愿意相信:人类可以自行确定应该对环境中的哪种刺激做出反应,哪些是应该忽略的,哪些信息是值得学习的,哪些信息又是可以置若罔闻的。这些观察的结论,构成一种理论的基础,这个理论可以用来解释人们的某种内在的“导向驱动力”或者“内在的弹力”。这种内在的导向力,正是我们大多数人所指的“积极性”。

主管们所犯的一个错误就是,他们总是假设:工作绩效差的原因是由于缺乏积极性。于是他们企图借助一点“外部驱动力”的不足。而在这种时间,其实程序员所承担的外部压力往往已经够大了,而并非不够。关于积极性,最广为人接受的一项研究成果是:如果适当增加“驱动力”,那么在开始阶段确实可以提高工作绩效;但是,一旦超过一定的极限之后,继续增加这种“驱动力”只会很快地令工作绩效降为0。给程序员施加高压以期他们能够很快地排除某个程序错误,这种做法已经被证明是最差的策略,尽管截至目前,这仍是最常被采用的策略。

与工作中的程序员有所接触的任何人都会懂得:只要允许程序员按照自己所偏好的方式进行工作,那么程序开发这项工作本身就是对他们最大的激励。

=====================

培训、课程学习与教育

成员们都在一个令人敬畏的领导手下,为一个实际的项目共同工作过数年。然而,这数年的时间意味着培训与经验的积累。

大致上讲,我们所说的“教育”,指的是掌握一般性的原理与技巧的过程;而我们所说的“培训”,不过是学会某种特定技能的过程。

=====================

学习的阻力

令人吃惊的是,只有当存在阻碍学习的负面作用力时,学习才会失败。在教学的过程中,人们过分强调了,如何通过各种精巧的措施或窍门去激发学员的学习积极性。但是,只要观察一下儿童的学习过程,我们就会发现,只要任由儿童自己来决定学习的方向,他们总是可以学到大量的东西,虽然这些东西不见得一定是我们所期望的,但是不管怎样,他们将会学到很多。

然而对于成年人来说,阻碍学习的障碍通常来自我们自己的内心,而一旦可以任由自己做主,通常成年人都不再能学到什么新的东西。首先(而且也是最重要)一的点是:在开始学习之前,我们需要承认有一些东西值得去弄清楚,而自己还不懂。在专业程序员的观念中,承认自己某个方面知识的缺乏,就意味着地位的降低,除非他能够认识到:作为一位名副其实的专业人员,作为一个真正有实力的人,承认自己的不足,不会有任何损失。

有些人总是心甘情愿地承认自己的不足,而不去尝试学习任何新东西。其原因在于,他们总是想当然地认为,自己不可能取得成功。这种对失败的畏惧心理,有的是由于缺乏自信心造成的,也有的是源自先前此类努力过程中的失败经历。但是更普遍的以情形是,这类恐惧主要并不在于失败本身,而在于失败可能被周围人看到。

如果身处某个集体之中,人们更愿意应用自己已经掌握的知识,这样会妨碍接受新的知识。如果要进行学习,我们首先必须做法犯错误的思想准备,但是如果我们周围有别人在场,那么克服自己的畏惧心理将会显得更加困难。事实确实如此,如果使用的知识是众所周知的,那么也许正是由于有周围人在场,我们会努力去避免犯错误。如果把这种结论推广到学习程序开发技术中,我们就可以自然而然地猜测:在首次学习某种新程序语言时,如果是在一个只有终端相伴、与世隔绝的环境中,那么学习的效果将会最好,因为这时任何错误都不至于为人知晓。

在这里至关重要的一个概念,就是所谓“技术的可扩展性”,也就是说,在初次学会某项技术之后,还能否在其他环境条件下再次应用。每当我们掌握了一种通用的技术之后,我们的能力并不是简单增加,而是成倍增加。还有一种技术,与通用的、可扩展的技术恰恰相反,我们称之为“穷途末路的”(Dead-end)技术。

在程序开发方面,我们时常碰到某个程序员,他在解决规模不超过某个特定范围的问题时干得不错,但是他却无法逾越这个规模的界限。实际上,有时我们也会遇到截然相反的情况,有些程序员平时默默无闻,直到需要解决更大规模的问题时,他们才有英雄用武之地。在前一种情况中,在小规模问题上大显身手的技术,将无法在大型问题中得到有效的应用;而在后一种情况中,用功能强大而且通用的技术来解决非常简单的问题,只能造成巨大的额外开销。

作为一个例子,让我们来对比二分搜索和顺序搜索之间的差别。当编写的程序需要在一个只包含10页记录的列表中进行搜索时,如果采用二分搜索,则可能反而程序的开发进度,甚至会降低程序的运行速度。而在解决这一特定问题的时候,那些也许根本不懂得二分搜索的程序员,可能反而令这种“高级”技术的程序员黯然失色,因为后者虽然掌握了这种高级技术,但是却没有进一步意识到这种技术的应用范围。无论如何,问题的解决规模翻倍之后,二分搜索的速度约不至于降低50%。然而,顺序搜索则不然,问题的规模稍微扩大(比如在1000个记录中进行搜索),其速度的下降就远远不止这种程度。

无论是在正式的课堂环境,还是工作环境中,对新事物的畏惧、对失败的担忧以及不情愿承认自己的弱点,都会成为学习的直接障碍。其他问题则是间接出现的,大部分这类问题的原因,都在于对要学习什么、如何去学习等问题缺乏足够的认识。

如果遇到的问题来自于自己不熟悉的某个背景,那么通常我们可能会犯两种错误,或者把问题的难度估计过头,或者把问题想象得过于容易。

=====================

如何学习程序开发

掌握学习之道的第一步,就是要了解自己拥有什么,缺乏什么,也就是要有“自知之明”。

[下面这个例子,让自己有所启发]

在一次测验中,有两名学生正在做一道算术题:25-16。如果其中一名学生给出的答案是19,而另一位学生给出的是41,那么通常他们都将被贴上“不懂得减法的学生”的标签。但是,只要其中任何一名学生运气好,能够遇到一位好老师的话,这位老师就可能从他们的错误答案中挖掘出更深层次的信息,并充分加以利用。

作为程序员,只要希望学习,那么你就必须一边顶住来自管理层的压力,一边花时间对自己成功进行总结。而对于管理人员来说,一个好的做法就是:每当程序员宣称自己的项目已经“大功告成”时,给他一天的时间放松一下,这并不是一种奖励,而是为了让程序员更加深对该项目的理解。

为了提高程序员的工作效率,我们可以从两个主要方面着手:培养他们对工作的渴望,并使他们掌握为完成工作而必须具备的知识。前一方面称作“积极性”,而后一方面称作“培训”(或者,如果其内容具有足够的一般性,也可以称之为“教育”)。

时间: 2024-12-11 00:18:39

#读书笔记#温伯格技术思想三部曲:程序开发心理学——第10章、积极性、培训及经验的相关文章

#读书笔记#温伯格技术思想三部曲:颠覆完美软件(3)

===================== 没有哪种感情会像恐惧那样剥夺大脑进行行动和推理的能力. 人们受到恐惧驱动后会进行防卫性反应.最有用的一条规则是首先不将对方的行为定义为防卫性的,但按照它是防卫性反应来对待,看看它是否会在温和的测试下表现出来. 虽然隐含其下的恐惧通常无法被看见,但是它确实存在.尝试一下能否确定对方害怕的是什么,再看看在找到方法减轻那种恐惧之后会怎么样. 质量的定义,就是对某些人有价值.作为项目经理,与你有关的是及时交付有价值的产品. 通过足够的实践,我们可以更好地辨识别

温伯格技术思想三部曲:程序开发心理学——第6章、程序开发项目

============================ 组织长久运作的方法 对于大型的组织机构来说,有一个有趣的地方就是:经过了很长的时间,虽然大型机构里的人员不断更换,但这个大型机构却依然存活了下来.在开发的团队中,我们也经常看到这样的情况:虽然团队成立之初时的成员已经一个都不剩了,但是作为一个团队它依然存在着.团队的这种能力来自于其成员之间的交流,正是这种交流,使得原有成员离去后,团队的整体目标和成就就可以转移给接替的新成员并保留下来. 随着项目向前推进,人们会渐渐发现他们日益不满足于责任

温伯格技术思想三部曲:颠覆完美软件(4)

================ 萨提亚交互模型 萨提亚交互模型首先将任何沟通过程都分解为四个主要阶段:摄取.确定含义.确定重要性和做出反应. 摄取(Intake) 在过程的摄取阶段,一个人从外部世界取得信息.摄取并不是"就那样发生":它还包括了选择的过程,实际上我们都对自己看到和听到的内容进行了大量的选择. 确定含义(Meaning) 摄取的数据本身是没有含义的,直到有人赋予它们某个含义. 确定重要性(Significance) 数据也许会给出某些含义的暗示,但从来不会暗示其重要性.

温伯格技术思想三部曲:程序开发心理学——第8章、性格因素

"人的智力"及"受到的教育"会影响到人的性格.我们使用"性格"这个术语用来刻画一个人所有性格特点的总和:换句话说,一个人的性格就是其有别于他人的特点. =============== 所谓性格,就是一个人的所有特征的集合. 作为个人性特征所有方面的总和,性格必然会体现在我们的一言一行之中.尤其是,个性将会在我们所编写的程序中得到体现. =============== 性格的改变 一个人的性格并非如通常所说的"江山易改,本性难移"

《程序开发心理学读书笔记之四》

本书绝对称得上是经典著作了,之前已经发表过自己对最感兴趣的两篇的见解以及从中收获的益处了,但是其余两篇也是比较好的,下面就让我来带大家去其中遨游吧! 以下是我认为书中作者写的比较好的见解: 第一篇是<作为人类行为的程序开发>,以下是我认为作者总结的较好的观点: (1)程序员自己编写的代码是为了弥补计算机本身的不足,本人认为这是作者的一个较为独到的见解. (2)我们发现,大量代码的作用,只是为了克服那些我们将可能遇到的硬件配置的不尽完美之处,这是作者的看待程序开发的新思维. (3)程序员面临的另

《微软的软件测试之道》读书笔记 之 结构测试技术

<微软的软件测试之道>读书笔记 之 结构测试技术 2014-07-18 我们需要结构测试吗? 微软的一项试验说明了结构测试的在代码覆盖中起到的效果: 超过3000名测试员参与了这项实验,每25人一组,实验结果在所有组中都是一致的.在这项研究中, 脚本化测试:根据样式书设计的脚本化测试在被测程序上达到了标称83%的代码覆盖率. 探索性测试:然后,实验参与者允许进行每人15分钟,累计5小时的探索性测试.令人惊讶的是,代码覆盖率平均只增加了3个百分点. 结构测试:但是,当实验参与者能够分析探测过的(

《程序开发心理学读书笔记》

<程序开发心理学>出自软件领域著名思想家,美国计算机名人堂首批成员之一的Gerald M.Weinberg温伯格之手.其关注的是程序开发过程中人的因素,作者从人类行为.社会行为.个人行为等角度,分析了人在计算机程序开发的过程中所表现出的行为及其影响,探讨了诸如什么样的程序员才是好的程序员,怎样才能打造出优秀的开发团队,我们在求职或招聘时做的那些智力测验是否真的有用,等等这类问题.此书一共分为四篇13章,以下是我从每个章节中汲取到的知识以及自己的见解: 在第一篇<作为人类行为的程序开发&g

《WF in 24 Hours》读书笔记 - Hour 2(1) - 第一个Workflow程序

创建第一个Workflow项目 1. 创建Workflow项目 – 选择Workflow Console Application 2. 添加CodeActivity 3. 打开CodeActivity,添加一行代码到Execute方法中 1 public sealed class CodeActivity1 : CodeActivity 2 { 3 // Define an activity input argument of type string 4 public InArgument<st

Android编程权威指南-读书笔记(二)-第一个小程序

Android编程权威指南-读书笔记(二) -第一个小程序 第一个例子介绍 应用名为GeoQuiz.用户通过单击True或False按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案正确与否. 这个例子为我们简单介绍了几个基本组件的使用,以及基本的事件监听.让我们对基本组件的使用和事件的监听有一个基本的了解. 这篇文章分为2个部分,第一部分就是创建简单的UI.第二个部分就是对这个UI增加代码来响应一些操作. (注:所有不明白或者不理解的东西其实都不重要,后面都会有更详细的介绍.) 本章的目标