プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

プログラミング学習は外国語学習に似ている――初心者から上級者までのステップ別ロードマップ

「コードを学ぶことは、外国語を学ぶことと似ている」――最初は奇妙に聞こえるかもしれません。しかし実際のところ、プログラミング学習のリソースはあまりにも多いため、迷子になったり圧倒されたりしがちです。そこで、外国語を学ぶときと同じアプローチでプログラミングに取り組むと、役立つフレームワークが手に入ります。

フレームワークを使えば、学習の進捗を構造化できます。方向性が定まり、道中のマイルストーンも、最終的なゴールも明確になります。
この手法の大きな利点のひとつは、初心者から上級者までの道のりを段階に分けられることです。段階を意識することで、自分が今何をしているのかがより明確になります。

たとえば、自分が今どのレベルにいるかを把握していれば、適切な期待値を設定できます。まだ初心者の段階なら、中級・上級レベルのスキルを簡単に身につけられるべきだと感じる必要はありません。現実的な期待を持つことで、過度に落ち込んだり挫折したりすることを防げます。

よさそうだと思いましたか?では、楽しい小さなエクササイズから始めましょう。

あなたの最終目標は何ですか?

言語学習において、目標は単語やフレーズの暗記そのものではありません。新しい言葉を覚えること自体を目的に言語を学ぶ人はほとんどいません。必ず何らかの現実的な目的があります。最終的には何か役に立つことができるようになりたいはずですよね。ネイティブと流暢に会話すること、その国を旅行すること、その言語で本を読むことなど、具体的なゴールを思い浮かべているかもしれません。

プログラミング学習も同じであるべきです。「プログラミングを学ぶ」以外の最終目標を持つべきです。新しい仕事に就くこと、モバイルアプリを販売すること、独立して働くことなど。その目標が、学びが辛くなったときでも続けるためのモチベーションになります。プログラミングの世界を航海するときの「真北(コンパスの北)」となるでしょう。

ここで少し読むのを止めて、プログラミングを学ぶあなたの最終目標について1分間考えてみてください。なぜこれをしているのですか?この道を歩み始めた当初の動機は何でしたか?紙に目標を書き出しましょう。パソコンの横や洗面所の鏡など、毎日目に入る場所に貼っておいてください。そのメモを目にするたびに、旅を始めた理由を思い出せるでしょう。核心的な理由を思い出すことが、諦めないための励みになります。

目標は書けましたか?では、この記事を読み終えたら、下のコメント欄であなたの目標を共有してください。お互いの話から勇気をもらえますし、ぜひあなたの話も聞きたいです。

それでは、コードを流暢に操れるようになるための旅に出ましょう!

最初の言語が一番難しい

一度にひとつのことだけに集中する

世界に6,000以上の話し言葉があるように、選べるプログラミング言語もたくさんあります。学び始めたばかりなら、Python、Ruby、JavaScript、React、Javaをすべて同時に学ぼうとするのはおすすめしません。それは非現実的すぎます。中国語、スペイン語、ドイツ語、ポルトガル語を同時に学ぼうとはしないですよね?

最初に学ぶ言語を選ぶときは、悩みすぎないでください。ひとつを選んで、それをある程度使えるレベルまで学び込みましょう。最初の言語が一番難しいのは、言語を学ぶだけでなく、プログラミングそのものの仕組みも同時に学んでいるからです。ひとつの言語を使いこなせるようになれば、2つ目、3つ目の言語を学ぶのはずっと簡単になります。

すべてのプログラミング言語には共通する原則があります。その原則を一度学んでしまえば、後は新しい構文や語彙を覚えるようなものです。もちろん各言語には独自のクセがありますが、プログラミングの基礎を固めてしまえば、後から追加のスキルを身につけるのは格段に容易になります。

最初の言語を選んだら、旅の最初のステージから始めましょう。

初級レベル

Hello, world!

外国語で最初に覚える表現といえば?たいていは「こんにちは」という最も基本的な挨拶です。偶然にも、プログラミング言語で最初に学ぶのは「Hello, world!」を出力することであることが多いのです。

挨拶を覚えたら、次は単語と基本文法の暗記に移ります。プログラミングでは、変数の型、メソッド、構文、プロジェクトファイルの構造といった概念を学びます。関数を一つずつ学んだり、些細な構文エラーにつまずいたりするのは、あまり楽しいことではないかもしれません。しかし、こうした基礎的な積み木をマスターすることが、さらに上へ進むための力になります。

この入門段階では、多くのミスをするでしょう。いえ、大量のミスをします。でも全く問題ありません!大事なのは、完璧に理解してから使うのではなく、使いながら学ぶことです。むしろミスをすることは良いことです。ミスから学べるからです。失敗を恐れて挑戦しなければ、自分の学習プロセスを妨げてしまいます。鍵は、ミスをしながら、新しく学んだことを実験してみることです。

実験の一例を紹介します。

チュートリアルで言語を学んでいるなら、普段どおりレッスンに沿って進めてください。そのうえで、時間を作って一人でエディタを開き、コードを自由にいじってみましょう。書いているコードをわざと壊してみて、どうやって、なぜ壊れたのかを理解しようとしてみてください。そして、行き詰まったときだけレッスンノートを見返して、コードをゼロから書き直してみましょう。

このような実験には前もって時間と労力が必要ですが、長期的には確実に見返りがあります。コードの概念をいじり回すことで、その仕組みが体感でき、スキルが脳により深く定着します。スキルレベルに関係なく、新しい概念に向き合う際の基本的なやり方として組み込めます。(実験こそが専門性への道であるという考え方については、Michael Simmonsの投稿でも取り上げられています)

中級レベル

ピースを組み合わせる

外国語の場合、ここからが面白くなり始めるところです。知識が増えるほど、新しい言語でできることが増えていきます。会話スキルが身につき、その言語で読んだり聞いたりしている内容のかなりの部分を理解できるようになります。オンラインの語学学習リソースのおかげで、ネイティブスピーカーと友達になることさえできるかもしれません。

プログラミングにおける中級レベルとは、言語の原則や、その言語で何ができるのかについての感覚をつかみ始める段階です。本を読むこと、チュートリアルを進めること、実験することといった基礎の学習は続ける必要があります。しかし、時間をかけて改善し続けられる土台を築き始めているのです。GitHubのようなコミュニティで、より経験豊富な開発者たちと交流することもできます。実際、他の人のコードを研究することは非常に役立ちます。

たとえば、興味のあるGitHubリポジトリを見て、他の開発者が特定の問題をどう解決しているか観察できます。あるリポジトリを研究した結果、あるissueに対する修正案に気づいて、プルリクエストを送ってみるかもしれません。オーナーに受け入れられなくても、コードを扱う経験は確実に積めます。試し続けて、学び続けましょう。

Stack Overflowのフォーラム、Facebookグループ、Slackチャンネルなどのオンラインコミュニティから、他のプログラマーの助けやサポートを得ることもできます。バグの解決を手伝ったり、正しい方向を指し示したりして喜んで協力してくれる人は大勢います。世界中にコードを学んでいる人々のコミュニティがあるのです!

スランプに直面したら

ここで少し残念なお知らせをしなければなりません……学習のある時点で、成長が止まったように感じることがあります。急激な学習曲線の坂道は脱しても、先が見えない長い道のりが続いているように感じるかもしれません。正直に言えば、これはつらいものです。

しかし、絶望しないでください!このスランプは、どんな新しいスキルを身につける際にも起こる正常な現象です。最初のうちは大きく進歩して、すぐにスキルが伸びている実感を得られます。しかし、上手くなるほど、中級・上級のスキルはより難しくなります。当然ながら、より高度だからです。どんなスキルでも、「使いこなせる初心者」になるよりも、マスターするにははるかに多くの時間がかかります。

スランプにはまったと感じたら、諦めないでください。自分に寛容になり、スキルアップにはもっと時間がかかるのだと理解しましょう。燃え尽きないように注意し、優秀で完璧であろうとしすぎてプレッシャーをかけないこと。何より、今こそ現実とオンラインの両方で強力なサポートネットワークが助けになる時期です。同じ境遇にいるかもしれない人々に声をかけ、経験談や励ましを交換しましょう。

上級レベル

「ねえ、私って意外とこれ、得意かもしれない!」

外国語学習において、ほとんどの人が目指す到達点は「堪能」になることです。堪能とは、その言語で伝えたいアイデアや感情を何でも自信を持って表現できる状態です。この段階では、ほぼ流暢と言えるでしょう!

プログラミング言語や技術でこのレベルに達すると、本当に気分がいいものです。時折インポスター症候群(自分を詐欺師のように感じる心理)に苦しむことはあっても、全体としては自分のスキルとプログラマーとしての価値に自信を持てるようになります。クライアントや上司から投げかけられるほとんどの課題に対応できます。たとえやり方を正確に知らなくても、調べて(つまりGoogleで検索して)時間をかけて解決策を見つけ出す手段を持っているとわかっているのです。

しかし、今は安住している場合ではありません。プログラミングは絶えず変化する分野であり、動きが速いのです。スキルを磨き続ける必要があります。学びを止めれば、苦労して手に入れた熟練度は徐々に失われていきます。自己満足と停滞は、いずれプログラマーとしてのキャリアにとって致命傷となります。ただし朗報もあります。この頃には、あなたは「学ぶこと」自体がかなり得意になっているはずです。新しい言語、フレームワーク、ツールを学ぶのに、以前ほどの時間はかかりません。しかも、そのプロセスを楽しめるかもしれません!

あなたの最終目標は何ですか?下のコメント欄で教えてください……

プログラミングの学び方についてのこの記事を楽しんでいただけたなら幸いです。冒頭で述べたように、あなたのプログラミングの目標や、今学んでいることをぜひ聞かせてください。

  1. Linux初心者がやりがちな10の間違い〜もう「ルーキー」と言わせないために〜

    Linuxを自分のOSとして使うことに決めたなら、それは素晴らしい選択です。Linuxには学ぶべきことがたくさんあり、オープンソースOSを最大限に活用するには、日々学び続け、スキルを磨いていくことが大切です。では、どうすれば自分がもう初心者ではなくなったと分かるのでしょうか?ここでは、Linux初心者が陥りがちな10の間違いをご紹介します。最近心当たりがあるものがあっても、気にする必要はありません。大切なのは、間違いを認識して、そこから学ぶことです。「Linux」の正しい発音まずは「Linux」という言葉の発音について。人によっては少し奇妙な発音をする方もいます。確かに世界で一番発音しやすい単

  2. モールス信号を無料で学べるおすすめサイト5選|初心者から上級者まで

    時代がどれだけ進んでも、モールス信号を使った伝統的なメッセージ送信の方法は、今なお世界中で使われ続けています。点と線(トン・ツー)からなるこのシステムは、最新技術が機能しなくなった緊急時にこそ真価を発揮します。この暗号的な言語を始めてみたい方のために、初心者からエキスパートまで導いてくれる、モールス信号を学べるおすすめのウェブサイトを5つご紹介します。モールス信号とは?今でも役に立つのか?モールス信号は、1830年代にサミュエル・F・B・モースによって発明された電気通信の一形態です。文字を、長さの異なる2種類の標準化された信号列に変換して表現します。これらの信号は「短点(トン)」と「長点(ツー