はじめに
こんにちは!文系で未経験にもかかわらずエンジニアとして働くことになったitaaaaです。
エンジニアとして研修を受けている現在、当然のように毎日コードについて知識を入れたり書いてみたり…と勉強の毎日を送っています。
今回はその中で見つけた(というよりも有用さを再認識した)コードについての勉強法についてお話ししようと思います。
自分と同じ様にゼロから何かを学んでいる人にはもちろん、改めて勉強している人にも読んでもらえると嬉しいです。
「答えを見る」ことのすゝめ
さて突然ですが、「答えを見る」と聞いたときに、皆さんどのような感情を抱きますか?
「褒められることではない」と感じる方もいるでしょう。
あるいは、「課題提出を間に合わせるために、答えを見ながらうまいこと○を付けるところと×を付けるところを組み合わせて~」なんてことをした人もいるかもしれません。
一般的に、「答えを見る」という行為は「後ろめたいもの」だと捉えられている、と私は思います。
ですが、こと「0から学ぶ」という点において、答えを見ることは効率よく学ぶための武器となるのです。
コードの”型”
話は少し変わりますが、私は「コードには”型”が存在する」と思っています。
ここで私が「型」というのは、このような出力を求められたら、このようなコードを書く、といったものです。
より具体的には「Hello, world!」と出力しろ、と言われたらSystem.out.println()を使う、といったものです。
つまり、「この処理にはこのコードを書く」といった考え方のひな型のようなものがコードには存在します。
このことを「コードの型」と表現しているのです。
そして、この型を知るにあたって、「答えを見る」ことは大きな効力を持っています。
コードの型を知るための「答え」
ここで少し想像してみてください。
ここに、コードについて全く知識を持たない新米未経験エンジニアのitaaaaがいます。
当然、この人はコードの型など知るはずもありません。
研修において「Hello, world!」と出力しろ、と課題が出たので、itaaaaは長時間かけて自力でメソッドなどを調べ、この課題をクリアしました。
さて、皆さんどう感じましたか?未経験エンジニアが頑張って自力で課題をクリアした、という点では微笑ましいですがあまりに非効率でもあります。
あるいは、「println()くらい調べればすぐわかるでしょ」と感じた方もいらっしゃると思います。
では、この課題内容が下記サイトの問題(paizaのC問題)くらいの難易度だったらどうですか?
これを自力で調べ上げたとしたらどれだけ時間がかかるのでしょうか?考えたくもないですね。
先ほど述べた通り、コードには型があります。
つまり、先ほどitaaaaが頭を悩ませて導いた回答は自明のものであり、そこに大きな生産性はありません。
もちろん、自力で調べ上げたその時間に価値がないわけではないですが、効率的であるとは言えません。
自明の解き方が存在するのであれば、つまりはコードの型が存在するのであれば、それを知ることが肝要であり、それこそがコードの勉強であると私は考えます。
そして、コードの型を知るための最も効率的な手段が答えを見ることだと考えるのです。
「答えを見る」勉強法
ここまで、コードの勉強とは「コードの型を知ること」であり、コードの型を知るためには「答えを見る」のが一番だと話してきました。
では一体どのようにして、答えを見ることを学習の中に組み込めばよいのでしょうか?
学習の中に「答えを見る」ことを組み込むには答えをうまく使う必要があります。
具体的には次のような流れの学習方法です。
- 時間を決めて(長くても10~20分程度)問題の解き方の方針を決める。時間を超えたら3.へ進む
- 時間を決めて(長くても10~20分程度)問題を解く。時間を超えたら3.へ進む
- 答えを見て、知らなかった考え方やメソッドを1つずつまとめる
- まとめたものについて調べ、自分なりの理解をまとめる
当然ですが、ただ答えを見るだけでは知識の定着にはなりません。
「答えを見て終わり」にさせないために、「何がわからなかったか」「何をあたらしく学んだのか」をリストアップし、それぞれに対して自分で調べることで、知識を定着させることができ、将来「これが使えそう!」と考えるトリガーになるのです。
これこそが、コードの型を覚え次に活かす「答えの上手な使い方」なのです。
さいごに
長々とご精読いただきましてありがとうございました。
「答えを見て勉強する」という字面は少し驚くようなものかもしれませんが、実際は効率をぐんと上げられるものだと思っています。
大仰に言っていますが、「答えを見るなんて、もうやってるよ」という人のほうが多いかもしれませんね。
少し話はそれますが、コードの勉強は数学の勉強に似ていると私は確信しています。
どちらも、明確な回答方法があり(つまり回答法のひな型があり)、いろいろな要素を組み合わせて回答にたどり着く、という特徴を持っています。
この勉強法は、文系だけど数学も受験で使っていた私が大学受験期に濫用した手法です。1Aも2Bも、青チャートが嫌いになるほど、何週もこの手法を用いて勉強してきました。
その方法で大学に受かった自分としては、この勉強法は確かに効果があるものであり、有効であると太鼓判を押したいと思い、今回筆を執りました。
この記事が誰かの役に立つことを願いつつ、この記事を締めさせていただきます。
改めまして、ご精読いただきありがとうございました。
それでは!