若手から中堅、シニアに至るまでみんな「プログラマーになりたい」と言っているのだが
現実問題としてそんなに簡単になれるものではない、というのを知っておいて欲しい
算数や国語は長い歴史の中で様々な試行錯誤が行われ、どのように教えれば大半の人が知識獲得できるかという方法論が確立されてきている
もちろんまだまだ改善の余地はあるが「こういう教え方が良い」というのがちゃんとある
ところがプログラミングに関してはまだまだ歴史が浅く、どのように教育すればプログラマーになれるかが分かっていない
幼少期からC言語を教えるのか、Scratchでいいのか、Pythonがいいのか、何も分かっていない
今のプログラマー達は生存者バイアスでしかないので体験談は全然アテにならない
何かしらそれっぽい理論が発表されてたりもするがエビデンスに欠けるモノが多くてまだまだ研究中という感じだ
そんな感じなので「実際に書いてみるのがいい」「業務で使いながら覚える」「写経するのが良い」などなどいろんな方法論が乱立している
あなたがプログラミングを勉強し始めると「教え方が良くない」「本が役に立たない」となることを覚悟してほしいし
勉強法をトライアンドエラーで繰り返していくことになるので技能獲得には相当な時間がかかる
PythonでもJavaScriptでもメモリのアロケーションのような計算機的知識が必要とされる
みたいに言われることも多いが実際にはそんなことはなく、ちょっとしたバグを引いたときにでもその手の知識が必要になる
もちろん昔に比べれば非常に楽になったが全くゼロでいい訳では無い
同様にクラウドリソースを使うときにTCP/IPを全く知らなくて良いか、と言われるとそうでもない
GraphQL使うときにHTTPの知識が全くいらないわけではないように
プログラミングでは下手するとWiFiやLTE/5Gの知識まで必要とされる
これは例えば建築関係においても同様で、家を建てる人にはコンクリートの基礎知識が必要だったり木材に関する基礎知識が必要だったりするのだが
歴史が古い分野では教育法が確立されているので建築学科なりに行けばキッチリ教えてくれる
同様に情報系の学部に行けば教えてくれるが、大学による差がかなり大きいし、体系化されているわけではない
Word, Excelの使い方を中心に教えるような大学もあれば情報理論から教えるような大学もあるし
それのどちらが良いかは誰も分かっていない
オンラインビデオで有名大学の授業を見ることもできるが、質問はできないので分からないところがあれば終わりだ
なので大学に行ったとしてもいろんな授業を受けてトライアンドエラーで長い時間をかけて技能獲得する必要がある
「Python検定1級」みたいなのが乱立しているがはっきり言って役に立たない
しかも「Python検定1級取得のための集中研修」みたいなのもあって地獄みがある
問題を解くための知識だけを得たところで前述した前提知識がないと実務で役に立たない
プログラマーを雇う側はその手のことをよく知っているので、こういった資格は全く考慮に入れていない
TOEICや英検のように「実務ではあんまり役に立たないんだけどな」と思われてる資格であっても社会的にコンセンサスが取れていればそれなりに役に立つが
プログラミングに関してはそういった資格がない状態である(IPAはそれなりに信頼されているが、取って無いから落とすようなことはない)
この英語における「TOEICがない」状態で困るのは効果測定である
プログラミングを勉強しても自分が成長しているのかどうかを客観的に知る方法が無いので独学で学んでも役に立つかどうか分からない
オープンソースに携わったり業務経験などを経て長い時間をかけて「プログラミングができるようになってきた」となるので1,2年でさっさとプログラマーになることはできない
一番の近道は旧帝大の院に入学して2年間キッチリ勉強すればそれなりのプログラマーになれる
もちろんスタートラインなのでそこから業務経験を身につける必要がある
なので旧帝大の院に入れないような人はプログラマーとしての前提知識を得るための前提知識がそもそも足りていない
独学でやるなら近道は一切無いので5年ぐらいは覚悟した方が良いと思う