プログラミングの勉強法の一つに、
本や既にあるサイトのソースコードを見て
そのまま書き写し、技術の修得をする「写経」があります。
これは初期の人に多くの人が勧める勉強法であり、
実践量に対する効果は確かにありますが、勉強を
長い目で見た場合、気を付けるポイントがいくつかあります。
ソースコードを探している方、ソースコードを書き写して
勉強をしようと思っている方は、是非ご参照ください。
コードの写経は勉強にはなるが、それだけでは足りない
写経をすると、プログラムの中に出てくる単語や文法を
頭と体の両方で辿るため、本を読んだり動画を見ていることに
比べると、より効率良く学習をすることができます。
特に、最終的に具体的に作りたいサイトやサービスがあるなら、
その原型となるものを書き写して完成させることは、
自分が作るイメージを沸かせる上でも効果的です。
ですが、私も経験したことですが、写経だけをやっていると
いざ自分でゼロから何かを書いて作ろうと思った時に、
自分でもびっくりするほど、何も書けません。
・ヘッダーを模写サイトのような構成にしたいけど、
必要なタグって何だっけ…?
・横幅のピクセルってどのくらいが相場だっけ…?
・floatで横並びにする時って、それ以外のCSSは
どういう命令をどこに入れればいいんだっけ…?
そうやって具体的な目標に向かってコードを書き、
試行錯誤したりググったりする経験を積む中で、
徐々に書き方を覚え、何も見なくても書ける部分が
少しずつ増えていきます。
なので、ひとつのコードを写経するのは
最大でも三回くらいが限度だと思ってください。
処理の流れを覚え、ある程度書く感覚も掴んだら
あとはひたすら、実践あるのみです。
最初に一番抑えるべきことは、命令の処理の流れ
WEBサービスで何か機能を一つ追加しようと思った時、
300行や500行のコードの丸暗記は現実的ではありません。
しかし、序盤中盤終盤と何を書けばいいのかを把握して
人がコードを書けるのは、その機能の処理全体の流れを
把握しており、パーツをはめ込んでいく作業だからです。
例えば、ユーザー登録をする機能を作ろうと思ったら
・HTMLとCSSで全体の骨組みを作る
・送信ボタンを推したら、POST通信で情報を送る
・送った情報を変数に入れて、バリデーションをする
・エラーがあったらエラーの表示を返す
・エラーが無かったら、データベースに
登録時に記入した情報を送信して、
画面をマイページに遷移する
こういった機能の流れが分かっていれば、
多少コードの中身が分からなかったとしても、
要点をネットでググって調べたり、過去のデータや
他の機能の一部を流用して何とかすることができます。
しかし、処理の流れを何も理解していないと、
何から手をつければいいか、何の命令をすればいいか
さっぱり手掛かりがなく、何一つ書けなくなります。
この段階で最初にやるべきなのが写経であり、
一通り訳のわからない状態でも一度書いてみることで、
ざっくりと全体の処理の流れを知ることができます。
何も考えずただ書き写すだけでは、
効果はゼロとは言いませんが、効率が悪いです。
必ず「処理フロー」に注目するようにしましょう。
プログラミングは英単語や社会の問題のような
暗記ではなく、感覚で覚えていくものなので
日々大量のコードを書きまくることが重要です。
教科書を1から10まで書き写すことは非効率
世の中には、たくさんの技術書が販売されています。
特に未経験者は、分厚い入門書を買い込んで、
1から10まで、載せられているコードを
全部入力していきたい衝動に駆られることもあります。
事実、そうやって勉強して伸びた人もいますし、
分厚い本も、一ヶ月あれば攻略は可能です。
ですが、あなたの目的は、プログラミングを
1から10まで丁寧に勉強することではないはずです。
就職なり、スキルアップなりをして、
「稼ぐ」などの具体的な目標があるはず。
その場合は、必要な技術だけを最短最速で吸収し、
一日も早く、一円でも多くの金を稼ぐ必要があります。
私はウェブカツというオンライン完結のスクールに
入っていますが、今まで見てきた全ての教材の中で、
圧倒的に分かりやすく、進行が早いです。
同時期にHTMLとPHPの入門書を買いましたが、必要な
要点だけを掻い摘んでおり、該当部分は1日で終わります。
にも関わらず、恐らく2か月後にあたる
今月末時点では、WEBサービスを作るために必要な
スキルは、完全ではないものの、一通り揃う予定です。
仮に独学だった場合、最初に買った入門書を
やっと全部こなした程度で満足していると思います。
「何をいつまでにやればいいのか」を示してくれる教材や
メンターをお願いできる方を、入門者は必ず手に入れましょう。
効率が全く違いますし、貴重な時間を無駄にしてはいけません。
コメント