战神4 幕后花絮 概念艺术
在我们最近的文章中 ,我们讨论了Exercism,这是一个开放源代码项目,旨在通过数十种不同编程语言的练习来帮助人们提高其编程技能。 从业人员完成每项练习,然后收到有关其响应的反馈,使他们能够从同龄人的经验中学习。
卡特里娜·欧文 ( Katrina Owen)是运动主义的创始人,我采访了她作为原始文章的研究对象。 在这里有一些很棒的信息和见解,我们希望与对学习编程,教学编程以及这样的项目如何从他人的贡献中感兴趣的任何人分享。
锻炼看起来很棒! 有多少人在使用它?
数据库中有125,000人。 其中,自2013年启动该项目以来,约有2.9万个项目实际提交了解决方案,有1.5万个项目对解决方案发表了评论。 GitHub上有1,000人为该项目做出了贡献。 运动有33种有效的语言轨道,还有22种正在或正在被请求但尚未开始的语言轨道。
根据Google Analytics(分析),我们每月有50,000名访客,每周12,000名访客,他们来自201个不同的国家。
是否有使用运动训练的学习机构?
是的,显然是吨! 我随机碰到一位法国教授,他说他和OCaml学生一起使用运动。 许多训练营都使用它,包括Fullstack , Turing , gSchool , IronYard , Ada Academy , Flatiron学校 , DaVinci Coders , General Assembly等。 我不知道他们如何正式使用它。 它是课程的一部分吗? 或者只是他们向学生建议的东西。 我不知道。 耶鲁大学IT部门的一个人说,他正在使用它进行夏季编程课程。
所有的运动社区都有贡献吗? 新练习的标准是什么?
是。 我创建或获取了前30个左右的源,并在Ruby中实现了它们,然后社区又贡献了70个练习,此后,他们以50种语言提供了实现。
每次练习都必须是一个不涉及实际技术的琐碎问题(没有Web服务器,没有数据库等)。
练习不需要讲授特定的概念。 我们的目标是练习,而不是任何事情,因此我们需要给人们足够的东西来练习,而又不会感到无聊。 我们不赞成我提出的一些早期问题,因为它们彼此之间太相似了。 任何新的练习应与现有问题足够不同。
有时语言具有难以学习的功能,因此我们提供了一些练习,让我们一次用该语言介绍一种功能。 之后,其他语言将作为练习来实施该练习,而不是因为它涉及特定的语言功能。
在完成当前练习之前,学习者无法继续进行下一个练习。 “完成”是什么意思? 刚提交?
他们必须提交解决方案,到那时,如果他们再次“练习取回”,他们将获得下一个练习。 因此,从技术上讲,您实际上并不需要学习任何东西,您可以提交评论,也可以完全跳过练习(我们在命令行客户端中有一个命令)。
运动的灵魂是发现与合作。 这是旅途与目的地之类的事情。 如果您放慢脚步并进行探索,锻炼是最有价值的。 采取行动似乎是要尽快完成许多锻炼的人所得到的好处要少得多。
我们还没有引入游戏化,因为这倾向于鼓励错误的行为类型(游戏化统计数据,匆忙完成)。 并不是说某些微妙或经过深思熟虑的游戏化形式并不是产品的重要补充,但它是危险的地方,弄错了会造成灾难性的后果,并且完全避免它是更安全的。
有许多方法可以减慢速度并从过程中获得更多价值:
- 针对同一问题尝试不同的方法和解决方案
- 如果使用标准库函数,请阅读该库的所有文档。
- 如果您无法解释某事的工作原理,请充分学习以撰写有关此事的博客文章。
有些人继续前进,进行其他练习,然后稍后再尝试其他尝试。 提交者是否需要等待某人查看其提交的内容以提交更新的版本?
不会。许多人会提交其他解决方案,在其他解决方案中四处浏览,以了解其他人所做的事情,从中学到东西,然后提交新的解决方案。 审阅者有时会查看三个迭代,然后对最后一个进行评论,说“我喜欢这里的进度”或“我认为您的第二个迭代比该迭代更具可读性”或最有意义的东西。
为了使整个过程正常进行,必须同时有提交者和审阅者。 您在找人进行评论和提供反馈时遇到任何问题吗?
是的,这是一个很大的问题。 提供反馈要比编写代码难得多。
我认为人们可能不会给出反馈的三个原因是:
- 对我有什么用? 人们可能认为他们不会从中得到任何收益,但这是一种强大的学习体验。 您被迫表达直觉,检查自己的假设,习惯和偏见。 当人们与您(特别是聪明的人)不同意时,您会开始假设他们所说的话是有道理的,然后您基于他们的经验使他们得出结论,这使他们想知道对他们来说什么是正确的。 因此,您从提供反馈中学到的东西要比练习多得多。 但是,除非您亲自体验它,否则您永远不会知道(或相信它),要体验它,您需要克服实际操作的障碍。
- 太可怕了。 与编写代码相比,您真正投入的甚至更多。 许多人担心他们会被嘲笑或说一些愚蠢的事情。 该站点上的许多人对编程来说是相当陌生的,而不仅仅是所讨论的编程语言的初学者。 容易想到“反正我知道什么?” 或“我该告诉谁更好?” 克服这一障碍的秘诀就是走进去观察并提出问题。 “哦,我不知道你能做XYZ,整洁!” 或“我不明白这件事是如何工作的?您能解释一下吗?” 或者“我花了很长时间才弄清楚这三行在做什么。”有没有办法使它更具可读性? 或“这只是我需要习惯的成语吗?”
- 很多人看着代码,然后看到...代码。 很难知道该说什么或该找什么。 我们在识别代码气味方面没有接受大量的培训,因此我们可以凝视代码而实际上不知道该说些什么。
我看到两种解决反馈不足问题的方法。
首先是提供有关如何提供反馈的学习材料。
大约一年前,我做了一个实验,在那里我为Go跟踪中的一个练习建立了一个“代码气味实验室”。 它对人们通常做的事情有大约12种不同的解决方案,然后针对每个示例,要求读者考虑他们可能在代码中指出的内容。 之后,它收到了其他人的许多评论,人们通常会在其中一种解决方案上说些话。 它要求该人考虑他们是否同意,将其与他们的想法进行比较,然后详细讨论您可能谈论的事情,包括指向每件事资源的指针。
这是很多工作,但是值得。 有几个人使用它来获得反馈的舒适性,并继续在整个赛道上提供反馈,而不仅仅是在练习中。
我们可以做的第二件事是对解决方案进行机器学习。 当您提交解决方案时,我们应该能够告诉您:“嘿,这确实与其他事情相似,这是提交给其他事情的评论。” 另外,我们应该能够告诉您:“去看看与您的确有真正区别的这些解决方案。” 然后他们可以查看这些解决方案,从中学习并开始对话。
您是否必须处理网站上的任何行为或社会问题?
少得令人惊讶。 几个人会变得非常紧张,并对所有内容做出回应或提供反馈,这有点像某个人挤你的空间,如果他们总是需要最后的话。
很多人无意间被嘲笑。 有人会超级指令:“做X!” “你错了!” 当然,没有对与错。 需要权衡。 有一些原因可能导致您不想选择Y。这使对话变得更加有趣,例如“我的经验XYZ”和“我看到很多人在做PRQ,这是博客文章”或“这是一些文档。” 因此,我们都可以学到很多有关代码的对话。 这也取决于提交代码的人的学习目标。 与只是第一次学习编程的人相比,精通某种语言的熟练程序员将需要不同类型的反馈。 这也取决于个人风格。
Wired将其称为“锻炼” ,它是“ 一个教会您如何编写足够好的代码以找到工作的站点 ”。 您对此有何看法?
运动是基于这样的思想,即使您的水平较低,也可以提高流利程度。 换句话说,您可能会精通编程语言的基本语法,惯用语,约定和标准库,而又无法解决该语言的实际问题。
这很关键:我专门针对运动水平的熟练程度,除非您已经是一名程序员并且知道如何进行实际操作,否则不会被雇用。
这整个流利程度和熟练程度是有用的,因为它释放了认知资源。 一旦掌握了基本水平的流利度,就可以提高您的熟练度,然后提高流利度。
语言猎人项目将流利度描述为:“半夜醒来时,脸上带着手电筒,您可以说什么。”
语言猎手描述了四个水平的能力 ,您可以在其中表达和理解:
- 非常简单,具体的想法; 例如“好音乐”或“喝酒”
- 简单,完整的句子; 例如,“我如何参加聚会?”
- 更复杂的描述性语言; 例如,讲一个关于聚会上发生的事情的故事。
- 复杂的政治,社会,经济主题; 例如,“当事方是非法的吗?”
现在,将其带回通常参加运动锻炼的三类人:
CodeNewbies:第一次学习编程的人。
- 练习不适合完全编程的初学者-该站点假定学生已使用其他资源来掌握基本知识。
- 他们正在学习的语言是偶然的,但我认为它通常是Ruby,Python,JavaScript,Java或C#。
- 他们感到不知所措,并且经常陷入困境。 他们已经完成了手持式教程,但是他们不知道从哪里开始自己做事。
- 锻炼可以带来很多小的收获,也可以发现知识空白,他们可以通过使用其他资源来弥补这些空白。
- 对他们最有用的反馈类型往往是相当苏格拉底式的,导致他们思考简单性,清晰度和良好地使用语言(基本语法,数据类型,核心库函数等)。
多元语言:正在使用新语言的程序员。
- 这些人通常需要学习用于新工作项目的语言,或者为切换到更有趣的工作做准备。
- 他们常常感到沮丧,因为他们习惯于通俗的流利语言,现在突然之间他们不得不非常专注于基本语法。
- 锻炼使他们能够快速掌握语法的流利程度,然后便可以轻松进入其他地方的真实世界。 奖励:他们熟悉使用新语言进行的测试。
- 对他们来说最有用的反馈类型是关于语言习语和约定,有时还涉及可读性和清晰度。
工匠:正在深入学习其主要语言的程序员。
- 通常,这是一个会花费数小时的同义词库来尝试为事物找到正确名称的人。
- 他们倾向于考虑代码的气味,复杂性,遗留代码,重构,代码审查,命名等。
- 锻炼可以使他们有一个探索这些事物的安全场所,并形成了一个关心人们的社区。
- 他们不想要反馈,而是想要就设计原理和想法进行深入细致的对话。
CodeNewbies和Polyglots都以低水平的熟练度为目标。 但是,对于CodeNewbies,到达那里的路径要更长一些,因为他们还需要学习基本的编程概念,而不仅仅是语法,库和约定。
工匠们不太适合高效率,低熟练度的模型,但它们对项目至关重要。 他们往往会提供出色的反馈,他们通常处于职业发展中的指导和领导技能(以技术为导向和以人为本)技能的位置,并且经常关心代码审查。
有什么计划将练习主义翻译成其他人类语言?
目前还没有,但是已经出现了好几次。 我收到了一些有关葡萄牙语的要求,一个是针对韩国的要求。
问题是我什至还没有解决过用户体验问题,在解决了问题之后,我想着手改善人们得到的反馈。 人工翻译远不及列表。
您告诉《连线》杂志,您想筹集资金来支付人们在该网站上工作的费用。 曾经发生过吗?
我终于开始这样做了。
我已经提交了一笔赠款申请,并且一直在与一家英国公司进行交谈,该公司的创始人以前曾对运动精神做出过贡献,并相信该项目。 如果我能筹集到足够的资金,这家公司将为我提供很大的折扣,以进行我们所需的设计工作。
如果我们没有获得赠款,我将研究赞助。 我的眼球如此之多,我想想一些为编程语言编写学习材料的出版公司可能希望与我合作。
您是否曾经让Bot Rikki参加其他运动?
是。 Rikki将在Go中的一些练习中提供反馈,并且即将开始在Crystal中提供反馈。
这必须要做很多工作。 是否有一个核心团队在不断努力?
是的,他们做了很多工作。 我们有很多人参与语言培训。 一个小的核心团队专注于命令行客户端,少数人积极参与该网站。
我认为,如果我们能够完成重新设计,则产品的产品方面将更具可维护性。 一个问题是,当用户体验混乱时,使用华丽的代码确实没有意义。 该网站真的很难做出贡献。 目前,我们有一堆没有设计经验的开发人员,他们就设计提出了建议。 这不是非常有生产力的状态。
您对运动的下一步有什么想法?
1.对课程和语言轨道的管理
2.赞助以资助正在进行的工作(开发,研讨会,市场营销等)
3.网站重新设计
4.研讨会和聚会工具包,将运动精神带入肉类空间
5.机器学习和AI( 机器人机器人Rikki )
我要做的第一件事是弄清楚所有课程内容的治理。 我想把它交给社区。 它已经大部分掌握在社区手中,但是我想对其进行形式化。
最近,我一直在思考运动的健康和状况 。 我花了一些时间和精力思考如何使项目更健康,以及如何帮助贡献者和维护者更快乐。
特别是,我想创建一个工作组(一个短期的,有时间限制的工作组),其明确目标是建议一个结构,以更好地管理练习语言的轨迹。
我希望这个工作组考虑如何使所有活动的轨道具有三个或四个活动的维护者,以及有关如何进行以下操作的建议:
- 寻找新的参与者(使用聚会,会议,博客文章,讲习班,闪电演讲,截屏视频或完全使用其他方式)
- 指导和鼓励贡献者,以增加贡献的频率
- 从现有贡献者中提名新的语言维护者
- 使维护者对锻炼更加快乐和兴奋(使用自定义赃物,赞助,以便我们可以将维护者带到相关的会议,无论其他方面如何精巧或酷炫)
- 帮助维护者将他们在Exercism上的工作与他们的声誉或网络联系起来(例如,如果他们想在会议上发表演讲,写博客文章或制作其他人工制品)
- 开展项目(即停止成为语言领域的积极维护者)
- 如何用信号通知未积极维护语言轨道,以及如何打开或关闭轨道(即维护和未维护)
理想情况下,我希望找到一种方法,使每个语言轨道都得到可持续维护,没有人会冒着破产的风险,而且我们有足够的贡献者和维护者,这样他们就可以继续前进并完全做其他事情而不会感到内。重新准备。
“车间”对我来说很有趣。 Node的核心维护者之一Ashley Williams于今年早些时候在柏林的RustFest上进行了一次以“运动主义”为课程的“ Rust入门”研讨会。 她说一切进展顺利。 人们非常兴奋。
我想尝试做更多的事情。
翻译自: https://opensource.com/article/17/1/interview-katrina-owen-founder-exercism
战神4 幕后花絮 概念艺术