これは、「ブラック ボックス」テスト (コードが何をすべきかはわかっているが、どのように機能するかはわかっていない) と「ホワイト ボックス」テスト (どのように機能するかを知っていると、どのようにテストするかが決まる) の違いです。「ブラック ボックス」テストは、品質保証について言及するときにほとんどの人が思い浮かべるものです。
QA チームがソフトウェア開発者でもある会社で働いています。(あなたが会社を推測したいのであれば、それは分野をかなり狭めます.) 私はジョエルの意見を知っています.のエラーは、コードの書き方を知っているホワイト ボックス テスターによってより効果的に発見されます (したがって、一般的な間違いは何か - たとえば、メモリ リークなどのリソース管理の問題)。
また、QA 指向の開発者は初期設計段階からプロセスの一部であるため、理論的には、プロセス全体でより高品質のコードを推進するのに役立ちます。理想的には、機能に精神的に焦点を当ててプロジェクトに取り組んでいる各開発者に対して、コードを壊す (したがってコードをより良くする) ことに精神的に焦点を当てている反対の開発者がいます。
その観点から見ると、開発者をテスターとして使用するという問題ではなく、1 人の開発者が品質管理に重点を置いている一種の切断されたペア プログラミングです。
一方、多くのテスト (基本的な UI 機能など) では、率直に言って、そのようなスキルは必要ありません。そこがジョエルの狙いです。
多くの企業で、プログラミング チームがコード レビューとテストの義務をお互いのコードでトレードオフするシステムを目にすることができました。たとえば、ビジネス ロジック チームのメンバーは、ときどきツアーに参加して、UI チームのコードをテストおよびレビューすることができます。また、その逆も可能です。そうすれば、フルタイムのテストで開発者の才能を「無駄にする」ことはありませんが、コードを (できれば) 専門家の精査と処罰にさらすという利点を得ることができます。次に、従来型の QA チームが「ブラック ボックス」テストを行うことができます。