Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

掌握编程的秘诀

Posted on 2022-11-05

掌握编程的秘诀

本文包含附属链接。有关更多信息,请参阅我的附属公司披露。

提高编程能力的最好方法是大量编程。正确的?

并不真地。但是,是的。为了在任何事情上做得更好,你确实需要经常练习。但并非所有练习都是平等的。如果你不刻意练习,没有明确的目标和衡量成功的系统,你就会陷入停滞状态。

但是刻意练习对于编码来说是什么样的呢?

✉️
这篇文章最初发表在我对代码的好奇时事通讯中。永远不要错过任何问题。在这里订阅→

什么是刻意练习?

有很多关于编程的刻意练习的内容。

我在研究这篇文章时搜索了“程序员的刻意练习”这个词,得到了 1.03 亿条结果。

我看到的顶级文章给出了很好的建议,归结为五个关键步骤:

  1. 将任务解构为更小的子任务。
  2. 确定每个子任务的成功衡量标准。
  3. 练习子任务。
  4. 获得反馈并反思您的表现。
  5. 根据反馈进行调整并重复,直到达到目标。

这是一个很好的食谱,如果做得好,它就会起作用。尤其是当你有一个良好的反馈系统时。

但这不是刻意练习。

这种方法就是心理学家 K. Anders Ericsson,《 Peak: Secrets From The New Science Of Expertise》一书的作者所说的有目的的实践。

不要误会我的意思:有目的的练习非常好。这是刻意练习的基础。但有一个关键的区别。正如爱立信在Peak中所写:

刻意练习是有目的的练习,知道它要去哪里以及如何到达那里。

换句话说,刻意练习是一个有目的的练习程序,旨在将你从新手变成大师。

设计这个词非常重要。

程序员可以刻意练习吗?

为了使刻意练习成为一种选择,需要存在三件事:

  1. 一个普遍接受和客观的掌握概念
  2. 了解一个人如何达到精通
  3. 一套经过验证的技术,可用于精通

这就是为什么刻意练习在音乐和田径等活动中如此普遍的原因。掌握有一个明确的标准,尤其是在田径运动中。在跑步和游泳等单项运动中,可以通过在指定时间内持续表现来客观地衡量掌握程度。

一个好的教练可以设计——又是那个词——为个别运动员量身定制的计划,利用数百年来收集的关于什么有效,什么无效的知识。

软件工程呢?

对于掌握软件工程意味着什么,没有统一的定义。如果你不能定义它,你怎么知道掌握是什么样的?您如何为未定义的目标设计练习计划?你不能。从最严格的意义上讲,刻意练习几乎是不可能的。

也许我们在这里撒的网太广了。

与其关注整个软件工程,不如关注个人技能。

程序员可以刻意练习哪些技能?

软件工程技能分为两类:

  1. 身体技能,例如触摸打字和掌握键盘快捷键。
  2. 智力技能,例如语法、数据结构、算法、架构、调试和问题解决。

身体技能非常适合刻意练习。

触摸打字就是一个很好的例子。有一些很棒的免费工具可以刻意练习,包括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/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme