1. 実践に基づいた学習

実践に基づいた Java 学習

CodeGym を心から愛する人もいれば、心から憎む人もいます。しかし、CodeGym の最も悪質な批評家でさえ、CodeGym には驚くほど膨大な数のタスクがあることにすぐに同意するでしょう。そして、それらが非常に多い理由は、CodeGym のすべてのトレーニングが基礎として実践を備えているためです。

プログラミングはスキルです。「私はプログラミングの仕方を知っています」とは誰も言いません。すべてのプログラマーは「私はプログラミングができます」と言います。それは水泳やチェスのような実践的なスキルです。そして、そのスキルは継続的な練習によってのみ培うことができます。

そのため、CodeGym コース全体は、ますます困難なタスクの連続になります。非常に簡単で原始的なタスクから始めて、最も難しくて興味深いタスクで終わります。レベルが上がるごとに難易度は少しずつ上がります。これはまさに、プログラマーになるという目標につながる道です。


2. タスクの種類

CodeGym では、さまざまな種類のタスクがたくさんあなたを待っています。主なものを列挙してみましょう。

プログラムを書くタスク

これらはコースの中で最も重要なタスクです。最も単純なタスクから、深く考えなければならないタスクまで、難易度はさまざまです。

これらのタスクの目標は、指定された条件と要件を満たすプログラムを作成することです。ほとんどのタスクはこのカテゴリに分類されます。CodeGym の学生の便宜を図るため、これらのタスクを難易度に応じてEASYMEDIUMHARDEPICとマークします。

EPIC タスクは多くの場合、まだロックを解除していないレッスンの今後の学習教材に基づいています。コースが簡単すぎると感じている CodeGym の学生に人気があります。他の人は、単にこれらのタスクをスキップし、関連する理論にすでに慣れてきたときに、後でそれらのタスクに戻ることができます。

プロジェクト

通常のタスクの欠点は、タスクが小さいことです。彼らが言うように、終わって忘れられました。したがって、非常に興味深いものにすることはほとんどできません。しかし、大規模なプログラムはテストが困難です。プログラムを実装する方法が多すぎるためです。

これが、CodeGym がプロジェクト タスク(大きなタスクを 5 ~ 35 の通常のサブタスクに分割する) を導入した理由です。すべてのサブタスクを順番に実行すると、最終的には大きなプログラムが作成されます。

レベル 20 以降の各レベルの最後には、20 のサブタスクに分割された 1 つの大きなプロジェクト タスクがあります。他に 6 つのゲーム タスクがあり、これもプロジェクトです。そして、オンライン インターンシップに受け入れられるためのプロジェクト タスクが 1 つあります。コース全体には合計 27 のプロジェクト タスクがあります。

クイズ

長い間、CodeGym にはテストやクイズがありませんでした。CodeGym の作成者は、テストに合格すると人々に「知識の錯覚」が生じるという意見を持っています。人々はプログラミングの方法を実際には知りませんが、テストに合格したため、そうではないと完全に確信しています。そのような人は、「すでにすべてを知っている」ため、学ぶことをやめます。

その後、CodeGym の学生が学習のギャップを簡単に特定できるようにクイズが追加されました。プログラマーにとって、職業上日常的に扱うものの微妙な違いを知ることは役に立ちます。


3. タスクのステータス

CodeGym の各タスクには特別なステータスがあります。タスクを解決するとステータスが変化することがあります。

CodeGym の各タスクはレッスンに関連付けられています。最初はどのタスクにもアクセスできないため、タスクを解決することはできません。

次のレッスンを開くと、レッスン内のすべてのタスクが解決できるようになります。つまり、タスクのステータスが「利用可能」に変わります。

検証のためにタスクを少なくとも 1 回送信すると、そのステータスは「利用可能」から「進行中」に変わります。

最後に、すべての要件を正常に満たし、バリデーターが送信を受け入れると、タスクのステータスが「完了」に変わります。

プレミアム メンター サブスクリプションを持つユーザーは、さらに 3 日間、タスクに対する他のソリューションの作成を試みることができます。この追加の時間が経過すると、タスクは「クローズ」ステータスに移行し、このステータスは変更されなくなります。


4. 要件

CodeGym の初期には、各タスクを検証すると、「はい」か「いいえ」という単純な結果が得られました。プログラムはすべてのテストに合格したか、合格しませんでした。非常にシンプルですが、あまり役に立ちません。

人々が学習する際には、自分が間違っていることと、それを正しく始める方法を理解することが非常に重要です。したがって、サーバーがソリューションを受け入れない場合、 「何が問題なのか?」と尋ねるのは完全に理にかなっています。

この質問に対する答えを得るには、ソリューションを詳しく調べて分析し、何が問題なのかを教えてくれる人が必要です。これには長い時間がかかり、費用もかかります。タスクの即時検証の利点は、午前 2 時に座って勉強することができ、他の時間と同じように作業できることです。

そのため、CodeGym 上のすべてのタスクを書き直しました。各タスクにはタスク条件だけでなく、条件を具体化する 5 ~ 10 個の要件のリストも含まれるようになりました。最も重要なのは、各要件が個別に検証されることです。

つまり、今日検証のためにタスクを送信すると、拡張応答が得られます。各タスク要件の横に、プログラムがこの要件を満たしているかどうかを示す特別なアイコンが表示されます。例:

要件

このアプローチにより、複数のクラスまたはメソッドを作成する必要があるタスクに取り組む作業が大幅に簡素化されます。どのメソッドやクラスが正しく記述できたのか、どのメソッドやクラスが正しく記述できなかったのかを常に確認できます。


5. 推奨事項

どうにかしてタスクをさらに改善することはできないでしょうか? 各チェックの後に、プログラムの正確な問題点が示され、それを修正する方法についてのヒントが得られたら素晴らしいと思いませんか? はい、それはクールですね!さて、どうでしょうか?CodeGym ではまさにそれを行っています 🙂

各タスクの要件を確認することで、よくある多数の間違いを発見します。プログラムにバリデーターが認識している間違いがある場合、バリデーターは推奨事項、つまり、すべての要件を満たすようにソリューションを修正する方法に関するヒントを作成します。

考えてみてください。現在、CodeGym には約 1200 のタスクがあり、合計約 10,000 の要件があります。そして、各要件に関連する推奨事項がいくつかあります。一部の要件には数十もの要件があります。CodeGym のバリデーターは、ユーザー ソリューションに対して 50,000 を超える推奨事項を作成する準備ができています。

さらに、これらすべてはソリューションの検証時に行われ、ほとんどの場合、1 秒もかかりません。そんなことは誰にもできません。これは本物の仮想メンターです。

推奨事項

6. コミュニティ

CodeGym は、学習プロセス全体の80%以上を占める大量の練習に重点を置いています。私たちは学習を、壮大で魅力的なクエスト (実際には一連のクエスト) に変えました。

しかし、人それぞれ異なります。すぐに学ぶ人もいれば、ゆっくり学ぶ人もいます。新しい教材を簡単だと感じる人もいれば、より難しいと感じる人もいます。しかし、私たちの仕事は生徒一人ひとりがゴールラインに到着することです。少なくともそれが私たちが目指していることです。

この世界では、プログラマーはさまざまな言語でコードを書き、自由な時間にスタートアップを立ち上げる数百万人の人々だけではありません。彼らはグローバルなネットワークを形成し、常に知識を他の人と共有し、質問に答え、複雑なトピックの理解を助けます。

世界最大の開発者コミュニティであるStackOverflow Web サイトは、プログラマーが互いに学び合う必要性から生まれました。そのコンセプトはシンプルです。質問をすれば、世界中のプログラマーがそれに答えることができます。便利ですよね?🙂

CodeGym では、学生間の知識の交換は非常に価値があると考えています。プログラマーは他の人を助けることで、プログラマー自身も成長します。そして、自分自身で何かを理解するには、他の人に説明するより良い方法はありません。そのため、私たちはウェブサイト上に特別なセクションを作成し、すべての生徒に知識を共有し、お互いの学習を助け合う機会を提供できるように設計しました。

では、最新のタスクで行き詰まった場合はどうすればよいでしょうか? インターネットで既成のソリューションを探すのは得策ではありません。もちろん、他の人のソリューションをコピーするか、当社の正しいソリューションを使用するだけであれば、そのタスクの功績は認められます。しかし、知識のギャップは埋まりませんし、それは将来必ず自分のお尻に刺さることになります。


7. タスクに関する質問

要件、推奨事項仮想メンターは非常クールです。しかし、それでもバリデーターが解決策を受け入れず、問題が何なのかわからない場合はどうすればよいでしょうか?

この場合でも、まだ解決策はあります。ヘルプセクションをご覧ください。Web サイトのこのセクションでは、CodeGym の学生はタスクについて質問したり、お互いの解決策を模索したり、アドバイスやヒントを提供したりできます。完全な解決策を投稿することは許可されていません。

とてもシンプルで基本的なように聞こえますが、実際には非常に洗練されています。

まず、各質問にはタスクを関連付けることができます。これは、特定のタスクに関する質問に興味がある場合、すべての質問に目を通すことに意味がないことを意味します。フィルターを使用すると、いつでも興味のあるタスクに関連する質問だけを簡単に表示できます。検索バーにタスク名を入力するだけです。

タスクに関する質問

次に、タスクを解決しているときに [コミュニティ ヘルプ] ボタンをクリックすると、すぐにヘルプ セクションに移動し、作業中のタスクに関する質問のみが表示されます。ソリューションがタスク検証に失敗した場合、質問は役立つ方法で並べ替えられます。上位の質問は、ソリューションが失敗する原因となった満たされていない要件に関するものになります。

ヘルプボタン

3 番目に、IntelliJ IDEAプラグインは同様の機能を提供します。[ヘルプ] ボタンをクリックするか、Ctrl+Alt+W キーの組み合わせを押すと、ブラウザでヘルプ セクションがすぐに開きます。そしてもちろん、フィルターにはIntelliJ IDEAで解決しているタスクに関する質問のみが表示されます。

IntelliJ IDEA ヘルプ

8. 質問の作成

ヘルプ セクションでエラーの適切な分析が見つからない場合は、いつでも独自の質問を作成できます。これは非常に簡単です。「質問する」ボタンをクリックして必須フィールドに入力するだけです。

質問の作成

StackOverflow、Code Ranch などの他の多くのサービスとは異なり、CodeGym では質問のタイトルにすべての重要な情報を詰め込む必要はありません。好きなように質問を書いてください。

ちなみに、WebIDEIntelliJ IDEAからコードをコピーして質問に追加する必要はありません。タスクに関する質問を作成すると、ソリューションのコードとさまざまなタスク要件のステータス (つまり、ソリューションが現在満たしている要件と満たしていない要件) が自動的に質問に追加されます。

質問の作成 2

これは、他の CodeGym 学生が質問者の解決策に関するすべての関連情報をすぐに確認できることを意味し、適切なアドバイスを提供することがはるかに容易になります。


9. 解決策コード

多くのサイトでは、コードに関する質問を作成するときに、プログラム ファイルを含むアーカイブを質問に添付するか、これらすべてのファイルを質問自体のテキストに追加する必要があります。その結果、人々は深く掘り下げることを望まないか、掘り下げることができないほどの大混乱が生じます。

迅速かつ効率的に質問することは、芸術のひとつの形です。通常の Web サイトでは、30 分かけて質問をまとめるか、誰も答えてくれないという事実を受け入れる必要があります。タスクに関する適切な質問には、必ず次の情報が含まれている必要があります。

  • 質問者が解決しているタスクへのリンク
  • タスクの条件により、他の人がどこへでも追い詰める必要がなくなります
  • ソリューション コード - これには多くのファイルが含まれる可能性があります
  • 各タスク要件のステータス、つまり現在機能しているものと機能していないもの。
  • 質問の本文: これは通常非常に明確です。私の解決策は機能しませんが、その理由はわかりません。

CodeGym は、 WebIDEウィジェットによく似た特別なウィジェットを使用してこの情報を表示します。結局のところ、すべての情報を表示するようにすでに設計されています。まあ、おそらく質問自体を除いて。

ソリューションコード

実際、他のユーザーのソリューションを検討するのに便利なように、特別なウィジェットを作成しました。また、他のユーザーがあなたの質問に対する解決策を簡単かつ快適に検討できるようにするためです。