見出し画像

プログラミングの習得を速くする4つの要素

これからプログラミングの勉強を始めたい人、これから始める予定の人に向けてのプログラミングの学び方についての話です。

プログラミングを勉強するということは、プログラミングの技術の習得を目指すわけですが、プログラミングを習得する上で、習得のスピードにかかわってくる要素があります。
それは以下の4つになります。

・技術の学び方
・問題解決力(調べる力、質問力、デバッグ力)
・ロジカルに考える力
・抽象化する力

これらの4つの要素が身に付いていると、プログラミングの習得のスピードが速くなります。

プログラミングを勉強するためには、プログラミング言語を何か一つ選び、主にその言語について勉強していくことになります。
ですが、プログラマーやエンジニアとして働いてくうえで、一つの言語だけを習得すれば一生食べていけるかというと、そんなことはありません。
開発するシステムやプロジェクトによって使用するプログラミング言語は異なりますし、時代が変われば流行りの言語も変わっていきます。
なので、エンジニアとして働き続ける以上、複数のプログラミング言語を習得していくことがほぼ必須になります。
また、優れたエンジニアになるにためには、プログラミング言語の知識だけではなく、データベース、ネットワーク、セキュリティなど、プログラムに関する様々な周辺知識が必要になります。

何が言いたいかというと、エンジニアとして活躍し続けるためには、常に学び続けていく姿勢が必要があります。
IT業界は流れが速い業界なので、新しい技術が次から次へと登場してきます。それらの技術を1人の人間が全て理解して使いこなすことは事実上不可能ですが、その中で、自分にとって必要となる知識を学び、多くの価値を提供できるエンジニアが求められています。
そして、より多くの技術を効率よく学ぶための土台となるのが、先に述べた4つの要素です。

・技術の学び方、問題解決力、ロジカルに考える力、抽象化する力。
これら4つの要素がそれぞれ高い人は、効率よく新しい技術を学ぶことができますが、それぞれの能力が低いと、1つの技術を習得するのにも多くの時間を要してしまいます。

これは、スポーツでいうと運動神経を良くすることと似ています。
運動神経が良い人は、基本的にどんなスポーツでも比較的速いスピードで上達します。
逆に運動神経が悪い人は、どのスポーツでも上達が遅いです。
運動神経が悪い人でも一つのスポーツに打ち込んで時間をかければ、それなりに上達するでしょう。
でも、一つのスポーツがうまくなっても、運動神経がそもそも悪いままだと、他のスポーツを始めた時にも上達するのに時間がかかります。
それならば、まずは自分の体が思い通りに動くように、運動神経を良くするためのトレーニングをした後に様々なスポーツをした方が効率が良く上達するでしょう。

ITの技術でも同じことが言えます。
新しいことを学ぶためのスキルが高い人は、最新の技術に対して多くの知識を持っていなくても、短時間で対応する力があるため、どこに行っても重宝される人材となります。
逆に、特定の分野について多くの知識を持っていても、新しい技術を学ぶのに多くの時間がかかってしまう人は、活躍の場が限られてしまいます。
ですので、プログラミングを学ぶときは、プログラミングの知識を得ると同時に、学び方や問題解決力といった、学ぶための基盤作りにも力を入れましょう。

技術の学び方

どんな風に技術を学ぶが自分に向いているのかは、人それぞれかと思います。様々な勉強法を試して、自分に合った勉強法を確立することが大事です。
例えば、YouTubeやドットインストール、Udemyなどの動画コンテンツで学ぶのが適している人もいれば、書籍を読んで学ぶのが向いている人もいるでしょう。
あるいは直接人に教えてもらう方が向いている人もいるでしょう。
また、最初は動画や書籍でインプットして、その後に実際に手を動かしてアウトプットすることで理解を深める人もいれば、Progateのように自分で最初から手を動かしながらの方が理解が深まる人もいるでしょう。
どちらにせよ理解を深めるためにはインプットとアウトプットの両方が必要になりますが、インプットとアウトプットのサイクルをどうやって回したほうが習得が速くなるかは人それぞれです。
様々な勉強方法を試しながら、自分に合った技術の学び方を習得しましょう。

何かを勉強するときは、人から直接教えてもらった方が向いている人もいるかと思います。それはそれで良いのですが、独学の場合どうやって勉強するかも自分なりに決めておくことをお勧めします。
身近に常に技術を教えてくれる人がいれば良いですが、一人で学ばなければいけない場面もあるでしょう。
1人で学ぶときにどうやって学ぶかを決めておくことも大事です。

問題解決力

問題解決力というと幅広いですが、ここではプログラミングにおいて重要となる調べる力と質問力とデバッグ力を取り上げます。
エンジニアはどれだけ勉強しても、現場で仕事をしていると必ず分からないことや様々な問題が発生します。
問題解決力が高いエンジニアは、問題が発生するたびに自分の力で解決し、それを自分の知識として吸収し、より成長することができます。
つまり問題解決力が高いエンジニアはそれだけ成長が早いです。

調べる力
調べる力はその名の通り分からないことを調べる力です。
動画や書籍を使って勉強を重ねたとしても、自分でアウトプットしたり、現場で使用する際には必ず分からいないことは出てきます。
その時に、自分で調べ、調べたことを自分の知識として吸収する力がある人は問題解決も技術の習得も速いです。
調べる力を上げるには、知らないことが出てきたらすぐに調べる習慣を持つことです。今はネット環境さえあればいつでもすぐに調べることができますが、知らないことが出てきてもすぐに調べようとしない人は案外多いです。
分からないことが出てきたらまずはすぐに調べる習慣を持ちましょう。

質問力
調べてもどうしても分からないときは、分かる人に質問するのが問題解決の近道です。質問するときに、自分が知りたい回答を最短の時間で得られるような質問ができる人は、問題解決も知識の吸収も速いです。
どうすれば自分が知りたいことを最短の時間で知ることができるのかを意識しながら質問を考えることを習慣化しましょう。
そして、人に質問することの抵抗をなくし、質問することで様々な知識を手っ取り早く吸収する習慣を付けることが技術習得の近道
です。

デバッグ力
プログラミングではデバッグ力が非常に重要な力です。
デバッグとは、エラーやバグを解決する作業のことですが、デバッグ力は知識量・エラーをきちんと読む力・ツールを探す、使いこなす力がものをいいますです。
普段から本を読んだり、ネットの記事から情報収集して知識量の豊富な人は、それだけエラーの解決が速いです。
また、エラーが出た際に、そのメッセージをきちんと読み、どういう意味なのかを考えながら作業する人も、解決が速いです。
また、世の中には開発の作業を便利にするためのツールが数多く出回っています。自分が直面している問題を解決するためのツールがないかどうかを探す習慣を持つことで、問題解決が速くなる丸可能性があります。

ロジカルに考える力

プログラミングを学ぶときは、うまくいかなかったり、エラーになることがよくあります。エラーになった時、知識や経験が少なかったとしても、エラーのメッセージを読み、論理的に考えることができる人は、エラーを解決するのが速いです。
また、ロジカルに考えることができる人は、新しいことを学んだ時の理解力がそもそも高いです。
新しいことを学んでも理解することができなければ、内容を暗記することになってしまいます。暗記することは悪いことではありませんし、プログラミングでも基本的なことは暗記して覚えておくことも大事です。
しかし、根本的に仕組みを理解していなければ、暗記していた内容もすぐに忘れてしまいますし、何より応用力が身に付きません
ロジカルに考える力(論理的思考力)の高さによって、プログラミングの理解力が決まり、それにより習得の速さが決まります。
論理的思考力を鍛えるためには、日ごろから「なぜ」そうなるのかという疑問を持って考える習慣を付けることが大事です。
本を読んだり、動画を見たり、プログラムを書いている中で「なぜ?」という疑問を多く持ち、それらの疑問について考えたり調べたり質問したりする。それを習慣化することでプログラミング習得のスピードが上がります。
「なぜ?」という疑問を持つようになるためには、プログラミングに対して興味を持つことが最も大切です。

抽象化する力

抽象化というと難しい言葉のようですが、簡単に言うと、異なる事象から共通しているものを見つけることです。
抽象化について詳しく知りたい方はこちらの本がオススメです。

こちらの本でも書かれていますが、抽象化の力がある人は1から10を知ることができます。1つのことを他の分野に応用させることができる人は抽象化の力が高い人だと言えるでしょう。
ロジカルに考える力とも共通しています。

プログラミングは、一つの言語を習得することができれば、2つ目以降の言語を習得するのはそれほど難しくないと言われています。
それは、プログラミング言語というものが本質がある程度似ているので、自分が習得した言語の考え方を応用したり、比較すること短時間で理解できるためです。
ただし、自分が習得した言語との共通点や違いを即座に発見するためには、ある程度抽象化の力が必要になってきます。
プログラミング言語に限らず、ITの分野では一見関係なさそうな技術でも仕組みが似ているものなどもあったりします。

抽象化の力を鍛えるためには、新しい技術を学ぶ中で、自分が知っている技術と似ている点がないかを探す習慣をつけると良いかと思います。

まとめ

プログラミングスキルの習得を速くするためには
・自分なりの学び方を確立する
・調べる力、質問力、デバッグ力を磨いて、問題解決力を向上させる
・プログラミングに興味を持ち、些細なことに「なぜ?」という疑問を持ち、論理的思考力を鍛える
・似ているものを探す習慣を身に付け、抽象化の力を鍛える


サポートいただくとめちゃくちゃ喜びます。素敵なコンテンツを発信できるように使わせていただきます。