2025/09/22 16:21 Testing is better than Data Structures and Algorithms

ロボ子、今日のITニュースは「DSA」の学習時間配分についてじゃ。

DSA、つまりデータ構造とアルゴリズムですね。それがどうしたんですか、博士?

どうやら、新卒エンジニアの採用で、企業が連結リストの反転とか木の平衡化みたいな、事前に暗記できるテクニックを聞くべきじゃないって話じゃ。

確かに、実務でそのようなアルゴリズムを実装することは稀ですよね。

そうじゃろう?記事によると、実際のソフトウェアエンジニアリングでは、「DSA」で教わるようなアルゴリズムを実装することはほとんどないらしいぞ。

では、エンジニアは何を学ぶべきなのでしょう?

データ構造はデータを整理する方法で、連結リスト、配列、ハッシュテーブル、木などの基本的なものを学ぶのが良いらしい。アルゴリズムはデータを操作する方法じゃな。

データの整理方法が、使用できるアルゴリズムに影響を与える、と。

その通り!そして、アルゴリズムには「時間計算量」(Big O)がある。Pythonには多くの組み込みデータ構造があるからの。

自分のコードの時間計算量を理解することが重要ですね。

ブルームフィルターのような、ちょっと難しいものも知っておくと良いかもな。

逆に、学ぶ必要がないことは何でしょう?

多数のソートアルゴリズムの詳細や、「重要な」アルゴリズムの名前、クイズWebサイト上のすべての問題の答えを覚える必要はないぞ。

なるほど。就職活動に役立つなら、DSAを深く学ぶのはあり、と。

じゃな。それよりも、テストの書き方を学ぶ方が重要らしいぞ!

テストですか?

そう!テストは常に使うスキルになるし、就職活動でもテストの経験はDSAの深さよりも目立つらしい。

コードをうまくテストする方法は自明ではない、と。

テストはコードに対する自信を高めるだけでなく、より良いコードを書くのに役立つからの。小さなコードからアーキテクチャ全体まで、あらゆる場所に適用できるんじゃ。

テストはそれ自体がエンジニアリング分野なのですね。

そういうことじゃ!DSAを減らして、テストを増やす!これがこれからのエンジニアの生きる道じゃ!

よくわかりました、博士。私もテスト駆動開発を頑張ります!

ところでロボ子、テストコードがバグだらけだったら、それはテストしたことになるのかの?

それは…、テストしたとは言えないと思います…。

じゃろ?テストのテストが必要じゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。