現役SEが初心者が挫折しないプログラミング勉強法を語ってみる。

どうもです!わだっしーです!

今回は
「挫折しないプログラミング勉強法」
について話していきたいと思います。

 

プログラミングを挫折する人って、
みんな同じところで躓いたり、
勉強方法が悪かったりで、
共通していることが多いんですよね。

僕もその一人で本当に初心者の頃は、
たくさん参考書や入門書を買って勉強しようとしたけど、
やらずにホコリをかぶっていたものがたくさんあります笑

それに僕の周りでプログラミングに挑戦しようとして、
挫折するひともこんな感じだったなー
というのがありますので、
挫折ポイントと勉強方法について話していきます。

これは僕が実際に経験してきたこと、
まわりの人を見てきて実感したことなので、
当てはまる人は多いと思います。

なので、プログラミング難しそうだな、、
プログラミングちょっとやったけど諦めちゃったな、
っていう人は必見です!

プログラミング学習挫折ポイント

プログラミング勉強法について話していく前に、
まずは挫折しちゃったであろうポイントについて
話していきたいと思います。

まずは問題点を把握・解決方法を知って、
その後にこの記事の後で書く勉強法を実践しましょう。

そうすれば迷わず目標に向かって、
ズドーンと一直線にプログラミングができるように
なるので、順次読み進めていってくださいね。

 

初学者が陥る挫折ポイント5選

初学者の挫折ポイントは下記のようになります。

  • やる気が続かない
  • 勉強できる時間がない
  • 意味不明な用語が多い
  • 環境構築ができない
  • プログラムが動かない

うーん、現状の僕でも嫌になっちゃうような項目ですね笑

それぞれ見ていきましょう。

 

 

まずは、やる気が続かない、ということですが、
やる気が続かない一番の理由は

目標が明確にない

ということです。

いや、ちゃんと目標あるって、、、

そういう人も多いかと思いますが、
目標というのは

具体的であること

が大事になってきます。

具体的ではないとどうなるかというと、
やることが明確でないから迷子になったり、
やってもやってもゴールにたどり着かない。

なんてことになってしまうのです。

例えば先に話したような
「プログラミングが出来るようになりたい」
って全然具体的じゃないですよね。

どういうところが具体的ではないかというと、

  • プログラムミングが出来るようになって何をしたいのか
  • プログラミングでどんなものを作れるようになりたいのか

という風に具体的ではないと、
やみくもに勉強する羽目になってしまうので、
段々とやる気が落ちていって、
結局止めてしまうなんてことになりかねないのです。

だから目標は具体的にしていく必要があるのです。

 

僕がJavaを習得した時の話ですが、
ただ「Javaを書けるようになりたい」
っていう目標だとやる気が起きなくて、
勉強すらしませんでした。

ですが、
「Androidアプリでゲームを作ってみたい!」
っていう目標を設定したら、
やる気がにょきにょきと湧き出てきましたし、
最終的にJavaを書けるようになって、
Androidアプリでゲームも作れるようになりました。

そうやって具体的にすることで、
やる気にもつながりますし、
どんなことを勉強したらよいか、
ということも見えるようになるのです。

Javaを勉強する、というだけだったら、
僕はAndroidアプリでゲームを作ることが
出来なかったと思いますし、
今でも明確な目標が無かったら、
やる気を保てない自信があります。

 

だから目標を明確に持つということが、
大事だということを知ってもらえればと思います。

 

 

次に勉強する時間がない。
ということですが、
計画的な学習計画を立てられていない
可能性が高いです。

学習計画って学生の時のテスト期間とかは、
結構立てている人は多かったと思います。

でも、計画は立てたけれども、
その通りに行かなくて自己嫌悪に陥ったり。。

そんな悩みを解決するために、
僕は実践と改善を繰り返してきて、
下記の6つのプロセスをすることが、
ベターだと感じています。

僕は普段の仕事に関する勉強だとか、
ビジネスや技術に関する勉強をするときは、
必ず下記の6つのプロセスを踏むことで、
モチベーションに依存することなく、
淡々と学習目標を達成することに成功しています。

学習計画を立てるにあたって、

  • 日々、勉強に使える時間を把握する
  • 勉強すべきことを把握する
  • 学習方法の決定
  • 勉強すべきことからかかる時間を出す
  • 明確な学習完了日を決定する
  • それが実現可能であること

ということが大事になります。

今のあなたの学習計画は
この項目を満たしていますでしょうか。

これが満たされていないと、
目標達成までにやる気が続かなかったり、
計画通りにいかなくて自分を責めてしまったり
してしまうことがあります。

僕がAndroidアプリを作ろうという目標を立てたときは
どんな感じだったかというと、

  • 平日は1日1時間、土日は3時間勉強できる。
    1ヶ月で50時間ぐらいは勉強に費やせる。
  • 勉強すべきはJavaとAndroidアプリの2つのこと
  • 学習方法は
    「Java入門書(全500ページ)」
    「Androidアプリ入門書(全500ページ)」
    の2冊の本。
  • 本2冊で合計1000ページあって、
    1時間で10ページぐらい勉強できるから、
    100時間あれば出来るようになる。
  • 1ヶ月目で「Java入門書」を学習。
    2か月目で「Androidアプリ入門書」を学習。
    合計で2か月で目標達成。
  • 勉強できる時間は少なく見積もっているし、
    勉強スピードも余裕を持っているので実現可能。

といった感じで学習計画を立てていました。

こんな感じで進めると、
明確にやるべきことがわかるし、
途中でやっていないとなっても
どうやってリカバリーしたらよいか
ということもわかるようになります。

これができていないと、
どれだけ時間があってもなかなか
プログラミングができるようにならない
といった現象に陥りがちなので要注意です。

時間が足りないと感じている人は、
自分の時間というものを目に見える形にして、
したうえで上記の学習計画を立てましょう。

 

どうしても時間の捻出ができないという人は、
一日のうちにやっていることを全部書き出してみるのが
めちゃくちゃ効果があります。

例えばこんな生活をしている人は、
もっと勉強に時間を使うことができるはずです。

  • 毎朝ジョギング
  • 夜はジムに通う
  • 仕事をする
  • 寝る時間はきっかり7時間
  • テレビを見る時間
  • Twitterを見る時間
  • Youtubeを見る時間

ここまでたくさんのことをしていないにしても、
どれか1つ、2つを削ることができれば、
勉強時間は捻出できるはずです。

これは細かく出すほど時間を
たくさん捻出できるのですが、
まずはこれぐらいざっくり
しているほうがちょうどよくて、
最初から削りまくろうとすると、
ストレスがハンパないことに
なるのでおススメしないです。

まずは自分の出来る範囲から、
削れるものを徐々に削っていくという
意識を持つようにしましょう。

そうすることで勉強時間は増えていきますし、
勉強に充てる時間が増えるほど、
プログラミングの習得までの期間は短くなります。

プログラミングができるようになったら、
自分へのご褒美を用意しておくのも
いいかもしれませんね。

ご褒美欲しさにダッシュしてしまうかも笑

 

 

次に意味不明な言葉が多い、ですが、
わからない用語がたくさんあると、
だんだんイライラしてしまったりしてしまいますよね。

実際、今の僕でもそう感じます笑

でも、
そういう時はどうしているかというと、

いったん理解を飛ばしてみて、
必要になったら理解しようとする

ということをやっています。

最初からプログラムのすべてを理解できる人は
天才でもない限り難しいです。

特に初心者の段階だとそうで、
まずは動かすことということを大事にしましょう。

 

例えば、
「オブジェクト指向プログラミング」
と聞いて初心者の方は、
全く意味不明だと思います。

僕も最初はそうでした爆

だけれどもこの意味というのを
明確に理解できるようになったのは、
プログラムをある程度かけるように
なってからだったし、
それまでで不自由したことは少なかったです。

で、ある程度の段階になると、
「オブジェクト指向プログラミング」
というのをきっちり理解しないと、
スキルは向上しないと思った時があったので、
そのときにしっかりと勉強した感じです。

だから30分調べて分からなくて、
聞ける人もいないのであれば、
まずは勇気をもって飛ばしちゃいましょう笑

とにかく用語について大事なのは、
「少しずつでもいいから理解していく」
ということです。

一つ一つ理解していくというのは、
最初はすごく難しいし、
それだけで時間ばかりがいたずらに過ぎて、
勉強がなかなか進まないので、
ちょっとずつ理解していく
ということを大事にしてください。

 

何よりもとにかく動かすということ、
やりながら理解していくというのが
プログラミング学習では大事です。

 

 

次に環境構築ができない、
ということですが、
人に聞くということが手っ取り早いです。

まずは知っている人に聞くですが、
これはリアルでもネットでもどちらでもいいです。

リアルのほうが解決しやすいのはわかりますけど、
そんな聞ける人なんていないだよ!!
っていう人が多いと思います。

なので、
ここではネットでの質問方法の極意を
紹介したいと思います。

 

ネットで質問をするときに気を付けたいのは、
自分の作業環境と自分がどころで躓いているのかを
明確に伝えることがカギを握っています。

そもそも環境構築というのは、
あまりにもショボい作業PCでない限り
出来ないということはありません。

なので、
自分の状況さえきちんと伝えることができれば、
親切に答えてくれる人は出てくるでしょう。

逆に自分の状況をきちんと伝えられないと、
質問に回答する人もどのように答えたらよいか、
ということがわからないので、
何となくの回答が返ってきます。

 

じゃあ、どういう風に質問すればよいかを
具体例でみていきましょう。

今回は
「JavaのJDK(開発キット)をインストールしたけど
コンパイルと実行ができない」
というケースについてみていきたいと思います。

まず悪い質問例としてはこんな感じ

「JavaのJDK(開発キット)を
インストールしたのですが、
コンパイルと実行ができませんでした、
どのようにしたら出来るようになりますか?」

これだけだと回答者は、

  • どんな環境でやろうとしているのか
  • インストールはどのようにやったのか
  • インストール後は何をしたのか

ということがわからないので、
次にどのようにすすめたらよいか、
ということがアドバイスできません。

なので、
もっと具体的に質問をする必要があります。

良い質問例とはこんな感じ、

「JavaのJDK(開発キット)を
ミニマムインストールと、
JDKのパスの設定をして、

hello.java
(プログラム内容)
というプログラムを作って
コンパイルをしたのですが、
~~~~というエラーが出て、
コンパイルができませんでした。

どのようにしたら出来るようになりますか?

作業PCは、
OS: Windows10 x64
CPU: 2.4GHz
メモリ: 8GB

です。」

こういう風に質問されると、
回答者も

「じゃあ、もう一回JDKの環境変数のパスを見直してみて」
「コンパイルしたときのコマンドを教えて」
「そのインストール方法だとダメだからこうやってみて」

というように次につなげることが
出来るようになるのです。

初心者はこれだけできれば、
十分に回答してくれる人は多いと思いますよ。

意外といい人ばかりなので笑

 

質問サイトとしては下記がお勧めです。

すぐに回答をもらえるとは限りませんが、
僕もお世話になることがあるので、
非常におススメですね。

質問をする力というのも鍛えられるので、
ぜひ活用してほしいなと思います。

 

 

では最後にプログラムが動かない
ということですが、

プログラムは動かなくて普通

というマインドを持つと、
モチベの管理がしやすいです。

プログラムを書いていると全然動かなかったり、
思ったように動かなくて、
自分には無理なのだと思ってしまいますよね。

でも、安心してください。

僕も動かせないときはあります。

あっれー、、、これで動くはずなんだけどな。。

そういうことは今でも普通にあります。

もう、それが普通なので、
もはや
「もう、この子は本当にしょうがないなぁ」
とかもいながらプログラムを書いては
実行を繰り返しています。

コンピュータは人間が指示した
通りにしか動かないです。

ほんの一文字でも間違ったら動かないです。

でもそれって、
人間って本来苦手な事なんです。

なぜなら完璧にミスのない
人間なんて存在しないからです。

ミスって当たり前なのです。

 

じゃあ、気持ち面はわかったけれども、
具体的にプログラムが動かないときは
どうしたらよいかというと、
やるべきことは3つ。

  • プログラムが吐いたログをきちんと読む
  • エラーが出ている個所のコードを読む
  • 原因の仮説を立てて修正・実行を繰り返す

プログラムが吐き出したログを見ることで、
少なくともエラーとなったプログラムの箇所がわかります。

その箇所のプログラムを精読したり、
その時のサーバやPCのリソース情報を漁ってみたり、
通信ログを漁ってみたり、

そうやって問題を大きな範囲から問題点を
ドンドン絞っていって、
最終的に明確な原因をあぶりだすことで、
デバッグをすることができます。

 

この作業はすごく地味でプログラミングを
している気にならない感じがあるのですが、
それは大きな間違いです。

むしろこれこそがプログラミングの醍醐味だと思うし、
実力を伸ばして現場で活躍するには、
非常に大事な作業なのです。

僕が現場で仕事をし始めの時は、
プログラムを読むのがすごく嫌で、
適当に読んでなんとなくデバッグ作業を
していました。

ですが、それで実力が醸成されることもなく、
ただ業務をこなしているだけになっていて、
得られたものはとても少なかったのです。

それを先輩や上司から指摘されて、
きちんと読むように気を付けてデバッグをするようにしたら、
自分のプログラミングスキルが上がっていくのを
実感することができましたし、
実際に現場で素早く品質を担保したコードを
書けるようにもなりました。

だから、デバッグ作業だけは何としてでも、
諦めずに取り組んでほしいと思うし、
まわりやネットの人間をうまく使いながら、
解決して活躍できる人材になってほしいなと思います。

 

挫折ポイントを知り避けて勉強を楽しもう

ここまでで挫折ポイントと対策を話してきました。

まとめると下記のようになります。

  • やる気は具体的な目標を立てて保とう
  • 超具体的に定量的に学習計画を立てて時間をうまく使おう
  • わからないことは30分調べて分からなかったらあきらめる。必要になったら勉強しよう。
  • 環境構築はネットや周りの人間をうまく利用して解決しよう
  • 地道にログやプログラムを読んでデバッグしよう

 

自分はこういうところで挫折するかもしれない。。

それを知ることで、
勉強の挫折を避ける
ということが可能になりますし、
自分の目指すスキルセットを手に入れることができます。

プログラミングは難しいから、、、

そういった諦めの理由は、
「自分は挫折するかもしれない」
というところからきているので、
それを払しょくしてしまえば、
挫折なんてものは消えてなくなります。

挫折したくて勉強しているわけではないと思いますし、
プログラミングが出来るようになりたくて、
勉強をしているはずだと思います。

だからこそ、挫折ポイントをしっかり押さえて、
挫折を避ける勉強をしてほしいなと思います。

 

それにこれはどうしても伝えておきたいのですが、
本来勉強というのは楽しいもの
です。

僕はプログラミング以前に、
コンピュータサイエンスの世界に魅せられて、
この業界の仕事をしているのですが、
勉強をすればするほど楽しいですし、
もっと勉強したいと思うばかりです。

自分の手で作れるものが増えますし、
それを人に共有して一緒に創造していくのが、
楽しくてたまらないのです。

だから、義務だったりお金のためだったり、
そういった面白さに直結しない目的を持っていると、
勉強というのはつまらなくなると思うのです。

だから、自分の純粋な学習意欲を大事にしてほしいし、
楽しみながら勉強をしてほしいと思います。

人間の脳力なんて誰も大差ないですし、
結局は気持ちの問題だったりします。

だからまずは
心が跳ねる勉強する理由
を時間をかけてでも見つけることが、
勉強する上で一番大事な事だと断言できます。

 

それに日本の教育は、
正しい正解を出せる人材を育てる
ようにできているので、
間違うことが悪とされています。

だからテストでいい点を取らないといけない、
という謎の価値観のせいで勉強をつまらなく
していると僕は考えています。

教師陣も教科書通りのつまらない講義を
する人も多いですからね。

それも勉強をつまらなくしている一要因だと思います。

コンピュータサイエンスの世界、
工学の世界、
エンジニアの世界、

こんな面白い世界はないと僕は思っています。

だから、自分なりの
「心躍る勉強する理由」
を見つけてほしいなと心の底から思います。

 

この記事を読んで、
楽しみながらプログラミングを勉強する人が
一人でも増えたらいいなと願っています。

 

 

ここまで読んでいただきありがとうございます!

以上、わだっしーでした!

稼ぐエンジニアの考え方を凝縮した電子書籍をプレゼント中

僕はシステムエンジニアとして
年間6000万円以上売り上げています。


才能があったわけではないし、
昔から超がつくほど要領が悪いです。


そんな僕がプログラミングを習得したり、
心から尊敬する先輩や上司から影響を受けて、
エンジニアとして成長することができました。


酸いもあまいも経験してきましたが、
普通の人よりもたくさん失敗してきて、
それをガソリンにして結果にフォーカスしてきました。


その経験から
「ポンコツでもエンジニアになれる」
と思っているし、
成長して理想の自分を手に入れられると信じています。


そして、今は同じ道を志す仲間を
1人でも多く増やして、
エキサイティングでより生産性的な社会を
作っていこうと夢見ています。


そういった理念をもとに、
僕の知識や経験をふんだんに絞り出して、
エンジニアとして成長し、
結果を出すにはどうしたら良いかを
体系的にまとめた電子書籍を作りました。


僕のストーリーも交えて作っていて、
20分程度でサクッと読める内容なので、
もし興味があれば読んでみてください。


→電子書籍『エンジニアという生き方で人生をデザインする。』


メールアドレスを入力すれば、受け取れます。


最後まで読んでいただきありがとうございました。


もしこの記事が役に立った!と思われたら
SNS等でシェアしていただけるとすごく喜びます。
(すぐ下のボタンからシェアできます)

1 個のコメント

  • ここ最近、モチベーションがかなり落ちていました。
    記事にあるように、『Rubyをできるようになる』とかなり抽象的でした。
    Progateを2周しましたが、なにをもってRubyができるようになる。のか曖昧でやる気の低下を招いていました。

    記事にあるように、アプリを作るというような具体的な目標を設定してみます!

  • コメントを残す

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