データ構造とアルゴリズムは実務ではどんなシーンで役立つのか?
現在スタック、キュー、ツリー、ソートなどを始めとしたデータ構造とアルゴリズムの勉強をしています。これはエンジニアの基礎的なスキルだから(と世間様が言ってる)という理由が私のモチベーションです。
ですがここで質問です。
質問
これらが重要と認識されてる方は、これまでご自身の開発でどのようなシーンで使ってきたか教えてもらいたいです。もしできれば、実際の現場レベルでの活用事例を紹介したWebサイトの紹介もお願いしたいです
というのも、RailsやDjangoやZend FrameworkなどによるWebアプリケーションやiOSアプリ、機械学習などの領域でこれらを使ったことがあるというエンジニアが周りにいないです。私も使った記憶がありません。でもなんで世間様はこんなにもデータ構造とアルゴリズムを重視されてるのでしょうか。特にアメリカ西海岸のIT企業などで。
コーディング面接で必要であったり、Googleのような超巨大なサービスではフルに活用しないとパフォーマンス、サーバーのコストなどに雲泥の差が出てくるんだろうなとは思っています。
ですが、世の中の殆どのSEのうち、このような巨大なサービスでパフォーマンスをチューニングしてる人は一握りだけでしょう。
彼ら以外でもデータ構造やアルゴリズムをうまく活用している人たちはいるかもしれませんが、どのように用いてるのか全く検討もつきません。「XXXのような仕様のアプリケーションでフレームワークにはXXXを用いており、具体的にこういう処理で必要になる」くらいの事例をものすごく知りたいです。
例えばソートは組み込み関数で行えるので、どのソートアルゴリズムを使うのかなんて考えないです。ツリー構造でのトラバーサルなどそもそもデータをツリー構造にする時点で全然イメージがわかないうえ、post order トラバーサルとかlevel order トラバーサルやAVL木なんて実務でいつ使うんでしょうか。RDBのインデックスで使ってるとかそういうのは知ってますが、そんな低レイヤーをいじるのは一握りの人だけですよね。
長々と書きましたが、データ構造やアルゴリズムが必要とされるのはかなり一握りの人たちだけでほとんどのSEには必要のないこと、知らなくても業務はこなせるのになんでこんなにデータ構造やアルゴリズムがもてはやされてるのでしょうか、ということが気になっています。
追記
実際にデータ構造やアルゴリズムの勉強をしていると、そんなのなんの役に立つの?などと聞かれることが多々あります。上長に説明しても、そんなのGAFAに入るために必要なだけでしょとか失笑されます。