3

编程不是动作反复练习的kata

 1 year ago
source link: https://www.jdon.com/67024.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

编程不是动作反复练习的kata

你想成为更好的程序员吗?然后练习。这与成为更好的音乐家、更好的运动员(女性)、更好的厨师、更好的艺术家等没有什么不同。

你如何练习编程?

有很多方法。做编程kata卡塔是一种方法。

kata这个词来自于武术练习。在武术中,人们一遍又一遍地重复相同的动作,以建立肌肉记忆。

kata=重复会产生改进。

有些人从字面上翻译了这个概念。
他们试图通过一次又一次地做同样的练习来做编程kata,却没有任何变化。几天或几周后,他们就停止了,因为他们看不出有什么意义。

这也难怪。我也不能。

编程和软件设计主要是一种智力(也许还有艺术)方面的努力。
除非你不能接触打字,否则几乎没有必要建立肌肉记忆。
你训练你的大脑与你训练你的肌肉不同。

重复会使大脑麻木;变化才会刺激它。

建议催生变化 
我发现,做 "kata卡塔 "是一个探索替代方案的好机会。卡塔kata通常是一个有限的练习,这意味着你可以做多次并比较结果。

你可以在互联网上找到各种卡塔kata列表。我最喜欢的一个是 Coding Dojo

ParisDojo专注于在很短的时间内(1 到 1.5 小时)在他人面前编写代码,通常是从头开始编写代码他们使用各种语言、各种工具、各种练习形式。当在指定时间内完成并且观众可以自己在家重复练习时,他们认为练习的结果是成功的。

当我第一次遇到一个我从未做过的Kata卡塔时,我会尽可能不费吹灰之力地完成它。
我使用我最熟悉的编程语言,并且不尝试任何特技。

大多数好的卡塔kata都含有小的惊喜。它们听起来可能比实际情况要简单得多。另一方面,它们通常并不具有压倒性的难度。
要克服卡塔可能带来的惊喜,而不要因为尝试一些壮举而陷入困境。

一旦你对练习的本质感到满意,就引入变化。我使用的大多数变化都是以某种约束的形式出现的。约束是一种解放。少即是多。

以下是建议列表:

  • 遵循测试驱动开发(TDD)。这是我通常的练习手法,但如果您通常不练习 TDD,那么卡塔是一个很好的机会。
  • 将(Gollum 风格)Devil's Advocate技术与 TDD 结合使用。
  • 遵循转换优先级前提
  • 在没有模拟的情况下进行 TDD。
  • 用 mocks 做 TDD。
  • 使用测试数据生成器设计模式
  • 尝试基于属性的测试
  • 把你的鼠标拿开。
  • 在编辑器或 IDE 中隐藏文件树。在 Visual Studio 中,这称为Solution Explorer,在 Visual Studio Code 中它只是Explorer。通过其他方式浏览代码。
  • 使用其他编辑器或 IDE。
  • 使用另一种编程语言。型是练习一门新语言的好方法。当你学习一门新语言时,你经常会遇到不熟悉的语法,这就是我建议你先用一种你熟悉的语言来练习型的原因。
  • 仅使用不可变数据结构。这是学习函数式编程的良好开端。
  • 将所有方法的圈复杂度保持在1。
  • 使用不熟悉的 API。如果您通常使用NUnit,那么试试xUnit.net。使用新的 Test Double 库。使用不同的断言库。
  • 采用您想更好地理解的设计模式。我在Visitor设计模式 方面取得了特别的成功。
  • 将现有的 kata 解决方案重构为另一个设计。
  • 重构另一个程序员的kata解决方案。
  • 对kata进行配对编程。
  • 结对编程时使用乒乓模式。
  • 对其进行移动编程。

我喜欢卡塔的一点是它们足够小,你可以多次做同样的练习,但设计不同。这使得学习新的做事方式变得容易,因为您可以比较解决同一问题的不同方法。

重复使大脑迟钝,而变化则刺激它。Katas 很棒,因为它们是简短的练习,但您必须有意识地引入多样性才能使它们适合您。你不是在建立肌肉记忆,而是在形成新的神经通路。



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK