正直気持ちはわかる。
個人の実感としては、コンピュータサイエンスの定義と関わるシステムの要件によるとしかいえないかな。
・OSの仕組み
・DBの仕組み
・分散システムの理論(合意形成とかサービスディスカバリとかレプリケーションとか障害リカバリとか)
・CPUの仕組み
・並行プログラミング
toC向けのスタートアップフェーズのプロダクトとかだと正直なくても回る実感はあるし、実際テキトーに作られてるけどなんとか動いてるシステムはかなり見てきた。
でもある程度成熟してユーザ数もトラフィックもかなりあるみたいな状況だとこの辺の知識なしではお話にならない。
そういったプロダクトだとセキュリティ要件やスケール要件がかなり厳しくなってきて、その観点なしに開発運用できないから。
正直ただ作るだけだったらライブラリとフレームワークの使い方さえ覚えておけばなんとかなるけど、
大規模になればなるほど、効率的に作らないとコストがかかりすぎて大変だし、最悪動かない。
で、効率的に作るためにはこのあたりの知識はどうしても必要になるはず。
データ量的にO(n)とO(n^2)ではそれはそれは段違いになる。
まあ、全員ができなくても誰かがやるんだよなぁ。 そういう意味ではプログラミングをする業界にとって必要な知識かと言えば間違いなく必要だとしか言いようがないけど、「この俺様...