仕事

【注意】プログラミングを暗記で覚えようとするのは間違いです【独学】

クリス

よーし、とりあえずプログラミングを覚えよう。
まずはProgateで基礎訓練をして、それを見ないで打てるようになるまで練習だ
がんばるぞ!




どうも、プログラミングを覚えようとするのに、そんな形で勉強しようと考えている方が少なくないようです。

ですが、その方向は上達を確実に妨げてしまいます。

ということで、今回は『プログラミングを暗記で覚えようとしてはいけない理由』についてお話していきます。


私はとあるベンチャー企業でソフトウェア開発を担当していて、新人の教育担当も兼ねている者です。

もし今、『プログラミングをどうやって暗記するか』という事で悩んでいる方が居たとしたら、より最適な方法で訓練できることを願っています。



スポンサーリンク


【注意】プログラミングを暗記で覚えようとするのは間違いです【独学】

なぜ暗記でプログラミングを覚えようとしてはいけないのかというと、それは英語に通じるものがあります。

学校で習う英語の授業は、文法や単語などを暗記すればそこそこ良い点が取れたりもします。

でも、実際に海外で役に立つかと言われると、役に立たない事の方が多いですよね。あんな感じです。

プログラミングを暗記する方向で覚えようとするのが良くない理由は、以下3点によります。

  1. 実際に作ったほうが上達するから
  2. Googleよりも深い知識を得ることはできないから
  3. 暗記の時間が学習を妨げるから


まずは、これらを順番に解説していきたいと思います。

1.実際に作ったほうが上達するから

まず、プログラミングというのはプログラムを作る事で上達していきます。

どのような書き方をしたらどこに問題があるのかというのは、実際に触ってみないと分かりません。


プログラミングって、『自分がこう書けば動くと思うコードを書く→実際に動かして答え合わせをする』という経験の積み重ねで上達していくんですよ。

仮にプログラミングの関数やライブラリを山程暗記したとしても、実際にそれを書いて動かそうとした時に動かなかったら困りますよね。

そして、『プログラミングができる』という状態のうち大きなウエイトを占めているのが、『エラーが発生してから解決するまでの時間が速い』ということだったりします。


大部分の人は、『全くエラーが発生しないプログラム』というのを企画・構想段階から作り上げるのは不可能です。

実際にコードを書いてみないと、どこで問題が起こるのかは分からないんですよね。

プログラミング言語も機械との対話なので、どこを機械に理解してもらえないのかは、実際に話してみないと分からないんですよ。

これも英語と同じですね。


だから、エラーが発生しないプログラムを作る事は容易ではありません。

上手な人は、エラーが発生してから解決までの流れが速いんです。

幾通りものエラーを経験しているので、実際にコードを書いてエラーが発生した時に、『ああ、このエラーはあの部分で問題が発生していそうだな』というアタリを付けるのが非常に正確なんですよ。

そして、これはプログラムを書くことで得られる経験値です。


実際にある程度できる人のプログラミングを横で見ていると気付くことがあります。

頭の中で塔を作り上げて、実際にそれを動かしてみて、問題が出た所から速やかに解決していく、という流れを取ります。

我流でもなんでも良いので、ひとまずこれをある程度のレベルまで引き上げる事が最重要項目と言っても過言ではありません。

2.Googleよりも深い知識を得ることはできないから

第2の理由として、暗記をしていた時間が無駄になりがちだという問題があります。


どんなにプログラミングが上達した人であっても、一度覚えた事が生涯そのままということは、現環境ではまずありません。

色々な人が新しい技術を作り、そしてそれを世の中にアップデートして行っているんです。

これを応用してモノを作っていく事になりますから、『自分が今持っている知識』というのは、ジェットコースターのような勢いで古くなっていきます。

たとえば、10年前に通用した技術って、今ではそこまで使われていません。

全く使われていない訳では無いんですけどね。


だから、プログラミングがどれだけ上達している人でも、Googleでググりながらプログラムを作るんです。

別に実際の仕事で試験のように『カンニング不可』なんていうことはまずありませんから、どれだけ早く目的の情報に到達できるかという事が、作る上ではとても重要になります。

プログラミング力は、ググり力です!


どれだけ知識が深い人でも、Google先生に勝てる人など存在しません。

沢山の知識を持っている人ではなくて、情報を得る能力に長けている人を目指しましょう。

それは結果として、沢山の知識を持っている人に化けていきますし、知らないことでもまるで知っている事かのように、素早く情報を取得することができるようになります。


もちろん、Googleだけでは体系的な情報を得るのには苦労する事が多いです。

電子書籍やニュース、Youtubeなども利用して、自分の欲しい情報を手に入れる努力をしてみませんか。

3.暗記の時間が学習を妨げるから

以上のことから、『暗記をしている時間』というのは、実際のプログラミング上達には妨げになる事が多いです。

もちろん、すべての事がそうではないんですよ。

たとえば基本情報技術者などの試験を受ける場合は、暗記しなければどうにもならない事が沢山あります。


暗記というのは、情報を仕入れて知識人になるためのステップです。


プログラミング言語の習得というのは、キャッチボールでそれを返していくスキルを身につける事を目的としています。

この2つをどのように組み合わせれば最適になるのか、自分の力で考えてみる必要があると思うんですよね。


プログラミングを実際に進めていけば、最低限必要になる知識は、嫌でも頭の中に入ってきます。

対して、コンピュータの用語や基本的な知識などは、何かをやろうとして覚えられるものではない要素もあります。


ここで書いているのは、あくまで『コードを書くための知識を暗記する必要はない』ということです。

プログラミングを独学するのに、暗記以外のどのような方法があるか

さて、暗記はあんまり効率的な方法ではないと説明した所で、では『最適な方法というのは一体何なのか』という事についてお話していきます。

実際、やってみる事は2つです。

  1. 実際にできる事からプログラムを書いてみる
  2. 分からない事はなんでもググってみる


この2つをバランスよく取り入れる事で、プログラミング能力は間違いなく上達していきます。

それでは、上記2点について詳しく解説していきます。

1.実際にできる事からプログラムを書いてみる

プログラムを書きましょう。

たとえば、学習教材の本を読んだら、そこにはサンプルのプログラムが書かれていると思います。

それは1つ残らず、自分の手で書きましょう。


しかも、本を見ながら写すのではダメです。実際に本を読んでみて、内容が理解できたらそれを一旦閉じて、プログラムを思い出しながら書いてみましょう。

実際これはものすごく有効で、かなり早い段階でプログラムの基礎が身につきます。

私は学校でプログラムを覚えましたが、正直実際にはこれしかやっていなかったくらいです。

内容が分からなければ他の本などで調べるしかありませんが、内容がわかった瞬間に即、これを実行することです。


というのも、先程の『エラーを解決する』という流れを実際に体験して、はじめて本に書かれているプログラムは自分のものになります。

たとえ本の中に書かれているプログラムを暗記しても、その段階ではまだ『書ける』とは言えないんです。

一文字間違えているだけでエラーが出るのがプログラムです。まずはその面倒臭さを体験するところから始めましょう。

それを続けていくと、本を一冊読んで試しただけでも、実際かなりの力が付きます。

電車の中で片手間に読んで覚えるとはいきませんが、これが一番の近道だと私は考えています。


よくプログラミングを覚えようとなった時に、『作りたいものが特に無いので、何から初めて良いのか分からない』という意見があります。

作りたいものが特に無いというのは、作りたいものを選んでいるからです。

覚えた事を片っ端から試して自分のものにしていかないと、作りたいものというのは生まれないんですよ。

卵が先か鶏が先かみたいな話になってしまいそうですが、『作りたいものを発想する』よりも、『作る』が先なんですよね。

2.分からない事はなんでもググってみる

もしプログラミングで分からない事があった時、『何がまずいんだろうか』と考えるのも大事ですが、とりあえずググってみる気合も大事です。

たとえばエラーが発生したら、そのエラー文字列でググってみる。

それだけで、解決方法がすぐに分かる事があります。


分からない事を論理的に導き出そうとするのは、最初のうちは難しいです。

とにかく山のようなエラーに遭遇して、そのたびに分からなかった部分を1つずつ知識として身につけていくことで、初めて全体の構造がつながる瞬間というのが生まれてきます。

そうなってくると、エラーを見た瞬間に『これはあれ系のエラーだな』というのが分かるようになってくるんです。


数学などでは、自分の頭で考えなければ解決にならない事がよくあります。

真面目な方ほど基礎から考えて問題を解こうとしてしまいがちですが、我々に必要なことはスピードです。

ググってそこに答えが書かれているのなら、自分の力で回答を見つける必要はない事も多々あります。


実は私も昔、『エラーが出た時にそれを納得行くまで一生懸命考える』というタイプの人間でした。

それはそれで力になったとは思うのですが、長くプログラミングを続けていくにあたり、それでは限界がある事に気付きました。

言わば、『車輪の再発明』みたいな事がエラーの問題解決で沢山起こるんですよ。

しかも、考えても分からないエラーも沢山あるんです。言語のバージョンが違うから起こる問題とか。


まずはググってみて、そこに解決方法が書かれていなかった時、初めて問題について考えるくらいでも遅くはないというのが、今の私の意見です。

プログラミングは、手抜きする人間ほど上達する

正直な話をすると、私もけっこうバカ真面目に色々考えてしまう方で(あまり良い意味ではなく)、とにかく手当り次第に暗記したり、なんとか手探りでも答えを探してみたり、という事をやっていました。

その方法しか私は知らないので、私なりのペースで上達していくのですが。

中には「えっ、そんな方法で解決するの?」と思うようなやり方で、階段を数段飛ばしで駆け上がっていくエンジニアの方がたくさんいました。


プログラミングは、効率よく手抜きする方法を考えられる人の方が、速く上達していきます。

『手抜きするためにはどうしたら良いか』を真剣に考えている人って、なんか上達早いんですよね。

元々ソフトウェアも、人の手間を改善するためのものが多いですから、わりと本質的な事なのかもしれません。


正直者が馬鹿を見るという事ではないのですが、頭が固くなってしまっている方は、これを機に楽な方法を模索してみてはいかがでしょうか。

プログラムは暗記するのではなく、ググって作るものなんです!

現場からは以上です。

スポンサーリンク

-仕事

© 2021 日々勉強。