acm-header
登录

ACM通信

实践

调试心态


调试心态,说明性照片

图片来源:SJitpitak / Shutterstock

回到顶部

软件开发人员花35% - 50%的时间验证和调试软件。1调试、测试和验证的费用估计占软件开发项目总预算的50% - 75%,每年超过1000亿美元。11虽然工具、语言和环境减少了花费在单个调试任务上的时间,但它们并没有显著地减少总调试时间,也没有减少这样做的成本。因此,过度关注在开发过程中消除bug是适得其反的;相反,程序员应该把调试作为解决问题的练习。

对于程序员来说,更合适的做法是将他们的努力集中在获得和鼓励有效的学习策略上,这些策略可以减少花在调试上的时间,并改变他们感知挑战的方式。这篇文章描述了如何通过斯坦福大学的Carol Dweck和其他人对问题解决心理学的应用研究来学习、教授和指导有效的解决问题的技能。

在1974年的经典中,编程风格的要素, Kernighan和Plauger写道:“每个人都知道,调试比最初编写程序难两倍。所以,如果你在编写程序的时候非常聪明,你怎么能调试它呢?”6调试真的是编写程序的两倍难吗?如果是这样,为什么会这样呢?

要回答这些问题,让我们首先考虑一下错误发生的原因。在2005年的一篇论文中,Andrew J. Ko和Brad a . Meyers认为,错误是“认知故障链……在编程活动过程中形成的。”7

在基本层面上,所有软件都描述了系统状态随时间的变化。因为软件中的状态和状态转换的数量可能具有组合复杂性,程序员必须依赖于系统行为的近似值(称为心智模式在开发过程中)。心智模型的目的是让程序员能够准确地推断出系统的行为。

由于心理模型是近似的,它们有时是不正确的,当软件在错误的假设基础上开发时,会导致异常行为。新手程序员经历这个问题的程度更大:他们的语言和开发环境模型必然是不完整的,甚至一个简单的语法错误都可能成为学习编程的主要障碍。这并不局限于新手程序员。例如,C11语言规范只有700多页。有多少系统程序员完全理解这种语言?

当程序员错误地认为他们的心智模型已经完成时,最危险的错误就会发生。这就是问题的症结所在:他们在实现中假设了正确性,但根据定义,他们不知道自己错在哪里。程序员解决这类bug的唯一方法就是获取知识。虽然Kernighan关于编程和调试之间难度的定量差异的说法是否正确还不清楚,但似乎可以明确的是,调试是更困难的任务。由于解决bug需要学习,通过更好地理解有效的学习和教学策略,可以使调试过程更容易。

回到顶部

教学调试技能

调试是领域特定的术语吗解决问题。错误被描述为文字问题:例如,“当条件A和B都为真时,越界写入对象O会导致相邻内存的损坏。”不幸的是,应用题被发现是最难教的,在软件中几乎所有的错误都可以有效地描述为应用题。13

也许是为了弥补这一困难,许多现有的调试教育学研究首先关注于区分“专家”和“新手”,并评估在调试任务中使用的每种技术。然后,它试图通过教授专家技术来提高新手的能力。然而,对文献的回顾发现,即使是专家在调试技能上也有很大的不同。8

那些在调试方面最有效的人既有丰富的经验,也有完善的解决问题的技巧。他们还采用广义策略来解决问题13而不是把每个单独的bug当作一个新的、特定的案例来处理。虽然教授专业程序员的技术可以减少新手花在编程活动上的时间,但它并没有被证明能有效地减少调试时间。此外,接受过和没有接受过专家技术干预的学生在测试成绩上没有统计学上的显著差异。2

经验和精确的模型正是新手程序员所缺乏的工具。虽然计算机科学教育投入了大量时间教授算法和基础知识,但似乎没有多少时间花在将它们应用到一般问题上。在大学里,调试并不是一门专门的课程。尽管有几十年的文献建议教授这样的课程,但没有强大的模型来教授调试。

问题在于教什么以及如何教。仔细考虑心理学领域的研究有助于理解学生的需求和设计适当的课程。13因此,教师、导师和教育工作者应该了解这一领域的相关研究,以指导他们教授什么以及如何教授。个人必须认识到如何处理问题,以及它们是被视为能力的限制还是学习过程的一部分。

回到顶部

关于工具和环境的说明

为了减少或消除错误,在开发工具、语言和编程环境上花费了大量的精力。工具(一旦理解了它们的使用)无疑会节省调试过程中的时间,但它们不能解决所有问题。如果没有针对特定问题的工具会怎样?如果可用的工具不能扩展到再现问题所需的负载,该怎么办?如果你不知道这些工具,或者买不起它们,该怎么办?工具不是万灵药;当它们不存在(或以其他方式不可用)时,您需要愿意并能够编写它们或放弃使用它们。

基于虚拟机的语言、解释语言和带有运行时环境的语言鼓励用户将执行环境视为一个黑盒子。这里的目标是通过减少程序员必须维护的心智模型的范围来简化编程。当这些执行环境中出现错误时,您在理解上就会出现完全的空白。您可以通过更多地了解执行环境来解决这个问题,但是这种抽象的意义是什么呢?这样的运行时环境并不是万能的;你仍然需要了解它们的行为。

最后,在形式可验证语言领域存在着广泛的研究。这些环境允许程序员在解决某些问题时证明其代码的正确性,但它们不能帮助我们首先理解他们正在解决的问题。如果您没有完全理解一个问题,然后在不完全理解的基础上实现一个“可证明是正确的”解决方案,那么仍然需要进行调试。这些语言不是万灵药;在编写软件之前,您仍然需要对要解决的问题有一个完整的理解。

由于错误是由于不完整的心智模型而产生的,完全依赖于工具、运行时环境和语言来捕获错误的哲学似乎是自欺欺人的。这几乎就好像我们在说,我们不可能足够聪明去理解这些bug,所以为什么还要费心呢?正如卡罗尔·德韦克(Carol Dweck)对“智力的自我理论”的研究所描述的那样,这种观点完全属于“实体理论家”这一边。5

回到顶部

Self-Theories情报

德韦克是动机研究领域的领军人物,他从事了40年的研究,试图识别和表征成功人士的行为。她的研究成果在许多针对不同文化、性别、年龄和社会经济背景的个体的研究中得到了反复验证。

德韦克提出,个体属于自我理论的某个范畴。这个光谱不同于实体理论在一端增量理论另一方面。实体理论家倾向于认为智力是天生的和固定的,并从根本上相信提高智力是没有多少办法的。增量理论家从根本上认为,具有挑战性的问题是学习过程的核心部分,智力是可塑的:它可以通过努力学习获得。当遇到挑战时,实体理论家将其解释为能力的限制,而不努力去解决它们。在文学中,实体理论经常被称为实体理论固定心态增量理论是成长心态很大程度上是由于实体和增量理论家的潜在动机。

虽然Dweck的工作最初集中在智力理论,但这些自我理论可以应用于特定领域的信念。例如,个人可以对智能持增量理论,但对编程或调试等特定技能仍持实体理论观点,12因此,这项研究并不意味着全球观点。

拥有实体智力理论的个体更有可能受到外表而非表现的激励,更有可能在面对问题时做出不适应行为(如放弃或欺骗),也更不可能与他人合作。在软件开发领域,这些行为表现为不适应策略,包括英雄崇拜、冒名顶替者综合症、“货物崇拜”和懒散的职业道德。

相比之下,增量理论家的动机是面向绩效的目标。实体理论家会走捷径来显示自己的聪明(比如处理大量客观上简单的任务),而增量理论家则会直面困难的问题,将努力工作视为获取知识和交付价值的必要条件。此外,增量理论家倾向于在团队中有效地工作,重视帮助教育和促进他人的成功,并参与其他通常对专业编程环境积极的行为。

这种智能的增量理论显然有利于程序员和该领域的最佳特征,无论是专业的还是学术的。认识到编程实践(像许多其他领域一样)从终身学习中获益,弄清楚如何有效地应用Dweck的研究将是有用的。教育工作者、管理者和导师将从将这项研究纳入课件、管理和教学策略中受益。

将德韦克的研究应用到我们的领域的关键是,在自我理论的光谱上“转移”是可能的。通过改变你对别人的反应、回应和赞美的方式,你可以帮助别人(和你自己)从“固定”的观点转变为“成长”的观点。

回到顶部

计算机科学中的自我理论

与刚开始工作时相比,你现在的编程能力如何?在调试吗?无论你已经做了一年还是50年,你几乎肯定在解决你刚开始学习之旅时看似棘手的问题。这不是先天能力的结果:在我们开始编程之前,没有人有这种能力。我们不需要回溯很久的历史就能理解,这方面的能力在人类中是新生的。

尽管如此,在将心理学研究应用于我们的工作之前,我们必须仔细考虑它13并判断它是否相关。在2008年的一篇论文中,劳里·墨菲(Laurie Murphy)和琳达·托马斯(Lynda Thomas)列举了拥抱这类研究对计算机科学领域的帮助:9

  • 将本研究应用于计算机科学导论课程,可提高学生的学习效果和课程保留率。
  • 计算机科学教育和实践中的性别差异可能直接归因于文化对女性智力自我理论的影响。
  • 一些研究发现,像结对编程这样的协作工作非常有效,而在另一些研究中则非常无效。实体和增量理论的目标冲突可以解释这些明显的矛盾。
  • 防御性课堂气氛的特点是学生问“伪问题”来展示知识,教授给予这些学生特殊地位。采用德韦克的研究可以解释和改善这种防御性课堂气氛。

由于bug以问题的形式出现,并且由于问题往往被实体理论家认为是能力的基本限制,因此这里的重点应该是让学生、同龄人和同事向一种更具可塑性的智能观点发展。

回到顶部

可塑自我理论在组织中的应用

无论是作为管理者、导师还是教育者,采用和推广可塑自我理论对于培养成功的学生和同事都是很重要的。调试不应该是在教育过程中事后才想到的;行业必须停止坚持错误被解释为个别程序员的失败(特别是因为个别程序员很少负责整个系统的设计和功能)。相反,程序员应该因为他们解决bug的努力而受到赞扬。在所有情况下,解决bug都是学习过程的一部分。他们怎么能这样呈现呢?

一些研究试图将个人的观点从固定的角度转移到可塑的角度。在这里,熟悉相关文献非常重要,尤其是对教育工作者和管理者而言。在2004年的一篇论文中,曼茨·约克和彼得·奈特建议教育工作者应该“认识到自我理论对学生学习的重要性;能够推断出学生倾向于固定性还是可塑性;并拥有鼓励‘固定型’学生向可塑性发展的策略。”14

为了做到这一点,墨菲和托马斯建议研究心理学家列夫·维果斯基(Lev Vygotsky) 20世纪初的研究th世纪。他们指出,“学生在稍微超出独立能力的情况下学习效果最好。”这需要一名教师或导师能够帮助超出学生目前能力的学生;约克和奈特观察到,当老师和学生都对智力具有可塑的看法时,这个系统的效果最好。

将个体从实体移动到增量视图可以像以特定方式构造信息一样简单。在多项研究中,德韦克注意到,信息呈现为赞扬能力促进实体理论的形成,而赞扬努力推广增量理论。无论接受信息的人是不是被表扬的人,这似乎都是正确的。

德韦克指出,基于表扬的转变的时间效应尚不清楚。在他们研究的一组个体中,Cutts等人在每次对分级工作给予反馈时都不断强化增量思维。3.只有接受这种干预(加上另外两种干预方法)的学生看到了自我理论的渐进发展而且考试成绩的显著提高(我发现的其他研究都无法证明这一点)。这可能是一致的环境反馈促进了一个渐进的理论足以让个人长期采用。鉴于它被证明在短期情况下有效,一致反馈可能只是功能上的等效。

这类反馈的大多数例子都是以促进成长为导向的目标的方式构建信息。当一个同事解决了一个特别讨厌的bug时,人们往往会说:“你太棒了!”相反,他们应该说:“干得好!”如果你给工程师分配的任务对他们来说很容易解决,你可以道歉:“我很抱歉给你分配了一个你无法从中学到很多东西的任务。”试着在将来把更具挑战性的工作交给这些同事。学生和个人在解决bug时会遇到挫折。如果你、你的学生或你的同事表达了不满,试着用完成项目后你或他们能学到的东西来表达。


无论是作为管理者、导师还是教育者,采用和推广可塑自我理论对于培养成功的学生和同事都是很重要的。


不幸的是,学生和求职者通常无法选择持有这种观点的老师或经理。因为当学生和老师都持有增量理论时,学习效果最好,14至关重要的是,组织应该雇用拥有这种观点的个人,并对现有员工进行相关材料的培训。

拥有实体理论的老师和导师更有可能只专注于帮助那些他们认为最聪明的学生,而把那些苦苦挣扎的学生视为失败的目标。这是非常不幸的,因为在几项研究中,德韦克表明,学习成绩不佳的学生在面对更难的问题时(就像从小学过渡到中学,或从高中过渡到大学),往往比拥有实体理论的优秀学生表现得更好。采用实体理论的教师不太可能帮助表现不佳的学生取得成功。

回到顶部

强化个人增量理论

教育是一生的过程。作为个体,我们应该在日常生活中采用可塑的智力观。有一些解决问题的具体方法,发展和加强了一种可塑的智力观。

主动召回。人们强迫自己进入实体框架思维的一种方式是过度依赖参考手册和文档。这些论点是memcpy按照来源,目的地,长度的顺序;还是目的地,来源,长度?是strstr干草堆,针;还是“针,干草堆”?许多人养成了一遇到问题就查阅参考资料(如系统手册)的习惯。

主动回忆是一种学习方法,在查找答案之前先做一个猜测。(这是学习工具如闪存卡建立的基础,但它必须正确使用才能有效。)在接口情况下,例如memcpy而且strstr,首先编写代码:对参数顺序进行最佳猜测。一旦你这样做了,看看参考手册,以确认你是否做对了。

分段研究。想想你上次花一整天时间在马拉松式的调试会议上是什么时候。你解决问题了吗?或者你需要休息一下,做点别的事情,也许回家,睡觉,然后第二天再解决这个问题?

工程师在调试过程中经常陷入沉没成本谬误,花费额外的精力解决问题,尽管所花费的时间的回报在递减。我们的大脑不会连续几个小时专注于特定的任务。分段学习是指在一项活动的过程中,有一到两个附加的、不相关的任务进行转换。当你陷入困境时,换档和休息是取得进展的有效方法(也许有违直觉)。

对于管理者、导师和教育者来说,这也是正确的。明确地给同事和学生时间去解决其他问题。学生和员工通常不会要求做其他事情,所以给他们处理信息所需的时间是至关重要的。

坚持下去。什么分割研究不代表遇到困难就放弃。你必须坚持不懈:对于成功和技能发展来说,坚韧和激情至少和智力一样重要。在一个领域中最成功的人在他们能力的极限上练习他们的手艺很多年。这种“毅力”与个人的成功因素高度相关。4

是好奇。有了足够的经验,指导他人是合适的。在教学和指导他人时,保持好奇心是至关重要的。获得某些知识的途径有很多,你自己固有的观点并不总是对每个人都是最好的。在学习时,人们希望将新知识与现有知识联系起来;这为他们的发展奠定了坚实的基础。好奇心是指对不一定反映你自己观点的想法、解决方案和思考方法持开放态度。你必须从你希望教育的人的角度来教学。

回到顶部

调试的一般方法

通过持续的学习、对问题的可塑看法以及有效地使用工具,您可以在调试中取得成功。尽管如此,一些人坚持认为调试更像是一门艺术,而不是一门科学。我认为我们可以完全否决这个想法。很明显,调试需要学习,科学的方法是专门为产生新知识而设计的。方法总结如下:(1)建立问题的一般理论。(2)提出可以引出假设的问题。(3)形成假设。(4)根据假设收集和检验数据。(5)重复。

根据我的经验,很少有人关注假设的形成,结果是浪费精力,没有任何关于bug原因的理论进行测试。形成一个好的假设比看起来要困难得多。在实践中,假设的形式很糟糕,许多假说更多地依赖直觉,而不是信息收集。直觉可以是一种有效的调试策略,但需要大量的经验,而且当作为唯一的策略使用时,会使程序员对处理新的、不熟悉的bug毫无准备。缺乏解决这些错误的框架对实体理论家来说尤其有害。

一个好的假设描述了一个问题,既可测试又可证伪。事实上,形成一个适当的假设几乎总是意味着一个bug被完全理解了。考虑以下三种说法:

  • 日志记录模块存在错误。
  • 当并发日志生成器对同一项进行排队时,日志记录模块中存在竞争条件。
  • 使用池中工作对象的并发日志生产者之间的竞争条件是由池为空时处理不当的返回码引起的,并且当使用者试图将同一对象多次重新排队到池中,但由于池已满而失败时,会导致双释放。

这些语句是围绕解决真正bug的思考过程的一部分。第一个假设表明了很少的计划或研究,并且是程序员对于什么可能构成bug的“预感”的结果。这是一个可测试的假设,但它是糟糕的:如果这个假设通过测试得到了证实,那么测试就无法提供关于如何解决问题的更多数据。

第二种说法稍好一些。很明显,它正在对更多的信息进行操作,所以看起来这个bug在这一点上已经被复制了。这个假设仍然是不完整的,因为它没有对并发日志生成器产生相同项目的原因做出任何预测。此外,尽管它听起来像是描述了什么是失败(竞态条件),但这实际上并不是第三个假设中所描述的最终缺陷。

第三个假设显然是最好的。它描述了错误发生的原因和失败是什么。重要的是,它确定了失败的原因与程序实际失败的时间和地点是分开的。这个假设很好,因为它可以被非常具体地检验。如果回归测试是您开发框架的一部分,那么只有这个假设提供了这种测试应该如何运行的描述。

可证伪性是真实假设的一个重要而关键的性质。如果一个假设不能被证明是错误的,任何测试都会证实它。这不可能给你信心,你理解的问题。

形成一个合理的假设对于其他原因也很重要。心智模型可以用来凭直觉判断一些bug的原因,但对于更困难的问题,依靠心智模型来描述问题是完全错误的:心智模型是不正确的,这就是bug最初出现的原因。抛弃思维模式对于形成一个合理的假设至关重要。

这可能比看上去要难。例如,代码中被怀疑包含错误的注释可能会强化现有的心理模型。这可能导致您掩盖有bug的代码,认为它显然是正确的。考虑,例如:

/*刷新所有日志项*/
For (i = 0;I <= n _ entries;我+ +)
{flush _ entry(&entry[i]);}

这段代码(可能是明显的)演示了一个离一错误的示例。上面的评论是正确的,但不完整。这段代码冲洗所有条目。它还会多冲一个。在调试时,将注释仅仅视为信息,而不是规范。

回到顶部

结论

调试是应用计算机科学中最困难的方面之一。通过卡罗尔·德韦克(Carol Dweck)等人进行的意义深远的研究,人们对个人在解决问题方面的观点和动机有了更好的了解。这项研究为促进学生、同事和自己的持续成长提供了一种手段。

调试是一门科学,而不是艺术。为此目的,高等教育机构应该这样接受它。现在是这些机构引入专门调试课程的时候了。早在1989年就有人提出这种需要。10在2004年,Ryan Chmiel和Michael C. Loui注意到“由计算机协会和IEEE计算机协会提出的计算机课程很少提及调试的重要性。”2这似乎仍然是正确的。

仅仅通过经验来学习(阿曼等人认为这是学习调试技能的主要方式)10)是令人沮丧和昂贵的。在软件工程行业人手不足的时候,由于社会和文化的影响而产生的某些自我理论的个体似乎被抛在了后面。理解Dweck的工作,改变我们对待教育、导师和个人学习习惯的方式,可以对软件开发行业的进步产生深远的长期影响。虽然对减轻调试任务的工具的研究仍然很重要,但我们也必须接受并继续研究,询问和展示如何更好地帮助学生、同事和同行在计算机科学方面取得成功。

ACM队列的q戳相关文章
queue.acm.org

软件工程本科
迈克尔·j·卢茨,j·费尔南多·纳瓦达,詹姆斯·r·瓦利诺
http://queue.acm.org/detail.cfm?id=2653382

聪明编程:人vs.工具
Donn m·斯利
http://queue.acm.org/detail.cfm?id=945135

面试技巧
Kode恶性
http://queue.acm.org/detail.cfm?id=1998475

回到顶部

参考文献

1.T.布里顿,郑,L.,卡弗,G.,切克,P.和卡泽伦伯根,T.可逆调试软件。剑桥大学佳奇商学院,2013年;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.444.9094&rep=rep1&type=pdf

2.Chmiel, R., Loui, M.C. 2004。调试:从新手到专家。SIGCSE公报361(2004), 1721。

3.Cutts, Q, Cutts, E, Draper, S, O'Donnell, P.和Saffrey, P.操纵心态积极影响入门编程性能。在第四十一届会议记录ACM计算机科学教育技术研讨会, 2010, 431435。

4.达克沃斯,a.l.,彼得森,C,马修斯,医学博士,凯利,博士。Grit:对长期目标的毅力和激情。J.人格与社会心理学, 6(2007), 10871101。

5.德维克,C。自我理论:他们在动机、个性和发展中的作用。心理出版社,1999年。

6.克尼根,B.W.和普拉格,P.J.编程风格的要素。麦格劳-希尔,1974年。

7.Ko, A.J.和Meyers,文学士。一种研究编程系统中软件错误原因的框架和方法。J.视觉语言与计算机, 12(2005), 4184。

8.R.麦考利,S.菲茨杰拉德,G.莱万多夫斯基,G.墨菲,L.西蒙,B.托马斯,L.和C.詹德。调试:教育视角下的文献回顾。计算机科学教育18,2(2008),6792。

9.墨菲,L.托马斯,L. 2008。固定思维的危险:自我理论研究对计算机科学教育的影响。SIGCSE公报40, 3(2008), 271275。

10.阿曼(p.w.),库克(C.R.),编程经验对调试语义错误的影响。J.系统与软件, 3(1989), 197207。

11.RTI。软件测试基础设施不足的经济影响,2002年;http://www.nist.gov/director/planning/upload/report02-3.pdf

12.Scott, M.和Ghinea, G.关于心态的领域专一性:天赋信念和编程实践之间的关系。IEEE教育汇刊, 3(2014), 169174。

13.编程教育学心理学概览。SIGCSE公报283,1996, 1722。

14.自我理论:对高等教育教与学的一些启示。高等教育研究, 1(2004), 2537。

回到顶部

作者

德文郡h . O 'Dell是Fastly的技术主管,他的主要工作包括指导团队成员以及Fastly核心缓存基础设施的可伸缩性、功能和稳定性。此前,他是Message Systems的首席软件架构师,对Momentum高性能消息平台做出了重大贡献。


版权归作者所有。授权ACM出版权利。

数字图书馆是由计算机协会出版的。版权所有©2017 ACM, Inc.


评论


鲁道夫Olah

喜欢这篇文章和调试作为一般问题解决和成长vs固定思维的框架。另一个有趣的方面是,大多数程序员的发展心态是增长(如果他们是优秀的),但当涉及到业务运营、管理、销售和营销,甚至是平面设计时,大多数程序员都是固定的心态,不认为自己能够增长这些领域的知识。

不幸的是,这篇优秀的文章有一个弱点:假设开发人员处于从属地位。

对于管理者、导师和教育者来说,这也是正确的。明确地给同事和学生时间去解决其他问题。学生和员工通常不会要求做其他事情,所以给他们处理信息所需的时间是至关重要的。”

像程序员这样的知识工作者,以及正在成为程序员的学生,不能处于从属地位。由于工作的性质,必须给予他们一定程度的自主权。即使是外包公司也是如此,他们的假设是程序员都有固定的思维模式,只能根据精确的规格来完成任务,几乎没有创造力。

在未来,我希望开发人员将扮演更重要的角色,他们可以花时间解决其他问题,而不必请求或等待好心的经理对他们表示同情。


德文郡O 'Dell

嗨,鲁道夫,

感谢您的反馈!我完全同意你的观点。我知道你是如何根据这段话得出这个结论的,所以也许澄清一下意图是有必要的。在认识到专业或学术角色的差异时,我当然无意做出一种支配或从属的假设。很抱歉回复太长了——就像帕斯卡一样,如果我有时间的话,我会写一个更短的回复。

也就是说,虽然我同意知识工作者从允许创造性自主的角色中受益,而且我们应该促进这样的环境,但许多专业和学术机构并没有以这种方式设置。这当然超出了我的文章范围。但假设它们存在(因为它们确实存在),我希望在这样的机构中读到这篇文章的人能够认识到,什么时候应该允许更多的创造力和多样化的工作。事实上,要认识到并认识到这样一个事实:它有可能扼杀您的开发人员!

其次,权力和从属可以被承担的角色。一个拥有权力(没有首先获得尊重)的领导者通常会惊讶地发现,他对工作产出几乎没有实际影响。同样,一个不这么做的领导可能会惊讶地发现,一些员工/学生的反应就像他们处于从属地位一样。由于这些角色是可以被承担的(即使没有严格的等级制度),这些句子希望能告诉处于领导地位的个人,要对他们“监督”的人的需求保持敏感(没有更好的词了)。有可能,即使在协作环境中给予创造性自主权,有些人(尤其是新手)在没有得到明确指示的情况下,也不会觉得有权力切换任务。此外,这并不一定是员工/学生的固定思维模式的指标:它可能是文化的问题,缺乏自我意识,或其他我没有想到的东西。

最后,自我理论研究表明,当教师和学生共享一个增量自我理论时,学生的学习效果最好。我看不出有什么理由不适用于经理和员工之间的关系,尽管我不知道有没有研究专门说明了这一点。像分段学习这样的实践可以有效地培养渐进的自我理论,所以我也希望提供有效的策略,让人们走向光谱的那一边。如果我们可以用我提到的(和许多其他的)技术做到这一点,希望我们可以帮助在整个组织中发展一种“成长心态”。(有一些研究表明,整个组织和商业组织有效地运行在自我理论光谱的某个地方。)这可能有助于解决你提到的关于bizops、管理、销售和其他职位的一些问题。

希望这澄清了意图!在我看来,对于应用计算机科学(以及类似领域)的工作人员在工作和学习环境中应该拥有的资源、创造力和自主权,我们的看法非常一致。


显示所有2评论

Baidu
map