本文包含附属链接。有关更多信息,请参阅我的附属公司披露。
提高编程能力的最好方法是大量编程。正确的?
并不真地。但是,是的。为了在任何事情上做得更好,你确实需要经常练习。但并非所有练习都是平等的。如果你不刻意练习,没有明确的目标和衡量成功的系统,你就会陷入停滞状态。
但是刻意练习对于编码来说是什么样的呢?
什么是刻意练习?
有很多关于编程的刻意练习的内容。
我在研究这篇文章时搜索了“程序员的刻意练习”这个词,得到了 1.03 亿条结果。
我看到的顶级文章给出了很好的建议,归结为五个关键步骤:
- 将任务解构为更小的子任务。
- 确定每个子任务的成功衡量标准。
- 练习子任务。
- 获得反馈并反思您的表现。
- 根据反馈进行调整并重复,直到达到目标。
这是一个很好的食谱,如果做得好,它就会起作用。尤其是当你有一个良好的反馈系统时。
但这不是刻意练习。
这种方法就是心理学家 K. Anders Ericsson,《 Peak: Secrets From The New Science Of Expertise》一书的作者所说的有目的的实践。
不要误会我的意思:有目的的练习非常好。这是刻意练习的基础。但有一个关键的区别。正如爱立信在Peak中所写:
刻意练习是有目的的练习,知道它要去哪里以及如何到达那里。
换句话说,刻意练习是一个有目的的练习程序,旨在将你从新手变成大师。
设计这个词非常重要。
程序员可以刻意练习吗?
为了使刻意练习成为一种选择,需要存在三件事:
- 一个普遍接受和客观的掌握概念
- 了解一个人如何达到精通
- 一套经过验证的技术,可用于精通
这就是为什么刻意练习在音乐和田径等活动中如此普遍的原因。掌握有一个明确的标准,尤其是在田径运动中。在跑步和游泳等单项运动中,可以通过在指定时间内持续表现来客观地衡量掌握程度。
一个好的教练可以设计——又是那个词——为个别运动员量身定制的计划,利用数百年来收集的关于什么有效,什么无效的知识。
软件工程呢?
对于掌握软件工程意味着什么,没有统一的定义。如果你不能定义它,你怎么知道掌握是什么样的?您如何为未定义的目标设计练习计划?你不能。从最严格的意义上讲,刻意练习几乎是不可能的。
也许我们在这里撒的网太广了。
与其关注整个软件工程,不如关注个人技能。
程序员可以刻意练习哪些技能?
软件工程技能分为两类:
- 身体技能,例如触摸打字和掌握键盘快捷键。
- 智力技能,例如语法、数据结构、算法、架构、调试和问题解决。
身体技能非常适合刻意练习。
触摸打字就是一个很好的例子。有一些很棒的免费工具可以刻意练习,包括TypingClub和typing.io 。在我看来,每个专业的程序员都应该掌握它。
刻意练习的智力技能更具挑战性。
主要挑战是反馈。
为了使刻意练习发挥作用,您需要确定您在哪里挣扎并制定改进计划。语法可能是最容易获得反馈的智力技能,因为编译器和解释器可以告诉你什么时候语法不正确。静态分析工具,如 linter,也可以提供帮助。
但是语法正确的代码不一定是好的代码。而且要获得关于软件架构和问题解决等方面的反馈要困难得多。
代码审查可以提供帮助,但工作中代码审查的目标是成功交付产品,而不是帮助您掌握编程。代码审查员并不总是最好的教练。
你如何刻意练习编程?
专注于身体技能、语法和工具。
刻意练习的目标是发展心智模型。心智模型有助于将工作记忆在编码过程中所做的一些工作转移到“肌肉记忆”中。
将诸如触摸打字、键盘快捷键以及常用语法和 git 命令等技能转移到肌肉记忆中意味着您将在它们上花费更少的精力,并且在编码时遇到更少的中断。
找出你的弱点
第一步是评估您当前的表现并确定阻碍您前进的因素。
是否有您遇到困难的语法或每次需要时都必须查找的一系列 git 命令?这些都是刻意练习的好人选。
制定实践计划
我不会撒谎的。教练或导师对这一步非常有帮助。但是,在某些情况下,您可以制定自己的计划。
例如,如果您在 Python 中遇到列表推导,您可以在 GitHub 上搜索for
循环的示例,并练习将它们重写为推导。如果您在 git 中处理合并冲突时遇到困难,您可以派生一个 repo 并练习创建合并冲突并解决它们。
但是一个精心设计的计划——这个词不断出现! ——不仅仅是重复。
设定可衡量的目标
一个好的计划会设定清晰、可衡量的目标,并包括旨在避免常见误解的练习。
对于某些任务,例如练习键盘快捷键或for
循环重构为列表推导,您可以设置时间目标。为自己创建场景并记录完成它们需要多长时间。然后努力减少你的时间。
您还可以减少键入代码时出现的语法错误数量,或减少使用工具时查找内容的次数。
反思你的表现
如果您真的想提高一个档次,请在练习时录制屏幕并花时间查看录音。注意你在哪里放慢了速度,以及你遇到了什么样的事情。
刻意练习很难。它需要大量的注意力和注意力。但是,如果精通是您的目标,那么这是实现目标的最佳方式。
想了解更多关于刻意练习的信息吗?
查看 K. Anders Ericsson 的著作《 Peak: Secrets from the New Science of Expertise》 。
对于特定于编码的主题,包括对心理模型和实践技术的深入处理,我强烈推荐 Felienne Hermann 的书The Programmer’s Brain 。
想要更多这样的吗?
每周六发送一封电子邮件,其中包含一个可操作的提示。
总是少于你的 5 分钟。
现在订阅
@goodstudio 通过 Canva.com 创作的作品
原文: https://davidamos.dev/the-secret-to-mastering-programming/