「こんにちは、アミーゴ、私のマイフレンド (何回も言ってごめんね!)。ところで、'トレーニングに汗を流せば流すほど、戦争で流す血は少なくなる' ということわざを耳にしたことはあるかい?

「その言葉の言うとおり。でも、学びの道は厳しいものじゃ!きみはプログラマーという専門職をマスターしようとしておる。職種を大幅に替えることになるのではないだろうか。」

「CodeGym ではたくさんのエクササイズが用意されておる。学習プロセスのなんと 80% を占めておるんじゃ。」

「我々はこれを大きな楽しいクエストとして制作した (実際には多くのクエストが 1 つのシリーズになっておる)。でも、学習のペースは人それぞれ。早い人がおれば、遅い人もおる。新しい内容をいとも簡単にマスターできる人がいれば、それに苦労する人もおる。だが、我々の仕事はすべての生徒を目標達成に導くことじゃ。」

「でも、教授。どれだけ頑張っても次のタスクの答えが分からないとか、次のトピックの説明を理解できないという場合はどうすればいいですか?」

「解決策はいたってシンプル。コミュニティに頼るんじゃ。コミュニティには、きみのような生徒や卒業生、先生、プロのディベロッパーなどがおる。

「プログラマーは数百万人と存在しておるが、ただ単に色々な言語でコードを書いたり、暇なときにスタートアップ企業を立ち上げたりしているだけじゃない。この者たちはグローバルネットワークを形成し、いつもお互いに知識を共有し合っておるのじゃ。いつも人からの質問に答え、複雑なトピックを理解しようとお互いを支え合っておる。」

「世界最大のディベロッパーコミュニティ StackOverflow のウェブサイトは、プログラマーがお互いに学び合う場を設けるという目的でスタートしたのじゃ。コンセプトは 「質問をすれば、世界中のどこかにいる誰かが答えてくれる」 というシンプルなもの。便利じゃろ?:)」

「ここ CodeGym では、生徒たちがお互いの知識を共有し合うことに大きな価値があると考えておる。プログラマーは他のプログラマーを助けることで、自分自身も個人的に成長することができるんじゃ (何かを理解するには、それを人に説明できるようになることが一番効果的なのだ)。」

だからこそ、我々は生徒たちが知識を共有し合い、学習過程を通じて助け合うための特別なセクションを設けておるのじゃ。

「では、タスクに行き詰まったらどうすればよいか。すでに完成しているソリューションをインターネットで探すのはグッドアイデアではない。見つけたら、クエストのクレジットはもらえるが、完全に理解できていない訳だから、間違いなく後で後悔することになる。本当の話じゃ。」

「積極的にヘルプのセクションを活用する方がずっといい。」

「使い方はいたって簡単。タスクの横にある 'ヘルプ' ボタンをクリックするだけでいいんじゃ。」

ヌードル教授が応援に駆けつけてくれました!- 1

「特定のレベルの特定のタスクを探しているときは、その名前を検索バーに入力すればよい。」

ヌードル教授が応援に駆けつけてくれました!- 2

「ドロップダウンリストから探しているクエストとレベルを選択することもできる。」

ヌードル教授が応援に駆けつけてくれました!- 3

「'解決済み' フィルターを選択すると、すでに CodeGym コミュニティによって回答されている質問が表示されるんじゃ。」

「質問をするときは、'質問をする' ボタンをクリックし、タスクへのリンクを添付してから、分からない問題について説明するとよい。」

ヘルプセクションに記載されている完成済みのコードをタスクの回答に使用することは禁止されているから気を付けるんじゃぞ。このセクションの目的は、自力で正しいソリューションを見つけるのに役立つヒントを出し合うことなんじゃ。タスクをスキップしたり、Google で完成済みのソリューションを見つけたりしないでタスクを完了させると、理解を固めることができると同時に、良い気分にもなれる。いいことばかりじゃ!:)」

「CodeGym で経験を積んだら、忘れずにヘルプセクションを活用するんじゃ!先ほども触れたが、何かを学ぶときは、その内容を人に説明するのが一番効果的なのじゃ。CodeGym できみを助けてくれた他の生徒と同じように、きみも他の生徒を助ければ、みんなが喜んでくれるにちがいない。'新規' フィルターを選択して、仲間のプログラマーたちが投稿している質問に答えてあげるだけでいいんじゃ。みんなから感謝されると同時に、もう一度そのトピックについて深く考えたり、他の人が書いたコードの詳細を見たりできるんじゃ (他の人のコードを理解することは、プログラマーにとって必須のスキルなんじゃ!)。

だが、CodeGym は勉強するだけの場所ではないんじゃ!他のプログラマーたちと交流したりもするんじゃよ (ビギナーもエキスパートもみんなで一緒に交流し合うんじゃ)。」

「人々はよくソーシャルネットワークでグループを作ってうまが合う人たちと交流しておるだろ。我々もこれはいいアイデアだと思って、サイト内にグループのセクションを作ったんじゃ。

「見てお分かりのとおり、グループのタイプは複数ある。それぞれ IT のさまざまな関心事に焦点を置いておるんじゃ (例えば、フロントエンドのディベロッパーとテスターを対象としたグループがある)。」

「それから、ウェブサイトには主なグループが 3 つあるから、忘れずに参加するんじゃぞ!

CodeGym グループでは、ウェブサイト、コンテスト、キャンペーンなどに関する最新ニューズを掲載しておる。ウェブサイトに関するすべての最新情報や変更内容はまずここに記載されることになっておる。」

ランダムグループには、IT 全般の面白い記事を公開しておる。その多くは我々の生徒や卒業生が書いておるんじゃ!ここでは新しいテクノロジーを探って視野を広げたり、書籍のレビューを見つけたり、仕事探しのコツを得たり、IT ジョークを読んでリラックスしたりできるんじゃ。:)」

「他にもリーダーボードのセクションがある。」

「すべてのタスクを無事に終了したら、いつか最高の生徒として名前が載るかもしれんぞ!:)」

Java デベロッパーグループでは、Java に関する面白い記事や他の教材、Java に関するニュースなどが記載されておる。」

「グループはまだ他にもあるぞ。CodeGym は新しいライターにとっても最高の場所なんじゃ!記事を書くと、何らかのトピックに関して深く考えて、それを頭の中で整理することができる。」

「なるほど、分かりました。練習することは理にかなっているということですね。でも、理論はどのような役割をしますか?」

「もちろん、理論も非常に大切なことじゃ。物理学者が論理的な知識を応用せずに、実験ばかりしていたんじゃ、それはそれで楽しいかもしれんがあまり役に立たんじゃろうな!プログラミングも例外じゃない。CodeGym では、主に練習することに重点を置いておる。それが、一番スピーディに成長する秘訣なんじゃ。しかし、他の情報ソース、主に書籍から知識を得ることもできるぞ (我々はそうすることを強く勧めておる!)」

「人はみんな違うからな。CodeGym で簡単なレッスンを 1 つ読むだけですぐに理解できてしまう人もいれば、他のソースから情報を集めて、それをまとめて、それから結論を出す方がやりやすい、と感じる人もおるじゃろう。」

「Java プログラミンについて書かれた最高傑作をいくつか紹介しよう。CodeGym での勉強と平行して読むとよい。これらの本の価値はかなり前から実証されておるから、絶対に時間やお金の無駄になるということはない。」

  1. 「Kathy Sierra、Bert Bates (著)、Head First Java - 頭とからだで覚える Java の基本」

    ヌードル教授が応援に駆けつけてくれました!- 4

    「間違いなく Java 初心者にとって最高の入門書じゃ!Head-First シリーズはさまざまなプログラミング言語について書かれておる。この著者は教材を独自のユニークな方法で提示しており、さっと簡単に読めるようになっておる。それに、本の中で直接コードを書いて、タスクができるんじゃ!」

    「CodeGym のレベルに関係なくいつ読み始めても OK。レベルゼロの生徒でも大丈夫。:)」


  2. 「Herbert Schildt (著):Java:The Complete Reference

    ヌードル教授が応援に駆けつけてくれました!- 5

    「この本も初心者向けじゃ。先ほどの本との主な違いは、学習内容の提示の仕方なんじゃ。この本ではより厳密に、一貫したかたちで提示されておる (このいわゆる '型にはまった' 提示の仕方を好む人は意外と多いんじゃ)。確かなメリットの 1 つとして、可能な限り詳しく、時には何度も繰り返して説明してくれる、という点が挙げられる。」


  3. 「Bruce Eckel (著)、Thinking in Java

    ヌードル教授が応援に駆けつけてくれました!- 6

    「これは Java プログラマーのバイブル的な本じゃ。大げさに言っているわけじゃないぞ。すべての Java プログラマーが読むべき 1 冊じゃ。かなり分厚い本で、それには理由がある。タイトルも軽々しく付けられた訳ではない。言語の特定のトピックについて説明するだけではないんじゃ。Java の哲学—そのイデオロギーや言語の開発者が時に他の言語とは異なる独自のアプローチをとった理由などが解説されておるんじゃ。」

    「完全な初心者向けではないが、CodeGym のレベル 20 に到達する頃には読み始めてもよいじゃろう。」

    「これらが Java の必読書じゃ (他にもたくさんあるぞ)。本を読めば、言語について学ぶだけでなく、プログラミングに関する全体的な理解も深めることができるんじゃ。では、そういう意味で最適な書籍を紹介しよう。」


  4. 「Charles Petzold (著)、Code:The Hidden Language of Computer Hardware and Software (コードから見たコンピュータのからくり)

    ヌードル教授が応援に駆けつけてくれました!- 7

    「Amazon の評価 (4.7/5) や絶賛の言葉を読めばその価値は明らかじゃ。」

    「高校のコンピューターサイエンスの授業で学んだことを忘れてしまった人や、そういった授業を受けたことがない人にもってこいの本じゃ。コンピューターとコードの仕組みに関する重要なことを、素人でも分かる言葉で説明している。例えば、コンピューターはプログラマーが書いたコードをどのように実行するのか?そして、コンピューターはコードとして書かれている内容、つまりプログラマーがコンピューターにやらせようとしていることをどのように理解するのか?、といった内容じゃ。」

    「すでに名著として扱われるこの本には、こういった疑問に対する答えが書かれておる。この本は専門的な教育を受けていない人に必要な情報を分かりやすく説明してくれるんじゃ。」


  5. 「Aditya Bhargava (著)、Grokking Algorithms (なっとく!アルゴリズム)」。

    ヌードル教授が応援に駆けつけてくれました!- 8

    「アルゴリズムとデータ構造は非常に大切であると同時に欠かせないものでもある。プログラマーの仕事の重要な部分であるため、プログラマーは効果的に活用しなくてはならんのじゃ!例えば、何千もある数字はどのようにソートすればよいのか?」

    「実は、色んな方法があるんじゃ!だが、すべてが同じ効果を発揮するわけではない。アルゴリズムとデータ構造について書かれた本はたくさんあるが、Bhargava が書いた本は、間違いなくプログラミングの初心者に最適な 1 冊であると言える。分かりやすいし、写真を使った詳しい説明も含まれておる。そんなに分厚い本でもないぞ。初心者にもってこいの 1 冊じゃ!」

「本を読んで、タスクを完了し、コミュニティに参加する。まさにプログラマーになるためのパーフェクトレシピじゃ!」