像任何专业人士一样,程序员努力在自己的领域中力求做到最好。 无论是通过学习算法,学习新的编程语言,还是与新库一起工作和创建新库,我们的职业都是涉及终身学习的。 但是,今天,我想讨论一个超越知识的编码方面:性能方面。
编码人员的最佳性能看起来如何? 在某些行业中,这是显而易见的:赢得极其困难的案件的律师,准确无误地进行手术的医生,处在众所周知的“游戏巅峰”的运动员,等等。 在我们看来,这很难衡量,因为编码通常是一个孤立的追求–我们花费大量时间独自工作,仔细研究文档,根据测试规范来评估我们的代码,并逐个修正错误。 当然,存在最佳代码的想法,该代码可以通过使用最少的资源来获得结果-编写这样的代码对于程序员来说当然是一个不错的选择。 但是我们如何进入一种心理状态,使我们能够像这样进行编码?
一个经常被提及的答案是鲍尔默峰,这是一个古老的编程笑话,它假定程序员达到一定的教养水平时,他们正处于其编码能力的高度。 但是,由于大多数公司对工作场所的醉酒不满,并且事实上,这只是个玩笑而不是严肃的处方,这并非总是可以实现的。
相反,答案可能来自心理学。 1990年,心理学家Mihaly Csikszentmihalyi(大约发音为“鸡送我高声”)出版了一本书,名为《 流:最佳体验心理学》,其中描述了他认为的“流”心态。 流向Csikszentmihalyi的状态是手头的任务完全被吸收的状态-当某人忙于一项活动而似乎没有其他事情时。 俗称“在区域中”或“在凹槽中”,流动状态是一种极大的满足感,技巧和参与感。
在1996年接受Wired采访时,Csikszentmihalyi将流量描述为“完全出于自己的意愿参与了一项行动。 自我消失了。 时光飞逝。 每一个动作,动作和思想都不可避免地接续于前一个,例如演奏爵士乐。 您的整个生命都参与其中,并且您正在最大程度地使用自己的技能。”
我第一次在师范学院的教育心理学课程中遇到了这个概念,我们是在如何引导学生进入这种心态以确保最佳学习环境的背景下进行讨论的。 成为编码员后,我意识到流程状态也可以应用于编程-就像有可能使学生进入完美的学习心理状态一样,我们也可以使自己进入编码的理想思维状态。
那么,我们如何实现流程状态和潜在的编程必杀技? Csikszentmihalyi概述了流发生必须满足的三个关键标准。 首先,必须以明确的目标和进度参与一项活动。 当人们自己编程时,这有时会很困难-如果我们只是漫无目的地玩耍,就不会发生流程。 这就是为什么存在诸如测试驱动开发和“滑板到赛车”范式之类的结构的原因; 它们使我们能够将任务分解为一系列可以实现的目标,我们可以集中精力实现这些目标。
其次,流程要求手头的任务具有清晰,即时的反馈。 幸运的是,在编程世界中反馈非常丰富,尽管错误消息可能并不总是受到欢迎,但它们仍为我们提供了重要信息,使我们能够调整方法和性能。
最后,为了获得流畅的状态,一个人在他们的感知技能和感知的活动难度之间要取得良好的平衡。 换句话说,我们需要对完成手头任务的能力充满信心。 如果某事超出了一个人的能力范围,则会产生焦虑和自我怀疑,而另一方面,一项远远低于某人技能水平的任务会引起无聊和冷漠。 Csikszentmihalyi因此绘制了技能和难度之间的关系:

理想情况下,我们希望自己处于图表的右上方区域-这是程序员获得最佳性能的地方。 但是,有时很难到达那里,因为我们的工作条件可能不允许这样做。 例如,有时我们工作的目标不清楚。 尽管我们的工作可能适合更大的组织结构图,但这并不总是显而易见的。 此外,当反馈的交流很少时,可能不会给员工分配挑战他们或看起来很重要的任务,这可能会阻止进入流程状态。
因此,为了使自己能够进入最佳的顶空进行编码,必须满足三个条件:目标必须明确,反馈必须迅速并且难度和能力之间必须达到平衡。 如果我们仍然意识到这些因素,那么它将对我们的编码产生不可估量的帮助。