プログラミングに挫折する原因とその対策

プログラミング

こんにちは。九条です。

今回は、プログラミングの話題を書きます。

今大変流行っているプログラミングですが、プログラミングを学習しても、9割以上の人が挫折すると言われています。

今回はその原因と対策について考察します。

プログラミングの挫折は次のように分けて考えることができます。

  • そもそも適性が全くない。
  • プログラミングを学習したが、クラウドソーシングサイトで仕事を取れない、または取れても儲からない、或いは仕事に失敗して訴訟を起こされた。
  • プログラミングを学習し、経験を積みたいが、就職先が見つからない。
  • プログラミングを学習し、就職したが、実務に付いて行けない。
  • プログラミングを学習しようとしたが、頭に入ってこない。
  • プログラミングを学習するための準備段階ができない。
  • そもそも行動を起こせていない。

それぞれについて、詳しく見ていきます。

そもそも適性が全くない。

プログラミングの勉強で、言語が何であろうが全くちんぷんかんぷんだという人も稀にいます。

プログラミングは今のところかなり適性の分かれる分野です。義務教育の学業成績が良くとも、出身大学の偏差値がいくら高くとも、全く分からない、稀にそういう方がいるのです。

残念ながら、誰にでも分かるようなプログラミングの授業をする方法は確立されていません。

このような方は、身も蓋もないのですが、撤退した方が良いと思います。

これからプログラミングを始めようとしている方は、このことを念頭に置いておくべきです。貴方がまさにそういう人に当てはまっている可能性があるからです。

このケースでの挫折を防ぐには、本格的にプログラミングの学習に投資する前に、プログラミングに触れてみて、自分に向いているかどうかを見極めておくということが対策になります。

例えばプログラミングスクールの学費を支払ってから挫折すると大きな損失となります。

大学や専門学校の場合も同様です。情報科のある大学や専門学校に進学したものの、勉強にまったく付いて行けないという悩みはよく見かけますし、酷いケースでは、匿名掲示板に学校の課題の写真をそのままアップして他の閲覧者に課題を丸投げしている人もいます。

こういうことになると、大学や専門学校での時間を棒に振ることになってしまいます。

そうならないためには、やはり事前の予習が大事だと思います。

クラウドソーシングサイトで仕事を取れない。

プログラミングを学習したが、クラウドソーシングサイトで仕事を取れない、または取れても儲からない、或いは仕事に失敗して訴訟を起こされた。

このケースについて解説します。

次の記事を読んでください。

(参考記事)副業、フリーランス、かつ在宅のプログラマを始めるにはどうすれば良いですか?

次の記事でも述べています。

(参考記事)(プロが答える)プログラミングとはそもそも何か?② – よくある Q and A

しかし、クラウドソーシングと言って一般にイメージされるであろう、副業在宅の業務形態では稼げません。今からお話するのも在宅副業の業務形態のお話です。

実は、私も失業していた頃にクラウドソーシングサイトに登録したことがあります。しかし、稼げないと思ってすぐに撤退しました。

クラウドソーシングサイトに色々な案件が貼ってありますが、安い案件ばかりです。できるだけ早く仕事を片付けて沢山の仕事をこなせば稼げるだろうとは思いますが、それは難しいのです。

早く仕事を片付けて沢山の仕事をこなすには、その仕事の分野に精通している必要があります。プロと言ってもあらゆる専門分野に精通しているわけではありません。精通しているのは実務経験のある特定の分野だけです。

そうなると、実際に受注できる仕事は非常に限られてきます。クラウドソーシングサイトには多数の仕事があるように見えて、実際に受注できる仕事は、プロでも少ないのです。

もちろん、不慣れな仕事でも時間をかければできるのですが、そすると最低賃金を割ってしまうので、普通にバイトした方がマシということになります。

稀に、素人でもできるような仕事があるのは確かですが、そういう仕事は競争率が高く、実績豊富な方がかっさらって行きます。

そういう方よりも優先して発注していただくためには、安くする必要があると思いますが、そうするとやはり最低賃金を割ってしまいます。

また、実際には価格交渉等、プログラミング以外の手間も発生します。私もあともうちょっとで受注というところまでいって、仕様書を見せて頂く段階まで進んだものの、価格交渉に入って高すぎるという理由で結局仕事が流れたことがあります。

こういうプログラミング以外の手間は丸々損失となりますから、こういうことを繰り返していると、仕事を受注できたとしても、やはり最低賃金を割る可能性があります。

プロでもこんな感じなのですから、素人が稼ぐのはもっと現実的ではありません。

要するに、挫折以前の問題として、クラウドソーシングで稼ぐのは、不可能か、または不可能に近いということです。

他の記事でも述べたと思いますが、素人がクラウドソーシングサイトで稼ぐよりも、司法書士試験に独学一発合格する方が遥かに現実的な目標です。

クラウドソーシングサイトで仕事を取る目的で、プログラミングを始めたのであれば、身も蓋もないのですが、撤退した方が良いと思います。

経験を積みたいが、就職先が見つからない。

身も蓋も無いのですが、根気強く探すしかありません。

次の記事を読んでください。

(参考記事)(プロが答える)プログラミングとはそもそも何か?② – よくある Q and A

大半のプログラマは、大学を卒業してから新卒で採用されてプログラマに成ります。もちろん、専門学校卒や大学院卒もいます。私もこのルートでプログラマに成りましたし、これが一番ハードルは低いです。

しかし、これは新卒採用のチャンスが必要なので、既に大学を卒業してから期間が経過している人には使えない方法です。

この場合、未経験者歓迎の求人に応募していくしかありません。しかし、多くの求人は、実務経験3年以上を条件に募集していて、かなり根気強く探す必要があると思います。

この、新卒採用という仕組みは個人的にはかなり不条理に感じますが、それが現実です。

私の周りにも、就職してから、情報工学のある大学へ行き直した方、大学院へ進学した方がいます。どちらも新卒枠でプログラマに採用されており、就職には成功していると言えます。

このように、進学するという方法もあります。

就職したが、実務に付いて行けない。

新卒採用の場合は普通に未経験者を採用しますし、既卒の場合でも未経験者を募集している求人は稀にあります。

未経験で採用された場合には、就職したが、実務に付いて行けないと言うことはよくあることだと思います。

プログラマになる人の半分ぐらいは、趣味でプログラミングをやっていたり、大学や専門学校の情報科で勉強したことのある人だと思います。

そうではない人の場合、いくら、職場で教えてもらえると言っても、勉強したことのある人とは最初から、大きな差が付いています。

特に、大学や専門学校で勉強したことのある人の場合、学問的なバックグラウンドを持っていますので、全く未知の技術を勉強する場合でも、成長が速いです。

この差を覆すには、人一倍努力するしかありません。

周りに大きな差を付けられている人は、そのことを自覚し、職場だけでなく、多少はプライベートを犠牲にして自宅でも勉強するべきです。

プログラミングを学習しようとしたが、頭に入ってこない。

最初に挙げた、「そもそも適性が全くない。」のケース以外でこのケースに該当する場合は、アウトプットの不足が原因です。

プログラミングの勉強のうち、各文法事項の勉強はそれほど難しいものではありません。サンプルを読めば実行結果がどうなるかを予測できるレベルには直ぐに到達します。

難しいのは、それらの各文法事項を実際に物を作る時に、どう使うかと言うことです。ここが分からないために、勉強しても身に付いている気がしないと言うことになりがちです。

例えば、次のような文法事項はどう使うかが分からないということになりがちです。

  • 関数
  • ポインタ
  • 構造体
  • クラス

これに対する対策としては、実際に何か目標を決めてそれを創りながら勉強することです。文法書を一通り読んでから作り始めても良いし、作りながら必要に応じて勉強するという方法でも、どちらでも構いません。

ただ、ここで何を創るのかアイディアが思いつかないという人もいると思いますし、逆にアイディアが壮大過ぎて学習段階の実力では全く造れないということもあると思います。

私のお勧めは、グラフィックを全く使わずに、テキストベースのロールプレイングゲームを創ることです。

シナリオを考えるのが難しいと思われる方もいるかもしれませんが、必要ありません。宝物を探せ!だけでも十分過ぎます。

例えば、次のようなプログラムでも立派にロールプレイングゲームとして成立します。

  1. 貴方の前に分かれ道がある、左へ行くなら1を、右へ行くなら2を入力してください。
  2. 1が入力された場合、宝物を見つけた!あなたはこのゲームをクリアした。
  3. 2が入力された場合、ドラゴンに遭遇して殺害された、Game Over!
  4. それ以外が入力された場合、分かれ道で迷っている間にドラゴンに遭遇して殺害された、Game Over!

この課題はif-else文と標準入出力が分かれば作成できます。if-else文はswitch-case文に置き換えることもできるので、置き換える練習をしてみても良いでしょう。

この案の良いところは、ここから更に発展させて、より複雑にしていき、その過程で文法事項を作りながら覚えられるところです。

例えばこんなことを考えてみましょう。

  • ダンジョンに潜るだけでなく脱出するまでを考える。要は、既に通った道を再度訪れることができるようにする。他に、宝箱を開封するのに鍵が必要というギミックを組みたい。
    ⇒配列や繰り返し(ループ)が必要です。
  • 戦闘を導入したい。
    ⇒同じく配列や繰り返し(ループ)が必要です。乱数生成も必要です。
  • 仲間キャラを登場させたい。
    ⇒構造体やクラスが必要です。ハッシュテーブルで代用可能かもしれません。
  • アイテムや魔法を登場させたい。
    ⇒同じく構造体やクラスが必要ですが、インターフェイスも必要かもしれません。
  • ステータス異常(バフやデバフ)を登場させたい。
    ⇒これも同じく構造体やクラスが必要ですが、インターフェイスも必要かもしれません。
  • セーブ機能を付けたい。
    ⇒ファイル入出力が必要です。
  • マップデータをプログラムコードから分離して編集しやすくしたい。
    ⇒XMLのような複雑な構造を持つデータを扱うことが必要です。
  • 街や店を作りたい。街ごとに販売されているアイテムの価格を変えたい。
    ⇒リレーショナルデータベースが必要です。

実は、この案を発展させていけば、それだけでプログラミングの各文法事項を一通り網羅できてしまいます。

この案はプログラミングの練習としては非常に有効だと思います。

ところで、管理人は、note に興味を持っています。note ではアフィリエイトではなく記事を有料で売ることで収益化することができます。

今解説しているところはプログラミングの最大の躓きポイントであることから、この案を課題と正解例という形で有料記事にすれば、売れるんじゃないか?なんて考えていて、試験的に note に記事を投稿してみたいと思っています。

投稿した際には、是非、閲覧して頂ければと思います。

プログラミングを学習するための準備段階ができない。

プログラミングを始めるにあたり、準備が必要です。多くの言語は、言語処理系に加えて、テキストエディタをインストールしないと始めることができません。テキストエディタはメモ帳で代用もできますが、非常に使いにくいため現実的とは言えません。

この他に、パスを通す必要がある場合もあります。

また PHP のような Web 系の言語の場合は、Apache のような Web サーバをセットアップし、更に Apache から PHP を実行できるようにする手間もあります。

そして、この手順が何のために必要なのか分からない、ということもよくあります。

この手順の必要性を理解するには Web アプリの性質を幾らか知っておく必要があるのですが、そこまで踏み込んで解説していない情報源も多くあります。

言語処理系やテキストエディタには外国製のものが多いです。英語のサイトを見てダウンロードする必要があります。

英語のサイトのどこへ行けばダウンロードできるか、スクリーンショット付きで紹介している情報源も稀に存在しますが、サイトのデザインは変更されることもあるため、無効な情報となっていることもあります。

ここで躓いて挫折する人がいくらか存在します。

※最近流行りの Python は初心者にお勧めされることが多いですが、上に挙げた躓きポイントをモロに満たしています。

これに対する対策としては、インストールがお手軽な言語処理系を使うことです。具体的には C# があります。

C# はそもそも Windows にデフォルトで言語処理系がインストールされているのですが、このままでは使いにくいため、通常はIDE(統合開発環境)をインストールして使います。

C# の IDE は Microsoft 製の日本語の Visual Studio というソフトであり、ダウンロードも日本語のサイトで行えますし、インストール方法をスクリーンショット付きで解説した情報源もあります。

そして、C#の良い所は Visual Studio さえインストールすれば、他のセットアップ作業を一切必要とすることなくプログラミングを始められることです。

この理由から、私はプログラミング初心者には C# をお勧めするようにしています。

上に挙げたような躓きポイントに引っかかってしまった人は、言語を C# に変更することを検討してみてください。

そもそも行動を起こせていない。

インターネットには色々な情報が溢れています。例えば初心者にはこの言語がお勧めと言った情報がありますが、人によって言っていることが違います。

こうした複数の情報に触れることで、最初に始める言語からして何を選んでいいか分からなくなり、行動を起こせなくなる人もいます。

そのような場合は、お気軽に選んでしまって問題ありません。さいころを投げても良いでしょう。

そもそもプログラミング上級者は複数の言語を扱えることが普通ですし、何から勉強するかは順序の問題でしかありません。

よく、C言語を初心者がやると挫折する!と主張する方を見かけます。

しかし、気にする必要はありません。

特定のプログラミング言語を勉強するのに必要な、金銭的投資は専門書1冊ですし、時間的な投資も専門書1冊を読むのに1ヵ月もあれば十分だと思います。もし、これが難関資格試験であれば、金銭的投資として予備校代数十万円がかかりますし、時間的な投資も年単位に及ぶことがあります。プログラミングの勉強はこのような性質のものではありません。

また、挫折したとしても、プログラミングの基本的な考え方は色々な言語に共通していますし、それを学べるという点では投資は無駄になることは無いです。他の言語を勉強して再勉強したらC言語が分かるようになった、ということもよくあります。

以上から、深く考えないで飛び込んでみることが大事です。ここで二の足を踏んでしまうことが最大の躓きポイントだとも言えます。

今回は以上です。


⇐管理人の Twitter を Follow したい方はこちら。


コメント

タイトルとURLをコピーしました