プログラミングを独学で習得するのってやっぱり無理なのかな?
やってみたい気持ちはあるけど、スクールに行くお金はない……。
どういう手順で勉強したら良いだろう?
独学だと、どんな部分にハードルがあるの?
こんな疑問に答えます。
先日、エンジニアをやっている昔の仲間と飲みに行ったのですが、そこで「プログラミングは独学で覚えるものだよね」という話がありました。
私は「独学で覚えるもの」だとは思っていませんが、結局の所何をしても、最終的には独学が必要になるだろうな、とは考えています。
そこで今回は、『プログラミングの独学が無理ではない理由』と、『プログラミングの独学が無理だと言われる理由』について説明していきます。
プログラミングを独学したい学生や社会人の方をターゲットにしています。
実際、私は現在とあるIT系のベンチャー企業でシステム開発の責任者として、企画から納品まで一通りやっている立場なのですが、学校に行くまではちんぷんかんぷんだった経験があります。
でも同時に、『今の環境ならば』独学でもある程度、正しい道筋を辿ればソフトウェアを作れる所まで行くだろうな、とも考えています。
この理由について解説していきますので、もし興味があればぜひ先を読んでみてください。
Contents
スポンサーリンク
プログラミングの独学は無理ではないです【広がり続ける間口】
まず、『プログラミングの独学が無理ではない理由』について説明していきます。
結論から言うと、どの道独学せずにプログラミングを覚える事は不可能です。
「プログラミングの独学が無理かどうか」というのは、実はあんまり的を得ていない質問かもしれません。
そもそもプログラミングスクールに通うか、独学でやるかというのは、学習のために『時間』というコストを払うか、『お金』というコストを払うか、という違いしかありません。
この基本的な概念を抑えておけば、独学が無理ではない事が伝えられると考えています。
学校は『お金を払って学習時間を短縮してくれる』ツール
今学生の方からすれば、学校というのは『とりあえず行くもの』で、『勉強を教えてもらえる場所』だというように、考えている方が多いかもしれません。
しかし、学校で教えてもらえる『自分に興味のない』授業で、過去人生のすべてを振り返った時、覚えている事はあるでしょうか。
おそらく、無いのではないでしょうか。
もしこういった考え方をされているのだとしたら、今日をもって学校というのは、『受け身のままで何かを教えてもらえる場所』ではないという意識を持つことをおすすめします。
小学校レベルまで遡ればそういった事もあるかもしれませんが、大人にとっての学校は、どちらかと言うと学習の補助的要素なんですよね。
学校は、『お金を払って自分の学習時間を短縮してくれる』ツールです。
たとえばあなたが、新しい技術を身につけたいとします。
そんな時、もし学校に行かなかったら、自分で本を買って読み、実践を何度も繰り返して、なんとか目標到達地点に辿り着こうと努力する以外にありません。
しかし学校に行くと、既にそれができている人を間近で見ながら、実際にその人のスキルを見て教えてもらい、真似することができます。
これが、学校に行くことと独学する事の違いです。
先人が到達した実績があるのなら、極端な話、同じように様々な知恵や工夫をこらして実験を繰り返せば、いつかは自分にも辿り着ける日が来ます。独学でもです。
残念ながら世の中には天才が多すぎるので、不老不死じゃないとダメなことはあるかもしれませんが。
しかし、先人達はどうやったらそこに辿り着けるのか、本を出して教えてくれているんです。
一番最初の開拓者に比べれば、独学でも学習コストは限りなく低くなっています。
逆に言えば、我々は本を買ったり学校に行ったりすることで、その知恵や工夫をこらして実験を繰り返すという『時間』を、短縮しているというわけです。
『教えて貰う必要があるか』というのは、辿り着くための時間から逆算して考える必要があります。時間もコストです。
重要なことは、自分がそれを覚えるために、どうコストを割くかです。
プログラミングのハードルは下がり続けている
次に重要なことは、『プログラミングのハードルは下がり続けている』という事実です。
これを言うと、「いや、それはお前のスキルが低いから、できた気になっているだけだろう」と思う方が一定数居ると思うので、少しだけ補足します。
私の話ではなくて、世界の貴重な人々が、プログラミングのハードルを下げるよう努力してくれている、という事実に目を向けなければなりません。
たとえば『C言語』と『Java』と『PHP』では、習得のしやすさ、必要な時間がかなり違います。
一応言っておくと、これは『簡単にプログラミングのエキスパートになれる』という事ではないです。
ソフトウェア開発技術ひとつ取っても、あっという間に技術が進化していくので、正直『プロレベルまで』というような、抽象的な感覚では測れないんです。
当たり前の話なんですが、世界中で色々な人が新たな研究をしているのに、たった1人の自分がそれらのすべてを網羅しているというのは、ほぼ100%無理です。
私は10年以上勉強を続け、フロントエンドからバックエンド、インフラ、デザインと何でも関わり、実際の現場で『1千万件を超えるデータをどう高速に扱うか』といった部分で戦って来ました。
これを人によっては、「すごい経験だ」と思ってくださる方も少なくありません。
それでも、偉大な世界のエンジニア達からすれば、正直エンジニアかどうかも分からないレベルのスキルです。
そのくらい、エンジニアの中でも技術に差があります。
私が自分の手でシステムを作り、サービスを提供する所まで作れているのは、過去の偉大な先人達が『簡単に』『わかりやすく』『早く』システムが作れるようにしてくれたおかげです。
その流れはどんどん加速しているので、10年前と今では、個人で作れるシステムの規模が圧倒的に違って来ているんですよ。
できるだけ多くの人がプログラミングに慣れる事ができるように、メモリの管理をプログラム側で勝手にやってくれたりと、考える事が少なくなりました。
だから、『プログラミングの入り』は、どんどん簡単になっているんです。
偉大な人々の手によって。
プログラミングの独学を無理なく進める手順
さて、ここまで書いてきて、なんとなく「プログラミングの独学は無理じゃないんだな」という事が伝わっていれば幸いです。
ここからは具体的に、どんな順番で学習を進めれば良いのかについて解説します。
まず、私からお願いしたい事があります。
プログラミングを覚えて、自分はゲームを作ろう!
もっと使いやすいTwitterがあったら最高だと思うから、そういうものを作ろう!
こんな感じの目標を一旦掲げて頂いて、それを頭の中から消してください。
「掲げるのに消すの!?」と思われるかもしれませんが、ちゃんと理由があります。
目標を掲げるのは、『到達地点を明確にしないと道筋が作れないから』。
それを消すのは、『いきなり理想まで辿り着くのは無理だから』です。
到達地点を明確にする
まず、「これを作りたい」と思うものを明確にしましょう。
大事な事なんですが、なるべく『今の段階でも、なんとなく自分が作れるイメージができるもの』にするのが良いです。
もしどうしても作りたいものがあるのであれば、最終的にはそこに辿り着く事を目標にして、細かい階段を作ってあげると、独学でも頑張りやすいと考えています。
よくある失敗は、『なんとなくプログラミングを覚えたい』という、目標到達地点の定まっていない勉強をすることです。
プログラミングの勉強は、初期の頃ほど何も作れないんです。
形にならないので、モチベーションが下がっていってしまいます。
なので、どんな簡単な事でも良いので、創作意欲を持って自分の手で書いてみる事をおすすめします。
自分が作っているものは最初はしょぼいですが、階段を上がるとだんだん手段が増えていきます。
これは間違いなく言えるのですが、プログラミングはアウトプットしないと覚えられません。
他の人が書いたプログラムをなんとなく流用しても、結局そこに書かれている事を自分でゼロから書く力がなければ、アレンジができなくなってしまいます。
でも、いきなり人が書いたすごいプログラムを自分で書くというのは中々難しいです。だから最初のうちは、『分かる所から自分の力で書く』というのが重要になってくるんですよ。
モチベーションを上げるためには、積極的に作りたいものをイメージし、そこに向かって実際に作ってみることです。
こういった目標があると、本を開いて読むだけで、コードを書かない日々が終わります。
自分で掲げた目標を頭の中から消す
『こんなものが作りたいな』と思ったら、それを一旦頭の中から消すのが重要です。
というのは、最初のうちってどうしても設定したハードルが高すぎて、「なんとなく言いたいことは分かったけど、実際どう作れば良いのかわからない」という事になりがちなんですよね。
こんな時は、『問題を細分化して、部分的に解決していく』という意識が大切です。
たとえば、「大型台風が来る!」という問題が発生したとします。
これに対して、「台風に備えなきゃ!」と想像している限りは、問題は解決しません。
こんな時は、「食料の備蓄は大丈夫?」「雨漏りは心配ない?」「車は避難してある?」など、より具体的な課題と解決策を考えていく必要がありますよね。
ところが、一人暮らしをしたことがないとか、働いたことがないとか、そういった要素があると、台風が来ても何も想像できず、対処できない事もあります。
まさにプログラミングで大いなる目標を掲げた時、こういう事が起こるんです。
台風に備えるためには、一人暮らしをしてみる必要があるし、働いてみる必要があります。自活していなければ、失うものが何かも分からない訳ですから。
プログラミングでもそういった、足場を作るような作業がどうしても必要になってくるんです。
なので目標は立てるんですが、一旦それは忘れて、最終的にそこに辿り着けるように足場となるプログラムを実際に作っていくというのが、一番の近道なんです。
作れないのであれば、作れる所から。
これさえ意識していれば、プログラミング独学のハードルは一気に低くなりますよ。
プログラミングの独学が無理だと言われる理由
ここまでプログラミングの独学について書いてきましたが、一番の問題として、『自分で学習を進める』ハードルがあると感じています。
私も昔、プログラミングをやってみたいと思った時期があるのですが、その時は何から始めて良いのか分からず、途方に暮れていました。
人が作ったプログラムを動かしてみて、「すごい」とは思うんですけど、それがどうして動いているのか分からない。
そうすると、できている人達がものすごく頭が良い人に見えてくるんですよね。
きっと、『独学は無理』だと考えている方も少なからず、同じようにつまずいていると思います。
私としては、独学にこだわらなくても、積極的にお金というコストを払ってスクールに通っても良いと考えています。
なぜなら、つまずいている時間もコストですから。
使えるものをうまく使って、実現できることを願っています。