Answers:
原则上,我看不到代码kata中的缺点。您尝试使用不同的方法和不同的语言多次完成同一任务。但
我认为编程kata就像武术kata一样,主要是关于形式而不是功能。它可能会教您编写精美的代码,但不会教您解决编写代码所要解决的问题。我认为,作为程序员的一种更好的改进方法是解决那些需要实际解决问题的难题,并致力于大型项目,这些项目将以代码kata永远不会教您的方式教会您精心构造的代码的价值。
顺便说一句,我认为像“代码kata”和“软件工艺”这样的术语更多地是关于使我们的职业浪漫化,而不是描述任何新颖或有用的东西。
代码kata只需要时间。
作为全职的开发人员和父亲,我不想让计算成为业余爱好。
而且我不认为老板会付钱给我开发与当前项目无关的应用程序。
作为拳击手,我不得不不同意kata背后的原理。它太死板了,无法实际使用。总之,您必须了解如何在自由流动的环境中应用所学的原理。
这并不是说不应该学习和改进该技术。练习手提袋可以使您像使用kata一样使用拳打和摸索如何扔袋。但这并不那么严格。您正在同时练习许多事情,在袋子中四处移动,从稳定的平台上投掷,瞄准,呼吸,这样的例子还在继续。
最重要的是,一切都将以实际使用的方式一起学习。如果您可以编写有史以来最漂亮的for循环,但不了解如何将其放入程序中,那么它有什么用呢?
我想说的是,如果您想练习,最好做的事情是建立自己的工具或使用自己使用的工具。它需要锻炼您的所有技能,最后您可能会有一些有用的东西。
从我的角度来看,主要缺点是它会非常无聊。程序员似乎也对开发有用或很棒的软件很感兴趣。代码kata方法似乎与此相反。
卡塔(Kata)意味着您应该追求的目标恰好相反。
一种由一系列武术特定动作组成的运动,用于训练并旨在展示技巧
武术中使用的Kata(起源:1950–55; <日语:形状,图案)一词,您的问题是关于记忆记忆的死记硬背,如触摸打字。
在最初的《空手道小子》中,给汽车打蜡,给地板打磨,给篱笆粉刷都是被教导的卡塔斯语,完全脱离了上下文,在这种情况下,没有任何解释只是为了提供肌肉记忆。直到有老师进场并给这些空洞的活动提供上下文,它们才有意义。
我认为同样的事情在这里适用,没有指导者将事情放到上下文中去做,以解决多种语言中的错误并不比一种更好。如果没有导师告诉您改进的地方,那是浪费时间。
这与通过学习语言或平台的习语和语义的新变化来创造性地解决问题的方式恰好相反。
如果您想System.out.println()
尽可能轻松地键入文字,那么练习那将是一种Kata。
如果你想提高在解决一个问题的不同实现,以减少时间和/或空间的要求或申请更多的惯用原则,即ISN 没有的东西,卡塔会帮助你。
业已存在一个公认的术语,即在已经努力争取小幅的增量改进和可疑的完美收益之后,一遍又一遍地重新实现同一事物,它被称为镀金!
当应用于相同的语言/运行时/平台时,它们应使用的术语是“ 重构”。并且在将工作程序移至其他语言/运行时/平台时进行移植。选择Kata可能是错误的选择,因为它听起来既时髦又酷又神秘,却没有完全理解其语义。
大多数开发人员(尤其是初级开发人员)每天要做的事情是,只需很少的计划,经验或指导,就可以解决各种难题。
只有学者才能反复研究相同的练习,只是为了寻求一种特定的解决方案。在开发人员方面取得成功的技能在于适应能力,而不是重复能力。
谁说没有聪明的人不需要下班后学习,而是可以在工作中的8小时内学到所有需要了解的知识,有时甚至还需要更多知识?
我同意隐喻“ kata”可能不是最好的。进行空手道搏斗是为了进行特定的,不连续的运动,直到可以完美,清晰,自动地执行它为止。这不能很好地转化为需要批判性思维和创造力的活动。(这将更好地转化为输入)。
也就是说,名称失败不是活动失败。练习某人想要变得更好的东西可能会有什么弊端?从机会成本的角度来看,我想可以说花时间做为一种缺点,但实际上,这是一项投资。因此,花在实践软件开发技巧上的时间是对软件开发人员而言,因为花在股票或债券上的钱是对长期的储蓄者/投资者而言。这不是“回扣”,而是赌注。
通过尝试困难而力所不能及的事情,您会变得更好;挑战自己。像武术形式一样,一遍又一遍地执行相同的“代码kata”不会这样做。我认为这会停滞您的能力,而不是帮助您提高技能。
第一次将其用作练习方法,但有一定局限性。我告诉人们改用Euler项目。更多问题,更具挑战性。
对我而言,该技术的主要缺点是它对您的时间的利用不足。
此练习的学习价值也值得怀疑:当您过度完成某件事以使其更好时,专家的反馈至关重要。没有高质量的反馈,您也会学到一些东西,但是有机会很好地学习错误的东西。
不要误会我的意思,练习仍然是变得擅长编程的唯一方法,而kata无疑是一种练习。但是,解决编码竞赛问题,编写自己的“有趣的项目”,学习新的编程语言等也是如此。最终,您需要选择最舒适的技术,并确保在使用过程中获得明确的指导。
我相信,如果没有某种形式的Kata,您将永远不是一个出色的编码人员。卡塔(Kata)是实践,这实际上是什么意思。举个例子:一名运动员说:“我会出现并跑100米短跑,用螺丝练习”。这听起来像是制胜法宝吗?难道曾经做过这样?
我建议人们阅读Bob叔叔的“ The Clean Coder ”,他深入探讨了编程领域的这个(和其他)专业知识主题。
哦,有人提出不能做卡塔和养家的论点只是借口。从经验上讲:孩子们在某个时候入睡...
编程是一门艺术,就像绘画或音乐一样。当某人成为金钱的音乐家或艺术家时,您可以说,没有灵感,这种表演并不值得您花时间。如果您热衷于艺术,那么任何事情都不会阻止您练习和不断完善它-每天都在完善一种技术,并注意到大多数人永远看不到的细微差别。
人们总是乐于当酒吧音乐家和室内画家,但他们是完全不同的才能。我想大多数房屋画家会嘲笑实践的想法,但是我敢打赌,从事研究和实践技术的画家-本质上将他们的工作视为艺术会做得明显更好,即使在像平凡的房子上画漆一样。
有些人会意识到一些做法的价值。如果您可以评估并且正在寻找可以制作艺术的人(精简,简单,可理解的代码),而不仅仅是解决方案,那么这本身就是有价值的。
ps。我并不是在称呼自己具有艺术性或其他任何东西-我不对抽象问题进行Kata评估,但我认识到了价值所在,并且确实尝试了一些重构我的生产代码。