プログラミングを始めた人は、誰もが早く「上達」したいと考えると思います。
断言します、「プログラミング」を上達させる最強の方法は「写経」です。
「写経」と聞いて、
「え、コードをただ書き写すだけで良いんでしょう?」
と思ったあなた。
半分正解ですが、半分間違っています。
確かに最初はコードをただ書き写すだけでも学びになります。
ただ、ある程度のレベルになるとこれだけだと伸び悩みます。
ですので、さらに「一工夫」する必要があります。
この記事では、「写経」を使って学びを最大化したい人に効率的な練習方法を3つ紹介します。
プログラミングを上達するには?
あなたはこんな質問を上級者にした事ありますか?
そうすると、
「沢山プログラムを書くと良い」
とか
「やりたい事を決めてプログラムした方が良い」
といったアドバイスを受けた事があると思います。
ですが、
「沢山書いたら良いと言うけど、何でも書けば良いのだろうか?」
と疑問に思った事ありませんか?
確かに、沢山書くと、プログラミングを書く行為には慣れます。
ですが、間違った書き方をしていたら、いつまでも上達しません。
文章を沢山書いたら小説家になれるか?
この様に質問を置き換えたら明白ですよね。
別に、沢山文章を書いたら小説家になれる訳では無いです。
ですが、もちろん才能だけではありません。それに加え、正しい方向で、十分な量の練習が必要です。
ですが、プログラミングの正しい「上達法」の情報って意外と少ないです。
それは、エンジニアは、あくまでもプログラミングのプロであって、教え方のプロではないからです。
写経とは何か?
写経とはプログラムを「写して」、「動かす」学習法です。
写すといっても、コピー&ペーストは厳禁。0とは言いませんが、コピー&ペーストすると効果は大幅に無くなります。
1文字1文字自分の手でコードをタイプし、実行して下さい。
写経のやり方
- 初心者:丁寧に正確に写経
- 中級者:ビデオと同スピードで写経 &分からない所を 調べる
- 上級者:プログラムの意図を考えながら写経
写経のやり方は、「初心者」から「上級者」まで3パターンに分類して紹介します。
写経にビデオを使うのがポイント
ポイントは、「動画(ビデオ)」を使いながら写経する事です。
自分は、「i-pad mini」でUdemyの講義動画を表示させ、それを横目で見ながらノートパソコン(Mac-book)で写経しています。
ちなみに、技術書の書き写しは、少々微妙です。(理由は後で述べます)
写経はスポーツの練習に似ている
写経は、スポーツの「基礎トレ」に該当します。
野球だと素振り、サッカーならリフティング、テニスだったら壁打ちといった所でしょうか?
スポーツの場合は、上手い人を丹念に観察し、同じ様に体を動かしてみて、同じ結果が出る様に練習していきますよね?
これを、「ハードスキル」の練習と言います。
ちなみに、試合などの状況が目まぐるしく変わる状況に対して対応する練習を「ソフトスキル」の練習と言います。
- ハードスキル:正確に繰り返すスキル。ゴルフの素振りやテニスのサーブ、九九など、専門化した行為によく見られる
- ソフトスキル:状況に柔軟に対応するためのスキル。サッカーでディフエンスの弱点を見つけて攻めに転じたり、営業で状況を判断して的確な受け答えをするスキル。
写経のよくある間違い
- 同じ動画を見て何度も写経する
- 内容を完全に暗記する
- 大切な部分をノートにまとめる
これらは、一般的な練習方法としても間違っている事が科学的に証明されています。
例えば、理想的な練習方法は、自分の限界を少しだけ上回る負荷のある練習です。
ですが、同じ動画を見て何度も写経するのは、負荷が上がらず効果が薄いです。簡単な問題だけ解き続けてもテストの点数が上がらないのと同じですね。
コードの暗記は実務でも必要ない、不要な練習です。
また、大切な所をノートにまとめる時間があるなら、コードにコメントを書き、写経する量を増やしましょう。
ビデオの探し方
- Udemyの受講人数が多い講座がオススメ
- Youtubeの場合は「言語名+Tutorial」で検索
- 英語が分からなくても気にしない
オススメは、Udemyの英語の講座で、受講人数が多いものです。
理由は、沢山の人の目(エンジニア含む)が入っているので、変なものがあっても、アップデートの際に修正されていくからです。
「Youtube」でも動画を見つける事も出来ます。ただ、質もバラバラですし、検索している時間がもったい無いので自分はあまりしません。
ちなみに、英語が出来なくても大丈夫です。あくまでも目的は写経する事です。
初心者の練習法:丁寧に正確に写経
初心者は、丁寧に正確に写経をします。必要に応じて、ビデオを止めて写経します。
この段階では意味が分からなくても大丈夫です。ゆっくりと正確に打ちこんでいきましょう。
エラーの例
例えば、Pythonで写経した例を見てみましょう。
# これはエラーとなる for i in range(10): print(i) # これはOK for i in range(10): print(i)
一つ目はエラーとなりますが、2つ目はOKです。
違いは分かりますか?そうです、これは「インデント(字下げ)」によるエラーです。
実際に動かしてみると、「スペルミス」や「カッコが正しく閉じていない」、「改行が不適切」といった、書き間違いでエラーが沢山でると思います。
ポイント1:エラーメッセージはしっかり読む
先ずは、エラーメッセージは何度も読み返しましょう。
先ほどの例だと、以下の様なエラーメッセージが出ると思います。
IndentationError: expected an indented block
少々ハードルが高いかもしれませんが、エラーメッセージを読みながら、修正し、動く様にしていきます。
「エラーメッセージの意味は分からないけど、適当に直したらなんか動いた」
というのはNGです。
きちんとメッセージの意味を読み解くことが、後ほどの上達度合いに大きく差がついてきます。
意味が分からない場合はそのままGoogle検索
意味が分からない場合は、エラーメッセージそのものをコピペしてGoogle検索しましょう。「解決策」という単語を足すのも良いです。
オススメの質問サイトはこちらの記事で紹介しています。
ポイント2:小まめに実行する
とは言え、一気に沢山書くと、どこでエラーが発生したのか分からなくなると思います。
ですので、小まめに実行していくのがポイントです。
自分一人で修正し動かせるのがゴール
メンターがいる場合は、エラーを一緒に見て貰っても良いです。
ですが、自分一人でエラーを修正し、動かせる様にするのがこのレベルのゴールです。
中級者の練習法:ビデオと同スピードで写経
中級者になると、実際にビデオでコーディングしている講師と同スピードでコーディングしていきます。
最初のうちは、全く追いつけないと思います。なので、少し巻き戻しては書き写し、極力リアルタイムで写経して行きます。
ポイント1:まずは「やり切る」
知らない文法や疑問に思ったことは、コメントを付けるのに留め、一旦やり切ります。
そして、プログラムを実行した後に、「知らない文法」や「疑問点」に立ち戻り、調べる事で更に知識を深めていきます。
ポイント2:エラー処理やリファクタリングに注目
「Udemy」だと、講師がコードを書いた後にチェックする場面や、エラーを見つけて修正する場面があります。
また、リファクタリングそのものにレッスンを割いている講座もあります。
こういった、エラーがあった際にどの様に解決しているかは宝の山です。
上級者の練習法:プログラムの意図を考えながら写経
上級者は、既にプログラミングの鍵となる考え方を理解しています。
ですので、実際にコードを写しながら、
「なぜこの様な書き方をするのか?」
という意図を探りながら写経します。
ポイント1:プログラムの意図を探る質問
「プログラムの意図を探る質問」を自分に投げかけるのがコツです。
例えば、
- このタスクでは、どういった要素を追加する必要があるか?
- それを解決するのにどんな方法があるか?
- なぜこの方法を選んだのか?
- もっと良いシンプルな解決法があるのでは?
といった事です。
という意図を探りながら写経します。
ポイント2:最終成果物に到るアプローチ方法のデータベースを作る
この段階では、スピードよりも、何故そのコードが生まれたかのプログラマーの頭の中を真似していくのがポイントです。
つまり、写経とは、コードと最終成果物を結びつけながら、頭の中でアプローチ方法のデータベースを作る作業になります。
初心者に技術書の写経をオススメしない理由
- アプローチ方法が見れない
- 飽きやすい
- 間違えた際のリカバリーが見れない
初心者に、技術書の書き写しをオススメしないのは、いきなり「完璧」な答えが表示されているからです。
確かにいきなり完璧なコードが書けるにこした事はありませんが、試行錯誤を体感して貰う方が初心者にとってはもっと大切です。
また、答えをただ単調に写すだけだと、飽きてしまいやすいです。
一方で、中級者は上級者は、「技術書」の書き写しも効果的です。
各分野でバイブルと言われている様な本を写経する事で、更なる高みを目指すことが出来ます。
写経より効果的な上達法とは?
この様にいい事ずくめな写経ですが、あくまでも「完成したもの」をなぞる勉強法です。
ですので、ある程度上達したタイミングで、自分一人でコードを書いたりサービスを開発してみる事を強くオススメします。
サービス開発のコツはいくつもあるので、サービスを開発した事のある現役エンジニアに聞くのが一番の近道です。
自分の場合は、プログラミングスクールやメンターをつけてそれをやりました。
まとめ
プログラミングで写経を最大限に活用する方法について解説してきましたが、いかがでしたか?
「学ぶ」という単語は、「真似ぶ」から来ていると言われています。
何事も、上達の近道は、既に上手く行っている人を徹底的に観察し、真似る事です。
ここで解説した写経の方法があなたのプログラミング上達の役に立つ事をお祈りしています。