こんにちは。
この記事を読んでいるあなたは、

・プログラミングを勉強しているけどエラーばっかり。できない!もう辞めたい!
・未経験からプログラマーになったけど、仕事ができない。もう辞めたい!
このように悩んでいるのではないでしょうか?
プログラミングは非常に奥が深く、なかなか簡単にできるようにはなりません。
ですので、こういった悩みは非常によく分かります。
- この記事を読むと分かること
- この記事の信頼性
- [結論]もし「どうしてもプログラミングができない!辞めたい!」と思う場合、辞めてもいいのか?
- 「プログラミングできない!」と思うタイミングを一言で表すと?
- プログラミングが「できない」「辞めたい」となるフェーズについて
- プログラミングスキルの各フェーズで起きる「できない / 辞めたい」の理由7つとその対策
- まとめ
この記事を読むと分かること
この記事を読んでいただくことで、以下のことを知ることができます。

・本当に辛い!という場合は辞めてしまってもいいか?
・プログラミング学習中のどのようなタイミングで「できない!辞めたい」と思うのか?
・その他、学習を進めてエンジニアになるどのフェーズで、「できない!辞めたい!」と思うのか?
この記事は、「もう、プログラミングがつらすぎて勉強、あるいはプログラマーの職業を今すぐに辞めたい!」というあなたに、「落ちこぼれプログラマー」からのコメントをしています。
プログラミングが辛すぎて心も身体も病んでしまう前に、是非読んでくださいね。
また、併せて「プログラミングがつらいくて辞めたい」と思う状況と対策を説明しています。
「プログラミングがつらい」と思うのも、実はプログラミングスキルや状況によって異なります。
これを読むことで、「どういうケースでプログラミングが辛くなるのか?そしてその対策は何か?を知ることができます。
この記事の信頼性
僕は大学のときに独学でプログラミングの学習をしました。
そのときは、今のようにオンラインの教材もない状態で、わずかにウェブに載っているサンプルプログラムをコピペして動かしたりしていました。
その時は誰からも教えてもらえず非常に大変だったのもあり、何度も「もう辞めようかな・・・」と思った記憶があります。
また、社会人としてエンジニアになった後も、(正直僕のプログラミングスキルがイマイチだったこともあり)周りの人のレベルに全くついていけず、非常に辛かった思い出があります。
毎日「もう辞めたい」と思っていました。
僕はプログラマーのセンスとしては普通の人以下だという自負があります。
この記事では、そういう普通の人以下の視点を持っているからこそ分かる、「プログラミングができない!辞めたい!」と思ったポイントをお伝えすることができます。
[結論]もし「どうしてもプログラミングができない!辞めたい!」と思う場合、辞めてもいいのか?
もしかすると、この記事を読んでいるあなたは、

「プログラマーになりたくてプログラミングの勉強を始めたけど、どうしてもできない!もう限界だから辞めたい」
「プログラマーになったけど、全然できる気がしない・・・辞めたい」
このように考えているかもしれません。
僕も過去、このような状態だったのでその気持ちは非常によく分かります。
結論からお伝えすると、本当に無理であれば辞めてしまっても問題ありません。
今、無理に頑張りすぎて身体や心を壊してしまうと、プログラミング以外の仕事や日常生活にさえ、悪影響を及ぼしてしまうからです。
「本当に無理だ」と思ったら、躊躇せず辞めてしまうことをオススメします。
もし「そう言っても、辞めてしまうのも抵抗がある・・・」という場合は、「一旦、お休みする」と考えてみるのはいかがでしょうか?
プログラミングは今辞めると、一生できなくなるわけではありません。
今後少し落ち着いて、「もう一回やってみようかな」と思えたタイミングで再開するのも、それもまたアリ、です。
もし今、あなたがプログラマーとして働いている場合であっても、一度思い切って転職してみたり、社内異動でプログラマー以外の職種についてみるのはいかがでしょうか。
僕は過去に一度プログラマーから一度離れて再度プログラマーに戻ってきたという経緯があります。
プログラマーに戻ってくるときは勇気が必要でしたが、過去に苦しみつつ勉強した経験とスキルがあったため、予想以上にすんなりとプログラマーに戻れましたし、人並みに活躍することができたと考えています。
プログラミングの勉強に関しても、「絶対に今ではないとならない」ということはないはずです。
他の仕事をしつつ、少し心に余裕を持って勉強を続けた方がよいです。
人間は心に余裕がないと、勉強してもなかなか内容が頭に入ってこないですし、焦りばかりがつのってしまいます。
もし、「ちょっとプログラミングの勉強は限界だ・・・」と思ったら、しばらく休憩して、心に余裕を取り戻したり、冷静になる時間をとってみることをオススメします。
「プログラミングできない!」と思うタイミングを一言で表すと?

元も子もない話かもしれませんが、「プログラミングができない!」と思うのはどんなときか?を一言で言うと、
です(笑)
過去エンジニアとしてプログラミングをしてきた中で、

今回は完璧に理解したな・・・
と、思うことは一度もありませんでした。
プログラミングは常に勉強が必要です。
それぞれの言語ごとに非常に奥が深いですし、仮に1つの言語をマスターしたとしても、すぐに次のバージョンが出てきたりして、常に何か新しいことを覚え続ける必要があります。
なので、「プログラミングを完璧に理解した」と思うタイミングは一度もありません。

僕の感覚からすると、「完璧」と思うことは、余程の天才プログラマーを除けば、一度もないと思っています。
プログラミングを初めて1年や2年の段階で「完璧だ」と思うのであれば、おそらく何か、大きな見落としをしている可能性が高いのではないかと思います。
(例えばオンライン教材だけをやって「完璧」と思っているなど)
なので、まずはプログラミングとはそういうものだ、ということを前提に、今できることを全力で頑張る、というのがよいと考えています。

「辞めたい」と思うかどうかは、その時の自分のスキルや、それぞれのプロジェクトの人間関係なども複合的に影響してくるので何とも言えません。
プログラミングが「できない」「辞めたい」となるフェーズについて

ここから、「プログラミングできない、辞めたい」と思う理由と、その対策を7つ紹介します。
その前提ですが、「できない、辞めたい」と思う理由は、プログラミングのスキルがどのくらいか?によって変わってきます。
そこで、この記事では「できない、辞めたい」と思う気持ちが発生するスキルの目安(「フェーズ」と呼びます)も合わせて紹介します。
あなたのプログラミングスキルと合わせて、
・今後プログラミングを勉強していく上で発生する可能性のある「分からない、辞めたい」
をご確認いただければと思います。
プログラミングスキルに応じて、4つのフェーズがあります。
それぞれのフェーズにおいて、「プログラミングができない、辞めたい」と思う理由が異なります。
ですので、この章ではまず、プログラミングのフェーズの全体像を解説します。

プログラミング初心者の頃は「エラーの内容が分からない」というような悩みになります。
ある程度プログラミングを習得してきた後は、「オブジェクト思考が分からない」などの悩みになります。
このように、プログラミングのレベルに応じて悩むポイントは少しずつ変わってきます。
フェーズ1: 本当の初心者
プログラミングの学習をはじめたばかりの状態。
ドットインストールやProtateを周回しているようなタイミングが該当。
まずはプログラミングの基本を理解したり、プログラミングに慣れるところから開始している。
プログラミングスクールに入学した直後もこのレベルが該当。
フェーズ2: 勉強をしてしばらく経過した後 (ドットインストール周回後など)
ドットインストールやProgateなどを周回して、何となくプログラミングの勉強が進んできた状態。
基本的な文法は理解しつつあるものの、まだ教材に従って書いている状態。
なので、フルスクラッチ (何もベースがない状態)で書き始めようとすると、手が止まってしまう。
3ヶ月程度の期間のプログラミングスクールを卒業すると、だいたいこのレベル。
フェーズ3: より本格的な部分を勉強している時
プログラミングの基本的なところは理解しつつ、ある程度自由にプログラミングできるようになっている状態。
クラスやオブジェクト志向プログラミングなどを理解し、よりメンテナンス性が高く、規模の大きいプログラムを書けるようになるための準備段階。
フェーズ4: 未経験からエンジニア転職をした後
・オブジェクト志向なども理解して、未経験としてどこかの企業や案件の獲得を目指せるレベル。
・ただし、パフォーマンスやメモリ効率を意識したプログラミングはできない状態。
プログラミングスキルの各フェーズで起きる「できない / 辞めたい」の理由7つとその対策

それではここから、あなたのプログラミング学習のフェーズを踏まえて、どのような「できない・辞めたい」が発生するかを見ていきましょう。
合計で7つの問題を説明します。
それぞれの問題で、以下のような内容を説明します。
・「できない/辞めたい」の内容
・対策
ですので、全部読んでいただいてもいいですし、あなたが該当するところだけをピックアップして読んでいただいても大丈夫です。
エラーの意味が分からない
発生フェーズ
1〜4の全て
(特にフェーズ1「本当の初心者」のときにはハマりやすい)
「できない/辞めたい」の内容
初心者の場合は、オンラインの教材 (ドットインストールやProgateなど)の教材を使って勉強をしているケースが該当します。
自分としてはそこに書いてあるとおりにプログラミングをしているつもりですが、どこかで書き間違ってたりして、思ったとおりに動かなかったり、画面が真っ白になってしまうことがあります。
一方で、この「エラーの意味が分からない」というのは、プログラミングの習熟度が上がった際にでも起こりえます。
例えば新しい言語にチャレンジしたり、ライブラリを導入したりしたときに発生する可能性があります。
症状としては、「エラーが出ているが、そのエラーを見ても何をやったらいいか分からない」という状態になります。
対策
まずはそのエラー文言でググってみましょう。
有名なプログラミング言語だったり他の人も同じように見たことのあるエラーであれば、比較的簡単に解決方法が見つかるかと思います。
また、フェーズ1「本当の初心者」の人に関しては、エラーの内容をよく見直してみることをオススメします。
というのも、エラーの内容の中に具体的に「この行に問題がある」という記述があったりするためです。
また、現在がフェーズ1「本当の初心者」やフェーズ2「勉強をしてしばらく経過した後」の状態であれば、オンライン教材にかかれているプログラムを、もう一度入力し直してみるのも良いアイデアです。

例えばHTMLの画像を貼り付けるimgタグで、src属性を、”src“を”scr“にしていたりしませんか?
スキルがついている感じがしない
発生フェーズ
1〜4の全て
(特にフェーズ1「本当の初心者」とフェーズ2「勉強をしてしばらく経過した後」の時が辛い)
「できない/辞めたい」の内容
オンライン教材を写経しているときは手を動かすことができるものの、その教材を見ない状態だと全くプログラムを書けない状態になります。
そして、この状態が、プログラミング教材を何回か周回して写経しても続いているため、自分にスキルがついている気がしない、と感じてしまいます。
体側
写経をするのは、各言語ごとに1回、もしくは2回までで止めるのがオススメです。
また、写経するときに何も考えず書き写すのではなく、文法の構造なども考えながら書き写すと頭に入りやすくなります。
さらに、写経した内容を少しずつ自分なりに書き換えるなどして、どのように動くかを見てみると、プログラムの内容の具体的な内容を理解できるようになります。
またはウェブに転がっているサンプルプログラムを自分のPCで動かしたり、その内容を少しずつ変更するのも良いアイデアです。
何かを作ろうとしたら、全く何も作れないことに気づく
発生フェーズ
1〜3。
(特にフェーズ2「勉強をしてしばらく経過した後」のタイミングでこれに気づいてモチベーションが落ちることが多い)
「できない/辞めたい」の内容
オンライン教材で勉強してある程度基礎が固まったと思われるタイミングで、自分の作りたいものを作ろう、というタイミングが該当します。
ただ、実際に何かを作ろうとすると、何から手をつけていいか分からなかったりなど、全く手が動かない状態になります。
対策
最初からゼロベースで何かを作るのはオススメしません。
チュートリアルやオンライン教材で作ったものを少しずつ変更したり、付け加える形で、自分の作りたいものを作るのがオススメです。
あるいはウェブに転がっているサンプルプログラムをコピーして、それを自分のPCで動かしてみたり、それを少しずつ変更して、どのような動きになるかを確認するのも良いです。
このタイミングでは、変数名などにはこだわらず、まずは動くことを第一優先にすることをオススメします。
そうしないと、一番肝心の「プログラムのロジックを考える」部分に集中できないためです。
これまでやったことのないプログラミングの文法が出てくる

発生フェーズ
1〜3
「できない/辞めたい」の内容
学習を進めるたびに、自分の知らないプログラミングの文法が出てくる状態です。
ようやく1つ覚えたと思ったらすぐに次の概念が出てくる状態で、「辞めたい」となることがあります。
特に、本格的なプログラミングでは当たり前に使われるクラスやオブジェクトの概念などは、非常に奥が深いので、初めて見るときは苦労することがあります。
対策
あなたのフェーズが1や2であれば、まずは基本的な文法をある程度覚えることにフォーカスするのがよいと思います。
その上で、勉強をする中で出てくる新しい文法や概念はその都度、新しいものを覚えていく必要があります。
とはいえ、「クラス」や「オブジェクト」などの概念は、(そういった概念を持つプログラミング言語であれば)ほぼ全ての言語で似たようなものなので、一番大変なのは一番最初の言語を覚えるときです。
2つ目以降の言語は、1つ目の言語の派生型や若干の変更が加わったものなので、とにかく最初の1つ目の言語でこの「クラス」や「オブジェクト」の概念を理解するのが良いです。

HTMLやCSSはプログラミング言語というより、マークアップ言語と呼ばれるものなので、「クラス」や「オブジェクト」の概念を覚える目的では適していません。
「クラス」や「オブジェクト」の概念を理解するのは、HTMLやCSS以外のプログラミング言語、例えばJavaなどのドキュメントが豊富にあり、有名な言語をオススメします。
環境構築につまづく
発生フェーズ
2〜4
「できない/辞めたい」の内容
オンラインのプログラミング教材、あるいはプログラミングスクールが指定する開発環境を使っている時はあまり発生しない問題です。
ただ、本格的に自分で環境を整えて開発をしようとすると、
パソコンの別環境との衝突
その他、原因不明の現象
などが起こるため、プログラミングをする前の段階でハマることも多いです。
しかもこれはプログラミングのスキルとはあまり関係がない上、エンジニアとして経験を積んだ後でも割と発生します。
さらにこの問題が起きるのがその人のパソコンの設定に依存することも多く、一度ハマるとなかなか抜け出せないこともあります。
対策
そのときによります。
一度インストールしたライブラリを削除したり、環境変数などの設定を変更したり、起きているエラーメッセージをググってみたりするしかありません。
この問題に対しては、特効薬と言われるものがありません。
プログラミングのより深い部分に直面し、難しいと感じる
発生フェーズ
3, 4
「できない/辞めたい」の内容
プログラミングを始めた当初は「とりあえず動けばOK」という場合もあります。
ただ、本格的なプログラミングを始めると、「より効率よく」「不具合が出来る限り起きないような」プログラミングが求められます。
例えば、エラーチェックやインスタンス生成時のやり方、変数や関数名、クラス名の命名規則による分かりやすさの向上などが該当します。
このレベルになると、よりプログラミングに対する本質的な理解が必要となり、改めて「プログラミングできない・・・」と思うことになあります。
対策
このレベルの内容は、ウェブで調べても断片的な情報しか載っていないので、もっと本質から理解するためのアプローチが必要になります。
具体的には、”Effective Java”など、各言語に特化した「やるべきこと、やってはいけなこと」をまとめたような本を読み、体系的に勉強する必要があります。

僕がこれまで一緒に働いてきたエンジニアの中でこのレベルまでしっかり理解できている人は、ごく一部になります。
なので、このレベルが出来ないからといって落ち込む必要はありません。
まわりの人に比べて圧倒的に自分のスキルが不足しており、会社やプロジェクトに貢献できていない

発生フェーズ
3, 4
「できない/辞めたい」の内容
特に新卒や未経験からでエンジニアやプログラマーになって会社で働き始めた人、あるいはフリーランスとして案件を獲得しはじめた人がハマる辛いポイントです。
特に複数の人と一緒に働くケースで、自分のスキルが不足していることを痛感することが多いです。
対策
このタイミングでの「辞めたい」は、「何故自分がそのチームについていけてないのか?」を冷静に分析する必要があります。
想定としては、以下のような部分でついていけていない可能性があります。
2: プログラミングのスキルが明らかに周りの人に劣っている
3: 社内用語が分からないためにプログラミングの作業に影響があるケース
4: 社内で使っているツールを使いこなせていない
5: 大規模なソフトウェア開発についていけない
「自分の不足しているスキル」をしっかりと見極めて、そこに対して対策を打つ必要があります。
例えば1であればコミュニケーション能力のような基礎的な能力かもしれませんし、2は、プログラミングスキル自体を向上させる必要があります。
3〜5だと、ツールの使い方に慣れたり、大規模開発に慣れたりすることで少しずつ改善することもあります。
まとめ
どんなに長い時間プログラミングをしていても、「プログラミングのことを理解した」と思うタイミングはありません。
なので、今できる勉強を精一杯やるのが大事です。
特に、1つ目のプログラミング言語が、初めて見る変数やオブジェクト、クラスなどの概念を理解する必要があるため最も大変です。
とはいえ、「わからない、辞めたい」の状態でも根気強く勉強を続けていくことで、着実に前に進んでいくことができます。
この記事は以上となります。
この記事を読んだあなたが、「プログラミングがわからない!辞めたい!」という気持ちを克服して、あなたの目標を達成できることを願っています。
ここまで読んでいただき、ありがとうございました!
コメント