プログラミングの独学は、よく「9割が挫折する」と言われる。数字の正確さはともかく、途中でやめる人が多いのは事実だ。そして、やめた人の多くが「自分には向いてなかった」「やる気が続かなかった」と理由をつける。
私も独学でつまずいた側だから言えるけれど、これは順番が逆だ。やる気が切れたから続かなかったのではなく、続く仕組みを作らなかったから、やる気のほうが先に切れた。プログラミングの独学には、英語や資格の勉強とは少し違う、特有の折れポイントがある。そこを「気合」で越えようとするから、燃料が尽きる。
先に結論を書く。独学を続けられる人は、特別に意志が強いわけでも、才能があるわけでもない。続く形を先に作っているだけだ。この記事では、まず「なぜ折れるのか」を構造として見て、次に「どう仕組みで立て直すか」を6つに分け、最後に「実際にどこで詰まり、どう抜けるか」を具体的に書く。全部を一度にやらなくていい。1つ入れるだけでも、続き方は変わる。
独学が折れるのは、才能でなく「構造」
プログラミングの独学が特につらいのは、あなたの才能のせいではなく、構造の問題だ。具体的に3つある。ここを「自分の問題」だと思い込むと、対処を間違える。
1つ目は、コードを1行も書く前に心が折れること。環境構築——エディタを入れ、言語を入れ、設定を合わせる——この「準備」でつまずく。何も作っていないのに、エラーだけが出る。プログラミングの面白さに触れる前に、設定の沼で消耗する。最初の壁が「面白さ」ではなく「面倒くささ」なのが、独学の入口の罠だ。
2つ目は、正解を教えてくれる相手がいないこと。学校や職場と違って、独学には「今のやり方で合ってるよ」と言ってくれる人がいない。動いたのか、たまたま動いただけなのか、自分でも分からない。合っているか確かめられないまま進むと、この手応えのなさが、じわじわ不安に変わる。独学が孤独だと言われるのは、ひとりで作業するからではなく、フィードバックが無いからだ。
3つ目は、「写経」はできるのに「自分では作れない」という段差。教材の通りに打てば動く。でも、いざ自分で何か作ろうとすると、手が止まる。ここで「自分は何も分かってなかったんだ」と落ち込んでやめる人が多い。でもこれは、ほぼ全員が通る正常な段差だ。乗り越える人とやめる人の差は、才能ではなく、この段差を「異常」と読み違えるかどうかにある。教材をなぞる段階と、自分で組み立てる段階は、別の能力だ。順番に身につくだけで、後者がいきなりできないのは当たり前だと知っておくだけで、折れにくくなる。
やる気で殴らない
ここで多くの人がやるのが、「来週から本気を出す」と気合を入れ直すことだ。
私はこれをすすめない。はっきり立場を書くと、やる気は消耗品だ。出した分だけすり減る。土日に10時間やって、翌週まるごと動けなくなった——独学でやってきた人なら、一度は覚えがあるはずだ。やる気を燃料にして走る仕組みは、燃料が切れた瞬間に止まる。そして燃料は、いつか必ず切れる。
だから立て直しは、やる気を増やす方向ではなく、やる気が低い日でも勝手に手が動く方向に設計する。気分のいい日にしか進まない独学は、設計として弱い。気分が最悪の日に、最低限が回ることを基準にする。続けている人は、毎日やる気を出しているのではない。やる気が要らないところまで、やることを小さく削っているだけだ。
続く独学に必要な「6つの仕組み」
精神論はここで終わりにして、プログラミングの独学を続けるための具体的な仕組みを6つ書く。独学の入口から順に並べた。繰り返すが、全部やらなくていい。今いちばん折れそうな所に、1つ入れればいい。
1. ゴールを「1つだけ」決める
独学が続かない最初の理由は、どこへ向かっているか自分で分からないことだ。だから、ゴールを1つだけ決める。
ポイントは「1つだけ」「具体的に」。「エンジニアになる」「稼げるようになる」は、遠すぎて今日の行動に繋がらない。そうではなく、「3週間後に、自分用の小さなToDoアプリを動かす」「来週までに、入力した数字を合計して表示するページを作る」くらいまで小さく、具体的にする。ゴールが具体的だと、今日やることが自動的に決まる。逆に、ゴールが曖昧なまま教材だけ進めると、「これは何のためにやっているんだっけ」が必ず来て、そこで止まる。大きな夢は持っていていい。でも、手元に置くゴールは、3週間で届く距離に切る。
2. 最初の30分で「動くもの」に触る
環境構築で折れるなら、環境構築を後回しにする。最初は、ブラウザ上でそのまま動くエディタや、すでに動いているサンプルを使って、初日にコードを1行、自分の手で動かす。
ポイントは順番だ。「準備が全部終わってから始める」のではなく、「動くものを触りながら、必要になったぶんだけ準備する」。プログラミングがなぜ面白いのかは、設定画面ではなく、自分がいじった1行で画面の文字や色が変わった瞬間に分かる。その瞬間を初日に持ってくると、折れる場所そのものが消える。きちんとした環境は、続けると決めてから整えればいい。最初に要るのは、完璧な道具ではなく、変わる手応えだ。
3. 「写経」より「1日1回、壊して直す」
教材を写すのは気持ちいいが、それは「できることの確認」であって、伸びではない。代わりに、動いているコードを1日1回、わざと壊して、直す。文字の色を変える、数字を2倍にする、1行をコメントアウトしてみる。壊れた理由を考えて、元に戻す。
この「壊して直す」が、写経では絶対に身につかない「自分で原因を探して直す力」を作る。さっき書いた「写経はできるが自分では作れない」段差を越えるのは、まさにこの力だ。注意は「1日1回」でいいということ。いきなり全部を作り替えようとすると、難しすぎて心が折れる。少しだけ壊して、少しだけ直す。それくらいが、ちょうどいい負荷だ。
4. インプットしたら、必ず小さく「出す」
教材を読む・動画を見るだけだと、分かった気になって終わる。だから、インプットした日は、必ず何か小さく出す。学んだ機能を使って、3行のコードを書く。覚えた書き方で、前に作ったものを少し改造する。学習記録に「今日はこれを動かした」と一言書くのでもいい。
出すことには2つ効き目がある。1つは、出そうとした瞬間に「自分が本当は分かっていない所」がはっきりすること。読んでいる時は分かった気でも、書こうとすると手が止まる。その止まった所が、明日の課題になる。もう1つは、出したものが小さく積もっていくこと。作ったものが増えていく実感は、点数の伸びより、ずっと続ける支えになる。インプットとアウトプットを、同じ日のうちにセットにする。これだけで、「分かったつもり」で止まらなくなる。
5. 詰まりを「ログ」に残し、相談先を「1つ」持つ
独学の2つ目の難所は「教えてくれる相手がいない」ことだった。これには2段で備える。
まず、自分でフィードバックを作る。詰まったこと、出たエラー、どう直したかを、1行でいいから残す。きれいなノートはいらない。「何で詰まったか」と「こう直した」だけでいい。これは、同じエラーで二度悩まずに済むうえに、後で「自分が何を、どれだけ越えてきたか」の証拠になる。独学のいちばんの敵は、進んでいるかどうかが自分で見えないこと。ログがたまっていくのを見るだけで、その不安が一段やわらぐ。
そのうえで、どうしても分からない時に投げられる場所を、1つだけ用意しておく。質問できるQ&Aサイトでも、勉強仲間の集まりでも、知り合いの一人でもいい。大事なのは数ではなく、「詰まったら、ここに聞けばいい」という逃げ道が1つあること。独学は孤独だと言われるが、ずっと一人で抱える必要はない。自分のログで8割を解決し、残りの2割を聞ける場所に逃がす。この組み合わせが、孤独の不安をいちばん減らす。
6. 「最初の言語」は30分で決める
独学者が最初に溶かしてしまう時間が、「どの言語をやるか」「どの教材がいいか」の比較だ。最初の1つは30分で決めて、始めてしまう。
最初に選ぶ言語は、後からいくらでも乗り換えられる。変数・繰り返し・条件分岐といった基本の考え方は言語をまたいで通用するので、1つ目で身につけた力は無駄にならない。完璧な入り口を探している間は、1行も進まない。迷っている時間より、たとえ選択が最適でなくても動き出した時間のほうが、ずっと力になる。「正しい1つ」を選ぶより、「選んだ1つを正しくする」ほうが早い。どうしても決められないなら、「作りたいものに近い言語」か「学ぶ人が多くて情報が見つけやすい言語」のどちらかで選べばいい。
よくある詰まり方と、その抜け方
独学で詰まる場所は、だいたい決まっている。代表的なものを6つと、その抜け方を仕組みの言葉で書いておく。今まさに詰まっているなら、自分のと近いものを探してほしい。
① 環境構築でエラーが出て、1行も進めない。 いったん飛ばす(仕組み2)。ブラウザで動く環境で先に「動く楽しさ」を取り、環境はやる気が出てから整えればいい。エラーは「あなたがダメ」ではなく「条件が1つ足りない」という合図だ。準備で力尽きるのは、いちばんもったいない折れ方だ。
② エラーメッセージが英語で、読む前に閉じたくなる。 エラーは叱責ではなく、ヒントだ。全部読まなくていい。まず最後の1行と、ファイル名・行番号だけ見る。それをそのまま検索窓に貼る。同じ所で詰まった人が、たいてい先にいる。エラーを「読む」習慣がつくと、独学の速度は一段上がる。怖いのは最初だけだ。
③ 動いたけど、なぜ動いたか分からない。 最初はそれで正常だ。「なぜ動くか」は、仕組み3の「壊して直す」で後から分かる。1か所だけ変えて壊して、戻す。動く理由は、壊した時にいちばんよく見える。分からないまま先に進むのは、ズルではなく、ふつうの順番だ。
④ 何を作ればいいか思いつかない。 大きなものを考えない。自分の小さな面倒を1つ選ぶ。毎日見る数字を表示するだけ、よく使うリンクをボタンにまとめるだけ。「他人にすごいと思われるもの」ではなく「自分がちょっと楽になるもの」から作ると、続く。最初の作品は、世界に1人——自分——が便利なら、それで十分だ。
⑤ 教材を最後までやったのに、自分では作れない。 これは失敗ではなく、写経の段階を終えただけだ。次は仕組み3・4へ進む合図。教材の小さな部品を1つ取り出して、別の用途に使い回してみる。「全部をゼロから作る」のでなく「部品を移植する」から始めると、作る側にそっと渡れる。
⑥ やる気が完全に切れて、何日も開いていない。 戻る時に「昨日の続き」から始めようとしないこと。それは重い。仕組みを使って、今日はログを1行読み返すだけ、開いてあった1問を動かすだけ、に落とす。止まった後の再開は、進むことより「触る」ことを優先する。1回触れれば、たいてい指が次に伸びる。
「向いている人」かどうかは、気にしなくていい
独学について調べると、「独学できる人の特徴」みたいな話がよく出てくる。一人で続けられる、分かるまで粘れる、調べるのが苦じゃない——たしかに、そういう人は独学に強い。
でも、これを「自分はそうじゃないから向いてない」と読むのは、もったいない。さっきの6つを見てほしい。あれは全部、「意志が強い人の特徴」を、意志が弱くても回るように仕組みに置き換えたものだ。一人で続けられないなら、相談先を1つ持つ(仕組み5)。粘れないなら、負荷を1日1回に小さく削る(仕組み3)。調べるのが苦手なら、詰まりをログにして二度手間を消す(仕組み5)。
向いている人は、これを無意識にやっている。向いていないと感じる人は、意識的に仕組みにすればいい。差は才能ではなく、仕組みを持っているかどうかだ。向き不向きは、仕組みで埋められる。
うまくいっているかは、後でしか分からない
最後に、正直なことを書く。
独学がうまくいっているかどうかは、渦中にいる間は分からない。「今、伸びてるぞ」とリアルタイムで実感できる瞬間は、まず来ない。あの時つらかったな、あそこが踏ん張りどころだったな、と気づくのは、いつも後になってからだ。
だから「できるようになった感覚」を待っていると、待っている間に折れる。先に来るのは、淡々と続けた事実のほうだ。
これは、プログラミングに限った話ではない。私は同じ「やる気でなく仕組み」のやり方を、英語でも資格でも使っている——たとえば passed.jp の英語問題集も、難しく考えず「今日1問だけ開く」を続けているだけだ。学ぶ対象が変わっても、続けるための仕組みは同じだ。
向いていないからやめるのではない。仕組みがなかったから、やる気のほうが先に切れただけだ。ゴールを1つに絞って、動くものを初日に触って、1日1回壊して直して、小さく出して、詰まりをログに残して、最初の言語を30分で決める。それだけで、やる気が低い日でも足は前に出る。
そして、たとえ途中でうまくいかなくても、やってみた時間は消えない。続けた人だけが、半年後に自分のログを見返して、「あの時やめなくてよかった」と思える。うまくいかなかった時間さえ、後から効いてくる。今はまだ、開いてある1行を動かせばいい。


