プログラミング
バグ盲
要約
著者は、多くの人が見過ごしてしまうバグを自分は容易に発見できることに気づき、それを「バグ盲」と呼んでいます。このバグ盲は多くの人に共通しており、意識的に問題点を探すことで克服できると著者は主張します。自身の経験や、検索エンジン、コース管理ソフトウェアなどの例を挙げ、製品開発チームがユーザーの不満や深刻な欠陥に気づかない「盲目性」がいかに問題を引き起こすかを論じています。
全文翻訳
私は以前、なぜ他の多くの人よりもはるかに多くのバグを目にするのか不思議に思っていました。私は毎週数百から数千ものバグを容易に発見し、何もかもがうまくいかないように思えますが、話をする人のほとんどはこのようなことは何も見ていません。長い間、これは私がコンピューターをどのように使うかに関係していると思っていましたが、時間が経つにつれて、それは主に人々が同じバグに遭遇しても気づかないだけだと気づきました。
もしあなたがプログラマーでないなら、それはおそらく世界を見るより良い方法ですが、品質/バグ盲を克服することはプログラマーにとって役立つと思います。私は多くの友人や知人(単にバグを指摘するだけで)にこれをやってきました。数週間後、その気がある人はバグに気づき始める傾向があります。
私はこのようなことに気づくため、ディレクター/VP/エグゼクティブなどが、問題に気づく可能性が高い(そして必要であれば修正するか、修正を推進する)誰かから実際の意見を聞きたいときに、私に何かを評価するように依頼する仕事に何度も就きました。時には、問題が見つからないこともあります(私が気づく種類の問題ではない問題がある可能性はあります)。より頻繁には、「軽微」から「中程度」の範囲の問題を見つけます。そして、時には問題は深刻で、そのものがある状態になった経緯についての議論を調べると、通常、そのものが素晴らしい、うまく機能しているなどの内部コメントの流れがありますが、そのものを開いて試してみると、かなり直感的でない回避策をいくつか行わないと機能しない状態になっています。
通常のユーザーは、そのものを使用できないだけでなく、非常に面白おかしく、あるいは腹立たしいほど悪い経験をするため、友人に話すでしょう。この投稿は10年ほど前から考えていましたが、私はどのようにして、ほとんどのユーザーが気づかずに奇妙なコーナーケースの動作を引き起こしているのではないかと常に疑問に思っていたため、それを書き上げるのをためらっていました。しかし、製品が発売され、私が目にしたのと同じ問題にユーザーが遭遇して失敗するケースが増えるにつれて、一般的に、私が異常なことをしているからバグに遭遇しているとは思えなくなりました。
もし製品が私の使用では深刻な欠陥があるように見えるなら、それはおそらくそうでしょう。そしてLLMの魔法のおかげで、今ではLLMに多くの点で通常のユーザーのように振る舞わせ、問題が多くの異なるシナリオで再現することを示すことができます。
いくつかの例を挙げたくないのは、それが私の仕事で、そのものがどれだけうまく機能するかを見るためでしたが、内部の例は建設的で非難のない方法で意図されていても、外部に再投稿されると常にそのように読まれるとは限らないため、あまり面白くない、あまり裏付けのない「ランダム」な例をいくつか挙げます。
しばらく前に、いくつかのウェブ検索クエリの結果を書き出し、Google、Bing、Kagiから貧弱な結果を見つけました。一般的に、主要な検索エンジンはクエリに対して良い結果を返せず、低品質のSEOスパムでいっぱいのページや、実際には詐欺であるサイトを返しました。ちなみに、上記のスケールでは、これを「中程度」であり「深刻」ではないと考えるでしょう(深刻なのは、検索エンジンが半分の時間500エラーを返し、結果の大部分が詐欺であるなどです。深刻の基準は、通常のユーザーがそのものを使用できない可能性が高いことであり、悪い経験をすることではありません)。
GoogleとBingの検索結果の私の特徴づけに異議を唱えた人はほとんどいませんでしたが、Kagiについては間違っていると言われました。いくつかのケースでは、人々は私に実際の検索結果を送ってきました。そのようなすべてのケースで、検索結果には私が見ることができる良い結果が含まれていませんでした(例えば、季節予報クエリでは、検索は最新の季節予報を返すことに失敗し、SEOスパムでいっぱいでした)。あるケースでは、ある人がKagiのフィルターのリストと、結果が良いか悪いかの主張なしに得られた検索結果の両方を私に渡しましたが、人々は一般的に結果が良いと主張しました。たとえ結果が有用な結果へのリンクに失敗し、スパムでいっぱいだったとしても、ユーザーがGitHubを結果の上位にピン留めするなどのことをした場合を除き、それはGitHubでホストされているソフトウェアをダウンロードすることを目的としたクエリでは機能しましたが、もちろん、投稿からの他のクエリでは完全に失敗しました。
抽象的に言えば、物事のファンは、そのものの欠点に対して盲目になりがちであることは理解できます。例えば、ボルボがアウトオブサンプル衝突テストでどのように機能するかを見た後にボルボを購入したので、ボルボの車のフォーラムで私の質問への回答を検索することがあります。十数年以上前から、存在する信頼性データ(そしてボルボを修理する整備士の経験談もそれを裏付けていると思います)は、ボルボの信頼性は平均以下から悪いというものですが、もちろんボルボのフォーラムは、ボルボが最も信頼性の高い車の一つであり、データはすべて間違っていると主張する人々でいっぱいです。
トピックにより中心的な例は、Blackboard(コース管理ソフトウェア)かもしれません。かつて大学で最も広く使われていたコースワーク用ソフトウェアだった頃、そのソフトウェアは学生と教授の両方から広く嫌われていました。私の知人の間で、それは最も広く嫌われているソフトウェアだったと言っても公平だと思います(Visual Source Safeのような、より強く嫌われているソフトウェアもありましたが、より強く嫌われているソフトウェアは、全体として最も広く嫌われているほど広く使われていませんでした)。Wikipediaのページは、Blackboardが「教育界で最も嫌われている、さらには憎まれている企業の一つ」になったと指摘しています。また、2011年12月、Fast Companyは、Amplicateの顧客意見調査の回答者の93%がその会社を「嫌っている」と報告しました。
私がずっと若く、フィルターが少なかった頃、Blackboardで働いている人に会ったことがあり、何も考えずに「そんなに多くの人に嫌われているこのソフトウェアで働くのはどんな感じですか?」と愚かに口走ってしまいました。幸いなことに、話していた人は全く気分を害さず、むしろ、それがユーザーに本当に好かれている広く愛されているソフトウェアだと思っていたので混乱していました。彼は私が言ったことが真実であるとは信じていないようでした。私は私の勘違いだと示唆するコメントをし、その後会話は別の方向に進みました。
当時、より若く、よりナイーブだった私は、私の知人の間で最も広く嫌われているソフトウェアが、私が会った会社の従業員一人(そしておそらく他の従業員も)にとっては本当に好かれているソフトウェアだと思われていたことに本当に驚きました。
ボルボのフォーラムがどうなっているのかは理解できます。車は一般的に今では十分に信頼性が高いため、人々は車の故障を経験することはほとんどなく、誰かが「データは正しくないはずだ。結局、私の車は一度も故障したことがない」と考えるのは簡単です。
検索結果がいっぱいのスパムを見て、その結果がどれほど素晴らしいかを説明するメッセージをすぐに送る人がどのようにして存在するのか、あるいは、すべての人がその悪さについて話している(しばしば自発的な苦情で)、ニュース記事がそのソフトウェアがいかに嫌われているかを議論し、そのソフトウェアに対するほぼ普遍的な嫌悪感がそのWikipediaページに言及されているにもかかわらず、ユーザーが一般的に有名なソフトウェアを愛していると考えることができるのかは、私にはより謎です。
Blackboardに似た例としては、Discourse(フォーラムソフトウェア)のウェブパフォーマンスが挙げられるかもしれません。この投稿のインスピレーションの一つは、Discourseの従業員との議論でした。彼らはDiscourseが優れたパフォーマンスを持っていると考えていました。私はそれを興味深いと思いました。なぜなら、Discourseは実際のページロードを遅くするコードを含んでおり、LCPのようなウェブパフォーマンス指標を不正に操作していたからです。それは単にベンチマークのために最適化することを超えており、実際のレベルに達していました。