プログラミング学習

【悲報】プログラミングは教材どおりに勉強するだけではスキルが向上しない

どうも、アツシです。

僕は公務員を辞めてエンジニアに転職するため、まず始めに初心者のプログラミング学習で有名なProgateで勉強を始めました。

教材通りに一つ一つステップを踏むことができ、自分の中で「プログラミングが身についている」と手ごたえを感じていたところです。

 

しかし、いざプログラミングスクールの事前課題やアウトプットする際、「あれ?何をしたらいいんだ?」と手が止まり全然進めなかった経験が後を絶ちません。

 

真面目に教材の知識を吸収してきたはずなのに、求められているコードが入力できずにエラーの嵐。

そうなんです。プログラミングは教材どおりに勉強しただけでは身につかないスキルなのです。

その理由と正しい学習方法についてプログラミング初心者の目線で紹介していきます。

教材どおりのプログラミング知識だけでは不十分

Progateを始めとした教材は、誰しもが一つの答えに辿り着くようにできており、ヒントや時には答えをすぐに見ることができます。躓いても完走できるよう常に補助がついている感じです。

にも関わらず、勉強中は知らず知らずに誘導されている自覚がないので、自分の書いたコードが答えと一致したら「できるようになった」と認識してしまうんですよね。

Progateでいうと、Rubyの注文システムやRailsで作ったSNSが、自分で実装できる段階までレベルアップしていると本気で思っていました。あの頃は若かった…

 

実はこれ、ただの勘違いなんですよ!

 

実際に1からアウトプットする時になると、まず最初の一歩が踏み出せないです。教材どおり以外のコードになると急に手が止まるのです。

教材ならわからない時はすぐにヒントや答えを見られるのですが、アウトプットする際はエラーの原因が何かすら誰も教えてくれません。何ができていて、何ができていないのか、モヤモヤした状態がずっと続く感じですね。

つまり、教材はあくまで動作確認を肌で感じる程度で、実際にコードを書く時にはあまり役立つ内容ではないってことです。まぁ、それで全てできるようになったら、簡単にエンジニアになれちゃいますからね。

 

僕はProgateでRubyを5周以上、Railsを2周ほど進めてからプログラミングスクールの事前課題に挑戦しましたが、お恥ずかしいことに1問目で躓きました。

120分かけて1問も正解を出せなかったのです…

事前課題の必須スキルに『ProgateのRubyⅠ』と書いてあったので、初歩中の初歩レベルの問題だと余裕ぶっこいでいたのが正直なところでした。ぶっちゃけ舐めていましたね。

そんな自信満々で挑んだ試験にタコ殴りにされたことで、ようやく自分のレベルの低さを実感することができました。まさに冷や汗タラタラでしたよ。

 

僕の場合、いきなりの標準入力にテンパりましたけど、不明な部分を調べていくうちに「ハイハイ、なんか勉強したことあるね」と1日で解決することができました。

やっぱりプログラミングは自分で悩んで解決した時に知識が定着するんだなと改めて実感したところです。

いやー、なんとか合格できてよかったです。一時はどうなるかと本気で焦りましたから。

 

できない部分を明らかにすることは、アウトプットしないと気がつかない問題なので、一つの教材を終わらせたら実際にその知識を使って何か作ってみることが大事です。これを怠ると、やっている気マンの仲間入りをして、いつまで経っても成長しません。

やはり教材は感覚を掴む程度で、完コピを目指さない方がいいです。

そんな暇があったら、さっさと自分で何を作るか構想して、それを実際に作る作業がプログラミングスキルを向上させましょう。

プログラミングは人から教わっただけでは身につかない。この事実を早く認識するかどうかでエンジニアとしてのレベルアップに差が出るのは間違いないですね。

プログラミング初心者のアウトプット手順

アウトプットが大事なのはわかったけど、具体的にはどう学習を進めたらいいのか?

この辺が曖昧な人も多いと思います。いきなりWebサービスを作れと言われても何から手をつければいいかわからないですからね。

ザックリした学習手順はこんな感じです。

  1. 環境構築
  2. 学習教材のコードを自分でアレンジ
  3. いざ自分でサービスを考え実装する

1.環境構築

まず、Progateなどネット環境でプログラミング学習している人は、自分のパソコン上でプログラミングするために環境構築しなければいけません。

ただ、プログラミングの勉強を始めたばかりの初心者にとって、専門知識を必要とする環境構築は非常に厄介です。

ネットで調べれば、WindowsやMacごとの作業手順を知ることはできますが、パソコンによっては手順どおりに進めても平気でエラーが出ることがあり、一度エラーで躓くと8割方解決しないまま挫折する人が続出しています。

僕もWindowsでRailsの開発環境を構築する際に、Progateの手順通りに進めたのにサーバーが立ち上がらないエラーが発生し、2日ほど調べて色々試してみたのですが無理でした。

 

正直、プログラミング初心者が環境構築に時間をかけるのは無謀です。

なので、まずは調べた手順でやってみて、エラーが出たら自分で解決するのは諦めましょう。ここに労力を使うのは効率が悪いです。

解決方法
  • メンターを探して依頼する

プログラミングを最初から最後まで一人で勉強するのはハードルが高すぎです。

時間もかかりますし、何より挫折の可能性が高くなるので、何かしら躓いたら支えてくれる存在が必要だと僕は考えます。

環境構築も誰かに頼むくらいの考えでOKです。プログラミングを学んでいるうちにパソコンの知識も深まるので、環境構築については後から理解するつもりでいましょう。

2.学習教材のコードを自分でアレンジ

僕がアウトプットとして最初にやったのが、ProgateのRailsレッスンで完成させたSNSサービスをベースに自分でコードをいじって動作確認することでした。

いわゆる模写ってやつですね。

ただ、そのまま写すだけでは力にならないので、教科書にはないアレンジを加えることで、全体にどう影響するのかを認識することが重要です。

とはいえ、血眼になってコードを覚えることはせず、ちょっとコードをいじったらエラーが発生して、その原因を肌で感じるような形で、何かを作ることではなくパソコン上で動く生のプログラミングに慣れることを意識しました。

この辺は、遊び感覚で楽しみながらやるといいでしょう。気持ちはエンジニアの仲間入りです。

3.いざ自分でサービスを考え実装する

プログラミングを勉強してWeb系エンジニアとして報酬を得ている人のtwitterを参考にしても、皆さん口を揃えて「小さなものでいいから、自分で考えたオリジナルサービスをアウトプットしろ」と言っています。

プログラミングってスポーツと一緒で、頭で理解していることと実際にできることって違うんですよね。

つまり、知識だけ溜めても、それがスキルとして表現できるかは全く別物というわけです。

 

そして、イメージと現実のギャップを知るには、実際にやってみるしか方法がありません。

だからこそ、口酸っぱくアウトプットを連呼しているのです。インプットオバケになってはエンジニアとして成長していない可能性が高いってわけ。

 

とはいえ、アウトプットするためには、コード以外にもたくさん勉強しないといけません。

何度も躓いては調べてを繰り返して、ようやく形になるので、最初は焦らず一歩一歩着実に進みましょう。

できないことを調べて解決するプロセス、いわゆる問題解決能力がエンジニアには必要なスキルなので、悩んだらチャンスだとポジティブに考えていきましょう!

【まとめ】教材の内容を完璧に覚えるのは非効率

  • 教材の内容をマスターしても、できているつもりパターンが多い
  • 教材の内容理解→模写→アウトプットの流れがオススメ
  • アウトプットは躓くことばかりだけど、それを乗り越えるたびに成長している

僕のこれまでの歴史上、大学試験や公務員試験の勉強では、徹底的に知識を頭に叩き込む作業が効率的でした。

しかし、プログラミングにおいては、教科書の内容をインプットすることに時間をかけすぎるのは勿体ないです。学校の勉強と同じやり方をしてはいけません。

Progateをみっちり1ヶ月もやっていた僕としても、早めに次のステップに移行したらよかったと後悔しています。その時完璧に覚えても、すぐに忘れちゃいますから…

たしかに環境構築は面倒ですが、自分でコードを入力して、どんなエラーに悩まされるか肌で感じる経験を早めにするといいでしょう。

さぁ、Let’sアウトプットですぞ!

 

▼アラサーの僕がエンジニア就職するまでの全記録はこちら

31歳で公務員を辞めて未経験のWebエンジニアに転職するまでの軌跡どうも、Webエンジニアを目指しているアツシです。 この記事では、アラサーの僕がWebエンジニア転職するまでの記事をピックアップし...

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です