見出し画像

【挫折】どうしてプログラミングは難しいのか

こんばんは、ふぁいちです。

プログラミングをマスターしてエンジニアに転職、もしくは副業で稼いでやる!

と考えて、プログラミングを始めてみたのは良いものの...

結局ついていけずに辞めてしまった

という方は実は多いみたいです。
PR timesの調査によると「プログラミング学習者の9割が挫折を経験」しているそうです。

実際、私も挫折しかけたうちの一人でした。
高校の頃にプログラミングに出会い、色々と学んでいくうちに、

「自分には向いていないかも」

と思うことも何度もありました。

そこで、本記事では「なぜプログラミングは難しく感じるのか」「なぜ継続しないのか」といった疑問に対する私なりの解釈を述べていこうと思います。


プログラミングという行為がそもそも何をしているのかわからない

プログラミングという行為自体への理解が進んでいないと、「そもそも今自分が何をしているのか」「なんでこんなエラーが出るのか」と言った部分でつまずいてしまいます。

これは、そもそもコンピューターというものがどんな仕組みで動いているのかという点についてしっかり理解しておくことでおおよそ解決することが出来ると考えています。

私もプログラミング初学者の同僚から「メモリってなに?」と言った質問を受けることがありました。
たしかに、そこらへんってちゃんと体系的に勉強してないと、細々とした所でわけわからなくなるよなあと納得しました。

従って、プログラミングを学ぶ前に、コンピュータについて理解を進めておくことが、根本的な課題に対する打ち手になると考えています。

※もうちょっといい記事にはまとめ直したいと思いますが、ちょっとした参考に以下記事もご覧いただければと思います

結局何ができるのかわからない

漠然と「プログラミング」というものをなんとなく学んでいても、そもそもプログラミングによって何ができるのか、何が作れるのかわからないとアウトプットのイメージがつかずに挫折してしまいます。

具体的には、

「今自分は何のための何を書いているんだろう」
「今自分が学んでいる文法は、具体的に何に使うんだろう」

などの疑問が解決されないまま学習が進むと、モチベーションを保てなくなり途中で学習をやめてしまうというケースもあります。

上記に対する打ち手は、「一旦さらっと進めてみる」というアバウトなものが考えられます。
というのも、プログラミングにおける文法やアルゴリズムなどは、単体ではほとんど役に立ちませんが、複数の組み合わせによって一つの「機能」を実現するからです。

例えば、配列構造と繰り返し文(for文)と分岐文(if)と剰余算(%)をそれぞれバラバラに学んだとした場合、それらの組み合わせで「複数データの中から偶数を求めるプログラム」を記述することが出来ます。

# Pythonで書くならこんな感じ

# 配列データの定義
array = [3, 7, 2, 8, 5, 10]

# 偶数を格納するリストを初期化
even_numbers = []

# 配列データをループして偶数を取得
for num in array:
    if num % 2 == 0:
        even_numbers.append(num)

# 結果の出力
print(even_numbers)

上記のコードを見てみると、ifもforも%も入っていて始めて一つの「偶数のデータを見つける」という機能を実現しています。

ということで、「結局何ができるかわからない」「今学んでいる内容がどう活かせるかがわからない」という方は、「とりあえず一旦進めてみてざっくりインプットしておく」ことをおすすめします。

始めるための準備でつまずく

「まずはエディタをダウンロードします」
「Pathを通します」
「開発環境を構築します」
「コマンドプロンプトを操作します」

などなど、堅苦しい言葉で生き埋めにされて、学習を諦めてしまった方も多いいのでは無いでしょうか。

というのも、実はプログラミングは始めるときが一番難しかったりします

学習しよう!と選んだ言語によっては、パソコンにインストールするだけでも今まで触ったことも無いようなツール(コマンドプロンプトしかり、環境変数の設定しかり)を当たり前のようにいじらなければいけなくなることがあるためです。

そもそもパソコンをあまりいじったことがないような超初心者の方にとってこれはハードルが高すぎますよね。

一番の解決策は、「それも含めて勉強だ」と思ってひたむきにうちこむことです。
というのも、プログラミングを学んでいくと、それらのツールを当たり前のように用いる場面が非常に多くあるためです。

とはいえ、いきなりそこまで手が回らないという方にとっておすすめの解決策は、セットアップが簡単な言語を選ぶということです。

具体的には、Google社が用意している「Google Apps Script(GAS)」などです。
GASはブラウザ上で動くのでダウンロードなどの必要が一切ありませんし、JavaScriptという非常にメジャーな言語をベースに開発されているためです。

※ここでJavaScriptを直接おすすめしていないのは、JavaScriptはHTMLやCSSといった他の言語についてもある程度学習を進めなくてはならず(マストではないですが、通常はそうなります)、やや挫折ポイントが増えると考えたためです。

GASを学んで、プログラミングの基本的な書き方や考え方を理解できれば、それらの経験は他のプログラミング言語でもかなりの確率で役に立ちます

プログラミング言語の考え方や、主要な文法はおおよそ同じなので、どの言語を学び始めても大丈夫と言えます。

エラーの対処法がわからない

ある程度学習が進んで、最初のセットアップや文法の勉強など挫折ポイントも抜けたとしても、「エラー処理」というさらなる壁が待っています。

以下のような英語の羅列で「WARNING」なんて言われた日には心臓が飛び出そうになります。

・'i' undeclared (first use in this function)
・parse error before '}'
・undefined reference to 'prnitf'
・unterminated string or character constant

https://qiita.com/cannorin/items/eb062aae88bfe2ad6fe5

最初からエラーが起きないような完璧なコードを書ける人はほぼ存在しませんので、必ずぶち当たる壁です。

解決策は「困ったらすぐに調べる」です。
大抵のエラーはGoogleが教えてくれますし、今の時代はChatGPTもめちゃくちゃ的確なアドバイスをくれます。優秀ですほんと。

最初は何度も様々なエラーに遭遇するたびに調べたりすることを億劫に感じるかもしれませんが、慣れてくればエラーの内容を即座に理解してサクッと対処できるようになりますので、根気強くやっていきましょ。

まとめ

ここまで読んで頂いた方はもうお気づきかもしれませんが、プログラミングは"耐え"が大事です。笑

プログラミングが難しいと感じている方、もしくは挫折してしまった方は…

1.コンピュータリテラシーを高める
2.とりあえず進めてみる
3.わからないことは一個ずつ根気強く調べる
4.とっつきやすい言語(GASなど)を選ぶ

以上が、大事なポイントかなと思います。
色々学んでいるうちに点だったものがくっきりとした線になる瞬間が出てきます

諦めずにまずは続けてみましょう。
困ったことがあれば、私にもお気軽にご連絡ください。
以下のように初心者向けの講義や記事を公開しています(急な宣伝ごめんなさい)


この記事が気に入ったらサポートをしてみませんか?