釣りっぽいタイトルですんません。
答えは
コンピュータサイエンスの学士を取ろう!!!
です。
ちなみに私はコンピュータサイエンスの学士を取っています。
目次
コンピュータサイエンスの学士って?
コンピュータサイエンスは特定のプログラミング言語だけではなく、広く総合的な観点でコンピュータについてとその応用を学ぶ分野です。
プログラミング初心者がコンピュータサイエンスの学士を取るメリット
実務はプログラミング言語やフレームワークを使えるようになるだけでは足りないことが多いです。
HTTPプロトコルの仕様など基本的なWeb技術はもちろん、パスワードのhash化やXSSなどセキュリティ対策、データベースやその正規化などの知識も必要になります。
時にはリスト操作が遅い場合や計算オーダーを考えた修正など、アルゴリズムの知識なども必要になります。ハッシュにしたりArrayListとLinkedListなんかはよくある例だと思います。
パフォーマンスや可読性を考えるために、関数スタックや変数のスコープ/生存期間など基本的なプログラムの仕組みも理解する必要があります。特に参照・値渡しあたりはかなりこんがらがるところかと思います。
依存関係やアーキテクチャなどソフトウェア設計に関わるところも当然必要になります。ER図やUMLなども必要な場面があると思います。
こういうところを網羅的に学習できるのがコンピューターサイエンスの学士を取るメリットです。
なによりも学士を取っていることは一定量の知識の証明や本気で学んでいるという意欲のアピールにも繋がります。
デメリットは?
4年間かかります。4年で数十万~200万とかかかります。
費用は東京通信大学見たら4年で200万は超えそう。。。
でも放送大学は60万とからしい。
https://www.ouj.ac.jp/hp/nyugaku/gakubu/tuition.html
ただ、期間は長いものの数十万するスクールよりは明らかに質が高いと思います。
放送大学のカリキュラム見たらかなりしっかりしている。
現実的な範囲でどうするか?
ここがこの記事の本題
まあ学士取るのは実力はつくけど年数と費用がしんどいというオチだったわけですが、じゃあ現実的な範囲でどうするか。
大学のカリキュラム・シラバスを参考にする
大学のカリキュラム・シラバスはどういう分野を学んでいけばいいかの指針になるので、そこを参考にして参考書を進めていけばいいと思います。
独学でコンピューターサイエンスを学ぶ
学士とはいかなくても、言語を学ぶだけではなくコンピュータサイエンス全体を学ぶというのは良いことだと思います。
例えばこんなところ。
- プログラミング言語
- コンピュータの仕組み的なところ(回路やCPUの仕組みとかサーバークライアントとか)
- Web技術
- データ構造やアルゴリズム
- DBの入門
- マルチスレッド
- ネットワーク
- 軽くシステムプログラミング
- セキュリティ
- コンパイラの仕組み
- ソフトウェア設計
- 人工知能の入門的なところ
資格で一定の知識を持っていることをアピール
一定量の知識を持っていることをアピールしたければ基本情報や応用情報などの資格を取ると良いと思います。
これらの資格もコンピュータサイエンスを網羅的に理解する必要があるので、知識もしっかり身につくしアピールにもなります。情報系の大学ではなくて応用情報まで取れたらかなりすごいと思います。