プログラミング
ソフトウェア品質に関する考察
Notes on Software Quality (anthonyhobday.com)
要約
この記事は、ソフトウェア品質を「問題の不在」と定義し、美しさ、関連性、コスト、パフォーマンスといった普遍的なシグナルと、信頼性、速度、明瞭性、有効性、効率性、美しさというソフトウェア特有の6つのシグナルから考察しています。品質は組織のリーダーシップや文化に依存し、規模が大きくなるほど維持が困難になるトレードオフであると論じています。品質向上は従業員の満足度向上、競合優位性の確立、収益増加など多くのメリットをもたらしますが、組織の規模や文化によっては実現が難しい場合もあると指摘しています。
全文翻訳
ソフトウェア品質に関する考察
目次:品質に対する私の考え方
品質の普遍的なシグナル
ソフトウェアにおける品質の6つのシグナル
ソフトウェア品質のメリット
品質に関する信念
私が反論したいこと
品質に対する私の考え方
品質とは問題の不在である
「問題の不在」が、私が品質に対して思いつく最良の定義です。品質を測定する最も実用的な方法は、多くの異なる人々とテストを行い、多くの専門家に見てもらうことです。徹底的なテストと100人の専門家が問題を見つけられない場合、それはおそらく完璧です。
品質は「完璧」へのスペクトラムである
完璧は不可能です。業界で最も設計が良いと合意されているソフトウェアでさえ、明白な問題があります。しかし、それに近づけば近づくほど、より良くなります。完璧に近づこうとすればするほど、それは難しくなります。これは、品質が関わるあらゆる場所で見られるのと同じ「収穫逓減」効果です。
品質は組織に依存する
リーダーシップと文化の両方が品質を定義し、それを可能にします。たとえ彼らがそう信じていなくても。たとえ彼らがそれについて考えていなくても。彼らの行動と信念は、品質を可能にするか、あるいは制限するかのどちらかです。
品質は能力と意欲の結果である
組織には高品質なものを作り出す能力(能力)がありますか?そして、組織は品質が達成されることを許容していますか(意欲)?
私が組織が高品質なソフトウェアを作成するのを見た約100%のケースでは、それはリーダーがそれを望んだからです。リーダーが品質を望まない場合、それははるかに困難になります。しかし、あなたが何に取り組んでいても、あなた自身が達成できる品質の量があることを忘れないでください。最も厳格なデザインシステムで制御されたインターフェースでさえ、より高品質で低品質な選択肢が存在します。
組織は品質の客観的な尺度(例:報告されたバグ)を設定できます。うまくいけば、それらの客観的な尺度が、主観的な尺度(例:「専門家はこの品質が高いと考えるか?」)に対して組織を盲目にしないでしょう。
品質は規模とともに困難になる
組織やソフトウェアが大きくなるほど、品質は難しくなります。ある程度の規模を超えると、高品質は不可能になります。一部の組織は高品質なソフトウェアを作成する能力がありません。重要なのは、これは規模による自然な結果であるということです。それは解決すべき問題や不満ではありません。それは、ソフトウェアにおけるほとんどすべてのことと同様に、トレードオフです。
品質は必須ではないが、理想である
すべての組織が品質を重視することを願っています。多くの組織がそうしておらず、そうする必要もないことは明らかです。多くの商業的に成功している組織は品質を優先していません。しかし、品質は理想です。誰もが高品質な世界に住みたいと思っています。品質を作り出すことは良い気分です。高品質なものは長持ちします。そして長期的には、人々があなたのブランドが品質を代表していないと気づいた場合、商業的な成功はより困難になります。
品質の普遍的なシグナル
これらは、私がすべてに適用できると見つけた品質のシグナルです。人々と人工物。
外観:単純化して言えば、ものが美しいほど、私たちはそれを高品質だと考えます。これは、美しさが努力を必要とし、一般的に品質も同様であるためだと推測します。私たちが何かに注意を払ったという証拠は、さらなる注意の証拠です。
関連性:私たちは、それが何に関連しているかによって、それが高品質かどうかを判断します。一般的なアプローチは、社会的証明であり、誰かまたは何かが他の誰かまたは何かに関連付けられています。私たちは、それが付き合っている会社によってそれを判断します。
コスト:誰かまたは何かがより多くのお金がかかる場合、それはそれだけの価値があるからだと仮定するかもしれません。しかし、「コスト」は「お金」を意味する必要はありません。例えば、何かがより多くの時間を要する場合、それはより高品質だと仮定するかもしれません。
パフォーマンス:パフォーマンスは、「最高速度」のような定量的なもの、または「どのように感じさせるか」のような定性的なものかもしれません。それは「タスクを完了するのに役立ったか」のような結果に焦点を当てたものかもしれません。単純に言えば、外観が「どのように見えるか」であれば、パフォーマンスは「どのように機能するか」です。
ソフトウェアにおける品質の6つのシグナル
信頼性:ソフトウェアは、常に期待どおりに技術的に機能しますか?これは、バグ、ダウンタイム、エラーなどがないことを意味します。
速度:ソフトウェアは、実質的に可能な限り瞬時に、またはそれに近い速度で入力に反応しますか?より時間がかかるタスクについては、可能な限り最速ですか?
明瞭性:ソフトウェアを使用する人はすべてを理解できますか?
有効性:人はソフトウェアで必要なことを実行できますか?
効率性:人はソフトウェアで必要なことを可能な限り容易に実行できますか?
美しさ:ソフトウェアは可能な限り審美的に魅力的ですか?
ソフトウェア品質のメリット
品質は明白な善であると主張する人もいるかもしれません。品質が重要である理由は、誰もが自然に理解していると。
しかし、私たちはまだ多くのひどいソフトウェアを持っているので、🤷。
従業員を引きつける:人々は品質を気にする会社で働きたいと思っています。
作成者としての満足感:関係者全員が自分自身についてより良く感じるでしょう。
火消しが減る:高品質は、後で修正する問題が少なくなることを意味します。バグや信頼性の問題が少なくなります。
ソフトウェアのエントロピーと戦う:すべてのソフトウェアは成長とともに苦しみます。それは肥大化し、使用したり見たりするのが難しくなります。品質へのコミットメントはエントロピーに対抗します。
従業員の離職率の低下:ソフトウェアへの配慮は、一般的にそれを作る人々への配慮を意味します。それはスキル成長を奨励します。
販売が容易になる:品質があなたの会社のアイデンティティの一部であれば、製品は販売しやすくなります。口コミがマーケティングの一部になります。
ユーザーを引きつける:品質は人々を引きつけます。彼らはあなたのソフトウェアを使用する可能性が高くなります。
ユーザーがファンになる:使いやすく、効果的で、満足のいくソフトウェアは、ユーザーをファンに変えます。ファンは会社をサポートし、より簡単に許し、改善を喜んで手伝ってくれます。
競合優位性:品質は難しいです。あなたの競合他社はおそらく努力をしないでしょう。
より多くのお金を稼ぐ:人々は普遍的に品質にお金を多く払います。
美しさは社会を向上させる:美しい人工物は普遍的に私たちの生活を向上させます。
他者に品質を触発する:他の人々や会社はあなたの仕事に触発されるでしょう。
遺産を残す:どんな製品も永遠には続きません。しかし、人々は良いソフトウェアについて何十年も話します。
品質に関する信念
私が反論したいこと
私はキャリアのほとんどの間、ソフトウェアインターフェースの品質について考えてきました。ここに私が真実だと信じていることがいくつかあります。私はそれらがそうでないことを望みます。
品質は、一人の人間がインターフェース全体を頭の中で把握できる場合に最も容易です。
より多くの人々がソフトウェアに取り組むほど、高品質はより困難になります。
あなたの人生に高品質なものが多ければ多いほど、あなたの人生はより良くなります。
あなたの製品の品質が低いほど、より多くの人々がそれを放棄します。
品質が高い場合、より多くの人々があなたの製品について話します。
品質は、組織で最も力のある人物からの許可に依存します。
品質は、作業を行う人々だけが推進するボトムアップの努力にはなり得ません。
高品質は常に何かの犠牲を必要とします。例えば、スコープ、お金、成長、または時間です。
高品質は常に、それに対する強い個人的な関心/執着を持つ誰かを必要とします。
品質への集中は成長の犠牲を意味します。
品質は、頻繁に使用されるソフトウェアにとって、より困難であり、より重要です。
品質は、ほとんどの組織がそれに焦点を当てていないため、競合優位性となります。
高品質を得たい場合は、理想的には優秀な人材を採用すべきです。
優秀な人材を採用できない場合は、多くのイテレーションを行う必要があります。
高品質を得るには、予想よりもはるかに多くのイテレーションが必要です。
一部の組織文化は高品質を実現できません。
組織が大きくなるほど、品質は難しくなります。
ある規模の組織では、高品質は不可能です。
ソフトウェアが大きくなるほど、品質は難しくなります。
ある規模のソフトウェアでは、高品質は不可能です。
ソフトウェアの何かが低品質である場合、それは通常、他のものも低品質であるという信頼できる兆候です。
一部の種類の品質は、常にすぐに明らかであるとは限りません。
完璧は不可能です。