見出し画像

プログラミング勉強方法の個人的見解

(イラストはいらすとや様より)

いつもお世話になっております。
本日いつもの記事を投稿できそうにないので、代わりにプログラミングの勉強方法について述べようと思いました。
といいましても、あくまで筆者が今まで行ってきたことをまとめただけのものですので、本当にこの方法が読者の皆様にあっているかはわかりません。やはり個人差はあります。それを理解したうえで参考にしていただければ幸いです。自分なりの勉強方法を確立していってください。

♯1 最初の教材の選び方

筆者がプログラミングを始めたきっかけは書店に並んでいた本を偶然手に取ったことでした。ゲーム作成の本です。これを読めばゲームが作れるかもしれない、そんな軽い気持ちで実践してみたのですが......。
動かない。
書いてある通り行っているのに全く動かない。
と環境構築の段階で完全に躓いてしまいました。といいますのも、筆者が手に取ったプログラミングの本は「オンライン」ゲームの作り方が書かれたものだったのです。サーバーの「サ」の字もわからないような人間には早すぎる代物でした......。
ここからわかります教訓は、「最初に選ぶ教材は自分の知識レベルに合ったものを選ぶこと」です。せめて環境構築ぐらいは自分でできるようでないとif文すら勉強できずに諦めてしまう可能性が高まります。
だから自ら情報を集められる自信がある、周囲に相談できる人がいる環境にいるという訳では無い方は環境構築のしやすいJavascriptなどについて書かれた本を最初に選ぶことをおすすめします。

♯2 コードを写経する

さて、初っ端からくじかれましたが、他の本なら大丈夫かもとリトライした過去の筆者は環境構築には成功しました。
その後したことと言えば、解説を読むのもそこそこに、ひたすらサンプルコードを写して、写して、写し続けることでした。
一見効率が悪く思われがちなコードの写経ですが、結果的にこの方法は正解だったなと思っています。
正直プログラミングの初心者が解説を読んだところでその内容を理解できる訳がなく、そんなことで悩むくらいなら手っ取り早くコードを写して動かした方がモチベーション維持に繋がります
あるいはこうとも言えます。プログラミング言語も言語とつくからにはあくまで英語や日本語と同じ言葉の一種に過ぎません。皆様が英語を勉強なされた時、どのようにしましたか? たくさんの単語や例文を読んだり書いたりしたのではないでしょうか。そうしている内に感覚を掴み、段々と身につけていったのでは?
プログラミングも同じです。if文やfor文などをわからないまま書いている内に、どういうタイミングで書いているのかなどが感覚でわかってきます。その内にコードが読めるようになり、どうしてこの処理を書くのかという教材の説明がすっと頭に入ってくるようになります。
こうなると自分はプログラミングできるようになったと思えて自信がついてきます。
(ただしあくまで自分でコードを全て手打ちした場合の話です。コピー&ペーストではこの域には至れません! 初心者ほど手打ちした方が絶対にいいです)
そう、ここまでは楽しいんです。次が鬼門なんですよね......。

♯3 自分で考えてコードを書......書けない

そして自信がつくと自分でコードを書けるような気になり、筆者は何か新しいものを作ってみようとしました。そして気づきます。
自分のやりたいことを実現するにはどうすればいいのか。
その処理の書き方が全くわからないことに。
それもそのはず、今まで書いてきたプログラムは全て誰かからの借り物に過ぎず、自分で考えて書いたものなど何一つないのですから。いきなり書けたらそれはもう天才です。
しかも理解した気でいるものだから、自分の限界というものがわかっておらず、難しいものに挑戦しようとしていたのも今思えば失策でした。
この状態を打開しようと筆者がしたことと言えば、色んな「初心者向けの」教材を読み漁ることでした。また、簡単なツールがあると聞けばそれに飛びつき学ぼうとしましたが......。結論から言います。これは大失敗でした。
「初心者向けの」というのが一番の問題だったと思います。大抵そんな本に載っていることってプログラムの基礎的な構文が主で、「そんなことはもうわかっている」ってレベルのものがほとんどなんですよね。だからやっぱり「自分はもうプログラミングができるんだ」と思うんですけど、でもやっぱり書けないしで、ここでかなり行き詰りました。
多分その時の筆者に足りていなかったのは、何も書けない初心者でもなく何でも書ける上級者でもない「中級者」であるという自覚です。
(そしてその中級者向けの教材っていうのがこれまた少ない......。需要が一番ありそうなんですけどね)
そういう訳で一度プログラミング学習をやめた時期がありました。ですが諦めきれず、筆者がしたことは「プログラミング学習が強制的にできる環境に身を置く」ことでした。これは大正解でした。
何故かといえば、そういう環境って大抵の場合何かしらの課題が出題されるんです。期限も決まっているし、何とかして自分で考えて提出しなければいけません。そういう強制力があるので途中でだらけたりといったことがありません。
ですがこれは想定した通り。それ以上に良かったのは自分の実力より「少し上」の課題が出題されることです。筆者の環境では毎回基本的な課題に加え、任意で難しい課題にも挑戦する機会が与えられていました。筆者は負けず嫌いなので毎回挑戦していたのですが、勿論ロジックを考えるうちに自分で書く力が身につくのは当然のことなんですが、何よりこの課題が解けると楽しいんです。その時は久しぶりに「自分ってプログラミングできるんだ」って思えましたね。
まあ要は余裕があるなら大学なり専門学校なりに通うようにして、積極的に課題に取り組めば自然とスキルが身に付きます
あるいは余裕がない方はそういうプログラミングの課題が沢山掲載されている教材を手に入れましょう。そしてそれを全部クリアするといいです。(そんな教材があるかはわかりませんが......)

♯4 今度こそ自分でコードを書いてみる

そして本当の自信がついた頃、自分の本当に挑戦してみたかったことにチャレンジするといいでしょう。というか今まさに筆者が行っているのがこの段階だと思っています。のでこの章については詳しいことは書けません。すみません......。
ですが確実に言えることがあります。自分はまだまだ中級者だな、と。
上級者を名乗るにはまだまだ先は長そうです......。

♯おまけ 誰かに質問することについて

♯3の段階で先生など、わかる人に質問しながら課題に取り組むことは、限度はあるけど大事なことであると今では思います。
何故なら、自分で調べることも立派なスキルですが、誰かに「上手く」質問することも十分必要なスキルであると思うからです。
筆者は後者の能力が圧倒的に足りていません。なのでわからない、上手く実装できないということがあっても、誰かに相談するということが全くできないのです。
じゃあどうしているかというと、いつも時間をかけて必死で調べています。この「時間をかけて」という点がネックでして、もし上手に質問できたなら、もっと時間短縮できるのにな......と思ってしまう次第です。
誰にも質問せずに♯4の段階まで来てしまうと、変なプライドも生まれてしまうのも問題ですね。なので♯3の段階である程度質問するスキルも伸ばしておくといいと思います。

ということで、今回は筆者の思いの丈をつらつらと述べた訳ですが、いかがでしたでしょうか。
プログラミングができるようになると楽しいので是非諦めず挑戦してみて下さい!
ここまでお付き合いくださり、ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?