🐣

プログラミングを学習する前に知っておきたかった3つのこと

2022/04/09に公開

プログラマーとして1年が経った今、学習を始める前に知っていたら、もっと効率的に学べたのになということが3つあるので、今回はその話をしたいと思います。個人的な見解なので一意見として参考にしていただければ幸いです。

色んな言語に手を出さずに1つを極める

まず1つ目は、色んな言語に手を出さないようにしようという話です。これはなぜかというと、プログラミング言語ごとの文法の理解に止まりかねないからです。

プログラミングというのは、コンピュータに「こういうことをしてね」という命令を、プログラミング言語を使って書くという行為です。ここで着目してほしいのが、このプログラミング言語というのは、あくまで命令を伝えるための手段であるということです。

どれだけ、プログラミング言語を学んで文法を理解しても、どんなことを実現するべきなのかを考えて、それを論理的にコードに落とし込むことができなければ、プログラミングはできないままです。

また、現在のプログラミング言語の多くは、オブジェクト指向や関数型など、主流となるパラダイム(プログラミングをする上での考え方・概念)を取り入れており、文法や実行環境に差異はあるものの、同じ考え方でコードを記述していくことができます。

つまり、1つの言語をしっかりと極められていれば、その考え方を他の言語でも転用できるというわけです。

初学者は、HTML、CSS、JavaScript、React、Rubyと色んな言語に手を出しがちです。これは、ある程度学んだら満足してしまうということや、「これを学んでおくといいよ」という情報があちこちに溢れていることが理由として挙げられます。

個人的に、まずは1つの言語をしっかりと理解するべきだと考えます。その過程で概念や考え方を理解したり、目的は何かを考えて、コードに落とし込む力を養っていくことができるのではないでしょうか。

理解できるまでとことん時間をかける

2つ目は、理解できるまでとことん時間をかけようという話です。理解できないから暗記しようはダメです。暗記グセはこの機に直しましょう。

なぜ、理解できるまでとことん時間をかけるべきなのでしょうか。その理由は2つあります。

①数珠繋ぎ的に周辺知識が分からなくなるから

ある事柄への理解ができていないと、そこから派生する知識も同様に理解ができなくなります。例えば、webの仕組み(リクエストやレスポンス)が理解できていないと、APIやSPAなど理解が難しいです。

対象の事柄が、幹となる知識なのか枝葉となる知識なのかで話は変わってきますが、最初はそういったものを上手く見極められないと思います。現在普及している技術や知識は派生してできているため、しっかりと理解していないと、数珠繋ぎ的にどんどん分からなくなっていきます。

分からないが積み重なると、苦しくなっていきます。極論ですが、プログラミングやエンジニアという職業に嫌気がさしてくるのではないでしょうか。そんな未来を迎えないためにも、今のうちに理解できるまでとことん向き合うクセをつけましょう。

②効率が悪く、応用が効かないから

例えば、ある処理を実現したいとしましょう。ただ、自分には分からないとします。ネットで調べて、そのままコピペして実装完了。これでもいいのですが、また同じような処理を実装する必要が出てきた時に、1から調べてとしていると、非常に効率が悪いです。応用も効かないと思います。

最初にしっかりと理解していると、その次出合ったときも対処することができます。調べる際もポイントを絞って検索できるため、効率がいいです。また、拡張したりといった応用にも強くなれます。

もちろん、この話は汎用性の高い処理であることが前提となりますが、そのような理解せずに覚えることやコードをコピペするクセが付いてしまうということが危険なため、やはり、理解しようとする思考習慣は大切です。

ここまで2つの理由について見てきました。理解にはとことん時間をかける意識が染み込みましたでしょうか。ちなみにこの話はプログラミングに限らずに、色んなことにあてはまると思うので、日頃から意識するようにしていきましょう。(自戒を込めて)

幹となる知識を身につける

3つ目は、幹となる知識を並行して身につけようという話です。

幹と枝葉ついては先ほど少し触れましたが、まず幹となる知識とは何か、そして、なぜそのような知識を身につける必要があるのかを追って説明したいと思います。

①幹となる知識とは?

幹となる知識とは何でしょうか。ここでは、ものごとの根幹をなす本質的な知識と定義したいと思います。

例えば、webの仕組みやプログラムが動く仕組み、ネットワークの仕組みなどが該当します。
他には、プログラミングやそのパラダイムが発展してきた歴史、プログラムを作成する際の設計思想などもここに含まれるでしょう。

このような幹となる知識と対となるのが、枝葉となる知識です。例えば、プログラミングごとの細かな文法などがここに当たります。

②なぜ身につける必要があるのか?

では、なぜこのような仕組みや背景を知る必要があるのでしょうか。

それは、覚えることの負荷を減らすことができるからです。

プログラミングは学習する際に、一つ一つの技術を覚えようとするのはナンセンスです。膨大な時間がかかります。仕組みや背景を理解すると、目の前の技術がなぜ必要なのか、役割を理解することができます。

そうすると、使い所が分かります。使い所が分かると覚えていなくても調べて対応することができます。

プログラミングの文法などの枝葉の知識・技術の習得とともに、幹となる知識への理解にも時間をかけていきましょう。そうして、覚えることの負荷を減らして効率的に学習をしていきましょう。

最後に

ここまでプログラミングをより効率的に学習するための方法・考え方について述べてきました。あくまで一意見として参考にしていただければと思います。

Discussion

ログインするとコメントできます