始めに
こんにちは、まんじです!
今回はプログラミングを独学するときに一般的に難しいっぽい部分とその対処法を書いていきたいと思います。
自分はプログラミング独学から実務に入ったタイプなので、まあまあ参考になる部分もあるしれません。
大体ここらへんが難しい部分とそのハンドリング方法カナーと思ってます。
- 目標設定
- 事前に情報を調べて目標ありきでプログラミングの勉強をする
- 業界構造の把握
- 前もって調べて、何が微妙か良さげかを事前に知っておく
- 使う技術の選定
- オーソドックスなところを調べておくのと、求人とかで求められてる技術を知っておくのがよさげ
- エラーにハマったり実装のやり方がわからないとき
- AIに聞きつつググりつつある程度は妥協して進む
- モチベ維持
- コミュニティに入ったりできればよさげ(…?)
個人的には技術的な部分よりも目標設定とかモチベとかの技術的じゃない部分のほうが実は大変で難しいんじゃないかなって思ってます。
ということで書いていくう。
1: 目標設定
プログラミングを独学でやる場合には自分で目標設定をするのが必須なので、何気にこれが難しいです。
プログラミングスクールとか何かしらのサービスを受けている場合には勉強期間とゴールの設定などをすることになると思います。
例としては、こういった感じです。
- 1ヶ月でプログラミングの文法の基礎を終える
- 3ヶ月でウェブアプリのデプロイまでやる
- 5ヶ月で仕事に入る
- 2年後にフリーランスになる
こういう目標設定が独学だとふわっとしたまま特に誰にも圧をかけられることなくやることになるので、そこが結構大変です。
プログラミングはなんとなくやってもどこにも辿り着けずにただ挫折するだけです。
適当に勉強してたらスキルになっていつか稼げるようになるみたいなふわっとしたものではなくて、無理やりできるようにして仕事にしないと稼げるようにはならないというつらみがあります。
対処法
独学でやる場合だとしても、自分でいつまでに何をやるっていうことを現実的に調べてから目標設定をすることが必要です。
現実的に調べるってのは1ヶ月で実務入るとかはほぼ無理だから4ヶ月で、とか、実務2年で年収600万とかはフリーランスになればギリいけそうだからそこを目指すとかそういう現実を踏まえた目標設定のことです。
目標設定は1回設定したぐらいだと忘れがちなので、紙に書いてそれを毎日見えるところ(パソコンのモニターなど)に貼って定期的に見るとかするといいんじゃないかなと思います。
あまりにも無謀すぎない目標設定の場合は、定期的に見えるところに紙に書いてあるのをみるとかでも結構有効な雰囲気はあります。
独学でやる場合は目標設定をしてそれをめちゃくちゃ意識して「いつまでに何をやる」ということを自分で決めて実行していくことが大事です。
独学でプログラミングをやる場合には、「目標設定をする」って行動からまずやるとよさげです。
2: 業界構造の把握
業界構造ってのはプログラミングをやって仕事を始めるスキームのようなものです。
- 未経験から会社に入る場合にはどれくらいのレベル感が求められているのか?
- ポートフォリオってのは本当に必要なのか?
- 面接官はどこらへんを見て通すか落とすか決めてるのか?
- 実際に働いてる人はどんな感じの人が多いのか?
- どの技術を使うと良い感じなのか?
こういったいわゆる雰囲気というか感覚のようなものが独学だと誰にも教えてもらえずにネットで見てなんとかするしかないので、結構大変な部分です。
自分も独学でやってるときに自分のレベル感とか含めて全然分からなくて結構大変だった(不安になった)記憶が強めです。
対処法
誰かに(スクールや個人に)教わるのが1番いいってのは間違いないんですけど、独学でやる場合にはネットの情報を頼りにするのがやっぱり大事というか、それしかないです。
ただ、、、ネットの情報はそもそも量が多すぎて取捨選択が結構難しくて、何が本当なのか盛られてる情報なのか作り話っぽい感じなのかとかを判断するのもまあまあ大変です。
個人的には全体的に情報を移動中とか隙間時間とかにいろいろ見て自分で比較すると、そこそこ解像度が高くなってくるんじゃないかなってのは思うところです。
SESはこうだとか、SIerはこうだの、Webの自社開発はこうだの、どれくらい勉強して入れるだの、、、っていうなんとなくの雰囲気を察する、、、みたいな感じ。
とりあえずよく言われることは大体同じでここらへんです。
- SESは微妙
- ウェブ系の自社開発に入れ
- フリーランスやら転職で年収をあげあげする
- 言語は最近だとTypeScriptとかGo?挫折しにくいのはPython
- 正社員ならメガベンチャーに入れるといい, GAFAMは強い
ただ情報を見すぎても何もできなくなっちゃいがちなんで、ある程度見て雰囲気を知りつつ、それをベースに勉強しつつ実際に応募したり募集要項見て調整を続けることが大事です。
最初にざーっと定番のところは見て、あとは移動中とかにちょっと見ておいて、それ以外は勉強ぐらいの時間配分のがいいと思われます。
独学でやる場合はそういった情報が入ってこないので、意識的に最初のうちに業界の構造を調べておくのが大事です。
(がむしゃらにプログラミングだけやるのは微妙)
3. 使う技術の選定
選定って言葉とか使うとかっこよく見えますが、おおまかなところとしては言語とフレームワークに何を使うかって部分になります。
自分は独学でやってた頃にととりあえずPythonでFlaskとかDjangoをキメこみましたけど、振り返ってみるとReact*TypeScriptが良かったナーとかは思ったりします。
こういった使う技術の良し悪しというか、案件とか会社で多く使われてるかとかそういう部分が独学だと分からないのがしぶい部分です。
対処法
使う技術に関しても同様に自分でまず調べるのが大事です。
とりあえず始めやすいPythonでやるとかもいいんですけど、Pythonは案件とか会社で使われてるところがそこまで多くはない印象は受けたりするのが難しいところ…みたいなことが独学だと分からなくて少ししぶいです。
理想を言うとどっかしらのエンジニアの副業案件があるサイトでもフリーランスのサイトでも会社の採用情報でもいいんで、そこらへんで使われてる技術をいろいろ見てみると何がよく使われているのかはなんとなく雰囲気で分かるようになります。
受験勉強みたく最初からゴールを見据えて逆算してそれに合わせてやるってのが効率良いです。
とは言ってもどの言語やフレームワーク使ってもやった時間は無駄にならないというか抽象化されたなんか能力っぽいものが他の言語とフレームワークでも転移する感はあります。
とりあえずなんだかんだで全体傾向として言えるのはレガシーめな言語やフレームワークよりも、モダンなやつのが会社もイケてたり待遇もよかったすることが多い気はします。
JavaやるならGoやらTypeScriptのがいいみたいな雰囲気だったり、jQueryの勉強をするならReactを勉強しなさい!とか。
4. エラーにハマったり実装のやり方がわからないとき
独学でやってるとエラーが解決できなかったり実装方法が不明でつらい…ってのはよくあることです。
入門シーズンだとリアルに丸1日なんか1個のエラーを解決するのに時間かけちゃうとかはあるあるを超えたあるあるがあります。
自分もプログラミング入門してたの頃とかには普通に1個ハマって「ぬおおおおおお」とか叫びながら半日かけて解決できた気がする(実際はできてないんだけど)とかはよくありました。
今振り返ると普通につらかった。ってことを書いてる記事があった。
対処法
エラーとか実装方法不明って部分に関して言うと、独学でも誰かに教えてもらっててもそこまで大きな違いは個人的にないと思ってます。
プログラミングの場合、誰かに教えてもらって理解して進めていくってよりかは、、、自力で調べてなんとかすることが大事というかそこがいわゆる技術力になります。
なので、普通にググったりAIに聞いたりしてなんとかするっていうごく普通な解決策を取ろうって結論に至ります。
最近だとAIが最強すぎるので、AIにつっこみながらググりながらやればいいので昔よりやりやすいのは間違いないです。
エラーにハマったり実装方法が不明な時は、まずAIに聞くかGoogle検索して、デバッグしまくりながら試行錯誤して、それでもダメなら迂回策やある程度は妥協する方針で進めるのが個人的にはおすすめです。
迂回策とか妥協するのってなんか気持ち悪くて嫌だと思いがちなんですけど、ずっとハマって時間を浪費するよりかは、ある程度試行錯誤して諦めてのちのち理解できるようになるぐらいのほうが効率は良いと思います。
とりあえずエラーとかにハマった時はAIとGoogleに聞いて、試行錯誤して、また調べ方変えて聞いて、それを何ループかしてダメなら迂回策や諦めるっていう選択肢で良いカナーって思います。
5. モチベ維持
独学でプログラミングやってると多分1番難しいというか苦戦するのがモチベ維持だと思います。
厳密にはゴールを見据えて目標設定をしたうえでそれを日々のタスクに落とし込んでだるくてもやるっていう部分なんですけど、これは独学だと結構大変です。
1人だと心が折れそうになることが実際多いです。(てか、自分は心折れまくってましたし。。。)
対処法
メンタル系に関しては、どっかしらのコミュニティに入るとかメンターつけるとか人間にサポートしてもらうのがなんだかんだで1番良い気がします。
「いやおれは1人でやりたいんじゃああああ」って場合には、とにかく目標設定をちゃんとやって、それを日々の作業という名の習慣に落とし込むことに徹してそれを継続するってことが必要になります。
特に独学だとサボっても誰にも申し訳ない気持ちにならなかったり誰かが気にしてくれるわけでもないので、プログラミングの勉強をしないほうが頭おかしいだろってレベルまで生活をそれ一色に寄せる必要があると思います。
「プログラミングの勉強をしながら何かをする」ではなくて「プログラミングを生活の主軸にして残った時間で何かをやれる時間があればやる」ぐらいのスタンスで生活することです。
それぐらいしないとやる・やらないっていう選択が出てきてしまうので、やる・やらないではなくて、もうやるしかないって状態にすることが多分大事です。
まあでも、、、それぐらいのスタンスでやると1~3ヶ月ぐらいで結構メンタル病んでしまいがちなので、結構難しいところでもあるので自分が耐えれるギリギリのとこまでやるって感じになります。
ただ、、、1番良いのはやっぱ自分がやる気とかがある状態で誰かしらに教わることとか仲間を作ることです。
まとめ
独学でプログラミングやるのが難しいのは目標設定とか業界の雰囲気を知るとかモチベ維持らへんだと個人的には思います。
エラー解決が難しいとか、技術的な難しさってのは正直慣れだし、そもそも難しいのが普通っていうのがあるので独学でも誰かに教えてもらっていてもそこまで大きな違いはありません。
一方で、、、目標設定とかはミスってると元も子もなくて、「なんかプログラミングをやるとリモートで月収50万円稼げるらしいぞ!?」とかいう浅はかな考えにいきがちで、何をどれくらいやってどこにどういう形態で働いてそれぐらい稼ぐのかみたいな解像度を高めるってのが目標設定で大事な部分です。
そんでこれが独学だとすごく難しいというかかなり難しいので、そこらへんをいかに自分でうまくハンドリングするかが独学でやるためのコツというか乗り越えるべきハードルです。
目標設定ができたらあとはプログラミングを生活の主軸にしてやらないほうがおかしいぐらいのスタンスでやれればOKです。
ある程度定番どころさえ抑えていれば、使う言語とかフレームワークとか勉強方法(?)とかで差はつきません。
まあ仕事で使うやつを最初からやったほうが効率はいいんだけど・・・ね!(フロントエンドでいくならReact*TypeScriptがいいみたいな感じ)
ってことで、独学でやる場合はいろいろつらみがあるので、そこをうまく頭を使ってハンドリングしていくと良いと思われます!
よかったら他もぜひ!