どうも、くまだです。
Web制作の学習を始めてから今日まで700日ぐらいたつんですけど、最初期のころ注意していたことをいくつか書いておきます。
Web制作学習で注意することは
- インプットしかしない
- 教材を読んで満足、調べて満足する
- 実際に手を動かさない、コードを打たない
- コードの写経しかしない
- コードは暗記しようとしない
- プログラミング学習仲間を作らない
という感じかなと。要はこれと反対のことをすればいいと考えます。
- インプットしかしない → アウトプット学する
- 教材を読んで満足、調べて満足する → アウトプットする
- 実際に手を動かさない、コードを打たない → アウトプットする
- コードの写経しかしない → アウトプットする
- コードは暗記しようとしない → アウトプットする
- メンターやプログラミング学習仲間を作る → 仲間つくろう!
あとは、「完全に理解してから始めたい病もやめる」ことです。*今回の記事は、は、私の別ブログで掲載したものをそのままこちらのブログに引っ越した形となっております。
コードの暗記は不要、ググればOK
暗記しようと思って勉強する意味はないかなと。なぜなら、コードを書く練習をしていれば自然とは覚えていられるようになるからです。暗記しようと思ってコードを打つのではなくて、コードを書いているうちに気がついたら覚えているみたいな。
コードの写経とコードの模写の違い
コードの模写もしくは写経はプログラミングの勉強法としてはそれなりに知られている方法です。私的には、写経よりも模写のほうが力がつくと考えています。
ちなみに写経と模写は違います。このあたりの話は、以下の記事でも解説していたと思います。
コードの写経は、まずお手本となるコードがあり、そこコードをそのまま手打ちして動作を確認しながら前に進めていく勉強法です。要するに、解答が準備してある状態です。
学校の授業で例えれば、先生が黒板に書いたものをそのままノートに書き写す感じ。いわゆるサンプルコードなどがあって、もしくはwebサイトのコードの見本などのコード写経は、どちらかというとインプットの部類に入ります。
- こういうコード書けばこういう動作がある。
- このコードとこのコードを組み合わせてやると、こういう動きが実装される
みたいな、動作の確認作業をするんだったら、コードの写経は有効だと思われます。
- 目の前にお手本となるコードがあって、それを書き写すのがコードの写経
コード模写の方は、解答のコードはわからないですが、完成状態のものがある状態。自分でコードを調べて完成版のお手本の通りになるようにを作るみたいな感じです。
コード模写は、アウトプット寄りです。
模写は例えば、
- こういう動きのプログラムがあって、これをそのままそっくり実装
- お手本のWebサイトをそのままそっくり作成
みたいな感じで、目の前にお手本となるコードはないけれど、「お手本となる素材」はあると。
コードの写経はインプット学習、模写はアウトプット学習
よくやるものが、例えば動画教材でもテキスト教材でも何でもいいのですが、そこに書いてあるコードを書き写して学習する。
それでインプット学習。コードの文法を学ぶみたいな。それも勉強にはなります。
そもそも文法やコードの意味を知らないとアウトプットできませんから。
コードの写経で学んだ知識を、アウトプットするのが大事です。
写経は、全く意味がないというわけではありませんが、模写のほうは自分で調べる作業が発生するので、どちらかといえば模写のほうが力がつくと思います。
写経がダメというわけではなくて、役割が違うから、一概にどちらが優劣という話ではありません。
写経は写経でいい面もあります。
例えば、模写は知識があればいいのですが、ない場合は調べるといってもめちゃくちゃ時間かかります。写経だと答えは用意されていてそれを書き写すだけなんですが、ただ書き写すだけだと勉強にはなりません。
しかしプログラミングのコードの意味やコードを組み合わせるとをこういう動きがつくだとか、そういうのはすぐに分かります。模写はその辺を自分で0から調べなくちゃならないので時間がかかります。
時短できるという意味ではそうですし、 パターンを知る、という意味では模写よりも写経のほうが有効なのかなと。なので、勉強のやり方としては、
- 教材をみて写経し、インプットする
- インプットしたものを模写としてアウトプットする
暗記する必要はないんですが、テンプレートというか、パーツのテンプレートとして覚えておくのもいいかもしれないです。早くコードを効率的に打つとなるとどれだけのコードのパターンを知っているかになります。
2つともやり方、学習目的が違います。
動画学習やテキストで学習するのも写経です。目の前にお手本のコードがあるので。
コードがない状態で、自分で考えて実装してみる。それがアウトプットです。
だからどちらが正しいとかいうわけではなくて両方やった方がいいです。
学習的な手順でいえば、
- テキストでもサンプルコードでも何でもいいんですが、お手本を見ながらコードかいてみて動作・どういう表示になるか確認してみる。
- それを繰り返し、内容や文法のチェック
- 理解したら、模写をしてみる。
エラーやわからないことがあったらその都度ググる、とという感じ。
これに関しては写経も模写もやることは一緒です。
Twitterでみていると、プログラミングの勉強でコードを写経させる教材のものが結構見かけます。
ゼロからオリジナルのものを作るのはなかなか難しいので、初心者のうちは写経と模写をうまく組み合わせてコードをかくことですね。
それに慣れることで、オリジナルの、自分だけのアプリやサービスが作れるようになる!・・・はずです。
教えてくれる人を身近におこう
プログラミングの学習をしていると、独学の限界を感じる時がたまにあるんですよね。
高度な勉強しているというわけではないんですが、勉強していると、
- 他人から見た時の自分のレベル感
- 他人から見たときのコードの状態・状況
- 制作物のレイアウト
とか、見た目がどうとかそういうのが 自分ではわからないわけですよ。
そういう時に備えて、メンターを雇うのが一番です。
無料で独学もいいけど、時間がめちゃクソかかるので、お金をかけてプログラミングスクールやメンター雇って時短する。
金はかかるが、稼いで取り戻せばいい。
時間のほうは、なくなったら二度と取り戻せないので有効に使おう
メンターは、現役でエンジニアやっている人が多いので、特に自分が書いたコードを評価してもらうには最適です。自分の周りにそういう人がいればいいかもしれませんが、私の場合はそういう人は全く1mmもいませんでした。
今すぐそういう人がほしいのであれば、MENTAというサービスでメンターを雇ってみるのもいいでしょう。
勉強している仲間同士で競争しあうのもいいですが、ある程度レベルが高い人からの評価も大事です。やっぱり数段上の人からの評価なりコメントなりもらうと非常に助かります。
もちろんメンターだからといって何でもわかるというわけではありませんが、少なくとも自分よりはめちゃくちゃわかるのでその点は安心です。
コードを見てもらう以外のサポート
メンターを雇うことのメリットは、コードを見てもらえるということの他に、メンターにもよると思いますがオリジナルの課題を出してもらえるということです。
課題といっても実務に沿った形で学習することができます。
自分がやっている勉強方法や勉強する方向性とか転職に関する悩みとか、そういうのも相談できます。その辺はやっぱり独学では分からないことなんですよね
メンターを雇うのは費用がかかりますが、稼げるようになれば、今まで支払ったものはすべてペイと考えると、考えようによっては安い出費なのかなとも思います
プログラミング完全に理解してから先に進みたい病をやめる
プログラミング理解してから始めたい病は卒業しましょう。
プログラミングに限らないかもしれないですが「完全に100%理解してから前に進みたい病」というのは、卒業した方がいいかもいいです。
というのもそれだとプログラミングがインプット作業メインになってしまうからです。勉強においてはインプットもアウトプットも大事なんですよね。
それはプログラミングにおいても同じでインプットばかりではなくアウトプットもした方がいいわけです。学習段階におけるプログラミングのアウトプットは、
- 今まで得た知識を元に自分でコード考えて組み合わせて書いてみること
- わからなかったらググること。
みたいな感じですね。
⬆で説明したコードの模写なんかもアウトプットです。
エラーが起きたらまたググる、の繰り返しです。Progate何周も何周もして100%理解したいという人もいるかもしれませんが、あんまり意味はないかなと。
やっぱり基本はアウトプットにあります。そうしないと先に進まないからです。
100%理解してから前に進みたいという気持ちはわかりますが、実際のところ100%はムリです。そもそもとしてインプットだけを100%理解してやるというのは少々厳しい。
100%理解できたことに越したことはないんですが、重要なのはインプットしたデータや知識をもとにアウトプットすることです。
実際に自分でコードを書くこと、いかにどれくらいできるかにかかってると思うんです。
この辺りを意識するといいかなと、個人的には思いました。
- インプットしかしない → アウトプットする
- 教材を読んで満足、調べて満足する → アウトプットする
- 実際に手を動かさない、コードを打たない → アウトプットする
- コードの写経しかしない → アウトプットする
- コードは暗記しようとしない → アウトプットする
- メンターやプログラミング学習仲間を作る → 仲間つくろう!
ここまで読んでくださりありがとうございました。