一、学以致用

基于实践的Java学习

有人一心爱 CodeGym,也有人一心讨厌它。但即使是 CodeGym 最恶毒的批评者也会欣然同意它拥有数量惊人的任务。而之所以有这么多,是因为所有的 CodeGym 培训都是以实践为基础的

编程是一种技能。没有人说,“我知道如何编程”。每个程序员都说,“我会编程”。这是一项动手能力,就像游泳或下棋一样。而你只能通过不断的练习来培养技能。

这就是为什么整个 CodeGym 课程是一系列难度越来越大的任务。你从非常简单、原始的任务开始,然后以最困难、最有趣的任务结束。每个级别的难度都会增加一点。这正是引导您实现成为程序员的目标的途径。


2.任务类型

CodeGym 上有一大堆不同类型的任务等着您。让我们列出主要的:

编写程序的任务

这些是课程中最重要的任务。它们的难度级别差异很大:从最简单的任务到您需要考虑很多的任务。

这些任务的目标是编写满足指定条件和要求的程序。大多数任务都属于这一类。为了方便 CodeGym 学生,我们根据难度级别标记这些任务:EASYMEDIUMHARDEPIC

EPIC 任务通常基于您尚未解锁的课程中的未来学习材料。他们很受 CodeGym 学生的欢迎,他们觉得这门课程对他们来说太简单了。其他人可以简单地跳过这些任务,等他们已经熟悉了相关理论后再回来做。

项目

普通任务的缺点是它们很小。正如他们所说,完成并被遗忘。因此,很难使它们变得非常有趣。但是大型程序很难测试:实现它的方法太多了。

这就是 CodeGym 引入项目任务的原因— 大型任务分为 5-35 个普通子任务。您按顺序执行所有子任务,最终得到一个大型程序。

20级之后的每一级结束时,都有一个大型项目任务,分为二十个子任务。还有另外6个游戏任务,也是项目。并且有一个项目任务被接受为在线实习。整个课程总共有27个项目任务。

测验

很长一段时间,CodeGym 没有测试或小测验。CodeGym 的创建者认为,通过测试会在人们中产生“知识错觉”。人们并不真正知道如何编程,但他们完全相信否则,因为他们通过了测试。这样的人停止学习,因为“他们已经知道一切”。

随后,添加了测验,使 CodeGym 学生能够轻松找出他们学习中的差距。对于程序员来说,了解他们在职业中日常工作的细微差别是很有用的。


3.任务状态

CodeGym 上的每个任务都有一个特殊的状态。当您解决任务时,状态会发生变化。

每个 CodeGym 任务都与一节课相关联。最初,您将无法访问任何任务,这意味着您将无法解决它们。

当您打开下一课时,该课中的所有任务都可以解决,即它们的状态变为“可用”。

如果您至少提交过一次验证任务,则其状态会从“可用”变为“进行中”。

最后,当您成功满足所有要求并且验证器接受您的提交时,任务的状态将更改为“已完成”。

订阅 Premium Mentor 的用户还有 3 天时间尝试为该任务编写其他解决方案。在这个额外的时间窗口到期后,任务将进入“已关闭”状态,并且此状态将不再改变。


四、要求

在 CodeGym 的早期,当您验证每项任务时,您会得到一个简单的结果:是或否。该程序要么通过了所有测试,要么没有通过。超级简单,但不是超级有用。

随着人们的学习,了解他们做错了什么以及如何开始做对是非常重要的。因此,如果服务器不接受您的解决方案,那么您会问,它有什么问题吗?

要得到这个问题的答案,您需要有人深入研究您的解决方案、分析它并告诉您它有什么问题。这将花费很长时间并且成本很高。即时任务验证的美妙之处在于,您可以在凌晨 2 点坐下来学习,一切都会像其他任何时间一样工作。

这就是我们在 CodeGym 上重写所有任务的原因。现在每个任务不仅有任务条件,还有 5-10 个充实条件的要求列表。最重要的是,每个需求都被单独验证。

这意味着当您今天提交一个任务进行验证时,您将得到一个扩展的响应:在每个任务要求旁边,您将看到一个特殊的图标,指示您的程序是否满足此要求。例子:

要求

当您处理需要编写多个类或方法的任务时,这种方法极大地简化了生活。您将始终能够看到您正确编写了哪些方法或类,哪些没有。


五、建议

是否有可能以某种方式使任务变得更好?如果在每次检查后,您都被告知程序中到底出了什么问题,并得到有关如何修复它的提示,那不是很好吗?是的,那会很酷!好吧,你猜怎么着?我们在 CodeGym 上就是这么做的 🙂

我们通过检查每个任务要求来发现许多常见错误。如果您的程序犯了验证器知道的错误,那么它会提出建议——提示您如何修复您的解决方案,使其满足所有要求。

想想看。现在 CodeGym 上大约有 1200 个任务,总共有大约 10,000 个需求。每个要求都有一些相关的建议。有些要求有几十个。CodeGym 的验证器已准备好为用户解决方案提出超过 50,000 条建议。

此外,所有这一切都是在您的解决方案得到验证时发生的,在大多数情况下,这需要不到一秒钟的时间。没有人能做到这一点。这是一个真正的虚拟导师。

建议

6.社区

CodeGym 专注于大量练习,占整个学习过程的80%以上。我们将学习变成了一项引人入胜的大探索(实际上是一系列探索)。

但每个人都不一样:有人学得快,有人学得慢。有些人觉得新材料很容易,而另一些人则觉得更难。但我们的工作是让每个学生都能到达终点。至少这是我们正在努力的目标。

在这个世界上,程序员不仅仅是几百万在空闲时间用各种语言编写代码并创建初创公司的人。他们形成了一个全球网络,不断与他人分享他们的知识,随时准备回答问题并帮助您理解复杂的主题。

世界上最大的开发人员社区——StackOverflow 网站——诞生于程序员相互学习的需要。它的概念很简单:你提出一个问题,世界上任何程序员都可以回答。方便吧?🙂

在 CodeGym,我们相信学生之间的知识交流非常有价值。当程序员帮助别人时,他们自己也会成长。没有比向别人解释某件事更好的方法来让自己理解它了。这就是为什么我们在我们的网站上创建了专门的部分,旨在让我们所有的学生有机会分享他们的知识并帮助彼此学习。

那么如果你在最新的任务上卡住了怎么办?在 Internet 上搜索现成的解决方案不是一个好主意。当然,如果您只是复制别人的解决方案或使用我们的正确解决方案,您将获得任务的荣誉。但是你不会缩小你的知识差距,这肯定会在未来回来咬你的屁股。


7.关于任务的问题

要求建议和虚拟导师非常酷但是,如果验证器仍然不接受您的解决方案并且您不确定问题出在哪里怎么办?

即使在这种情况下,还是有退路的。认识帮助部分。在网站的这一部分,CodeGym 学生可以提出有关任务的问题,探索彼此的解决方案,还可以提供建议和提示。不允许发布完整的解决方案!

这听起来非常简单和基本,但实际上非常复杂。

首先,每个问题都可以有一个关联的任务。这意味着如果您对有关特定任务的问题感兴趣,则没有必要费力地回答所有问题。您始终可以使用过滤器轻松地仅查看与您感兴趣的任务相关的问题。只需在搜索栏中输入任务名称:

关于任务的问题

其次,如果您在解决任务时单击“社区帮助”按钮,您将立即被带到“帮助”部分,在那里您只会看到有关您正在处理的任务的问题。如果您的解决方案未能通过任务验证,那么问题将以一种有用的方式进行排序:最重要的问题将与导致解决方案失败的未满足要求有关。

帮助按钮

第三,IntelliJ IDEA插件提供了类似的功能。您可以单击“帮助”按钮或按组合键 Ctrl+Alt+W,这将立即在您的浏览器中打开“帮助”部分。当然,过滤器将仅显示有关您在IntelliJ IDEA中解决的任务的问题。

IntelliJ IDEA 帮助

8. 创建一个问题

如果您在“帮助”部分找不到对您的错误的良好分析,那么您可以随时创建自己的问题。这很容易做到——您只需单击“提问”按钮并填写必填字段:

创建一个问题

与许多其他服务(例如 StackOverflow、Code Ranch 等)不同,CodeGym 不需要您将所有重要信息塞入问题的标题中。随心所欲地写下你的问题。

顺便说一下,您不需要从WebIDEIntelliJ IDEA复制代码并将其添加到您的问题中。当您创建有关任务的问题时,您的解决方案的代码以及各种任务要求的状态会自动添加到其中,即您的解决方案当前满足哪些要求,不满足哪些要求。

创建问题 2

这意味着其他 CodeGym 学生可以立即看到有关提问者解决方案的所有相关信息,从而更容易提供好的建议。


9.解法代码

在许多站点上,当创建有关代码的问题时,您需要将包含程序文件的存档附加到问题,或者将所有这些文件添加到问题本身的文本中。结果是一团糟,人们要么不愿意,要么不能深究。

快速有效地提出问题是一种完整的艺术形式。在常规网站上,您将不得不花半个小时来阐述您的问题,或者接受没有人会回答您的事实。一个关于任务的好问题绝对必须包含以下信息:

  • 链接到提问者正在解决的任务
  • 任务条件让其他人不需要去任何地方追捕他们
  • 解决方案代码——这可能包括许多文件
  • 每个任务要求的状态,即当前有效的和无效的。
  • 问题的文本:这通常很清楚——我的解决方案不起作用,我不确定为什么。

CodeGym 使用与WebIDE小部件非常相似的特殊小部件显示此信息。毕竟,它已经设计用于显示所有这些信息。好吧,也许问题本身除外。

解决方案代码

事实上,我们编写了一个专门的小部件,只是为了方便您研究其他用户的解决方案。并让其他用户轻松愉快地检查您提出的问题的解决方案。