ソフトウェアの品質は、顧客の望む品質の現れでしかない
たびたび「ソフトウェア開発者は、不具合なんて出してから直せばいいと思っている」と批判されることがあります。
これは開発者に対する誤解ですし、開発者自身も認識を誤っていることが多いです。
ソフトウェアの品質は、顧客が望む品質の現れでしかありません。
ソフトウェア開発者が、市場の品質を決定しているわけではありません。
また、つぎのような言説も散見されます。
- フロントエンドエンジニアは品質意識が低い、バックエンドエンジニアは品質意識が高い
- toC向けサービスは品質意識が低い、toB向けサービスは品質意識が高い
- 金融・医療系システムは品質意識が高い
これらは表層的にはそのように見えるかもしれません。
しかし、金融やtoB、バックエンドのエンジニアの能力が高いから、不具合のすくない(≠高品質)ソフトウェアが実現されるわけではありません。
顧客がそれを実現するだけのリソース(時間・コスト)を提供しているからに過ぎません。
- 無制限の開発コスト
- 無限の開発速度
これら(と、使いこなせるノウハウ)が提供されるなら、どんなソフトウェアでも不具合はすくなく開発されます。
もう少し掘り下げてみましょう。
フロントエンド vs バックエンド
この場合、顧客は同じです。
顧客は、フロントエンドとバックエンドの両方に対して、少ない不具合を実現するだけのコストがかけられないことが多いです。
その場合、顧客はバックエンドに対しては少ない不具合を求め、フロントエンドに対してはアジリティを求める傾向があります。
これは当然で、どんなにフロントエンドの不具合がすくなくても、バックエンドに不具合が多ければ、セキュリティインシデントなどが発生し、サービス全体の信頼性が毀損されるからです。
バックエンドのエンジニアが優秀だからではなく、少ない不具合を保てるだけのコストと時間が提供されているからに過ぎません。
また、フロントエンドのエンジニアが劣っているわけでも、怠けているわけでもありません。
フロントエンドは、同じレベルで別の要素、アジリティやUXなどに注力しているだけです。
toC vs toB
toBの方が金払いが良いし、toCは少々バグがあろうが安く・早くサービスを提供することが求められる傾向にあります。
結果、toCサービスの不具合は多くなりがちです。じゃないと生き残れません。
結果「ソフトウェアエンジニアは、問題が発覚してから直せばいいと思っている」と誤解る一因になっています。
人間の能力に大した差はない
もちろん特筆して優秀なエンジニアもいます。
ただし、それがバックエンドやtoB、金融に偏って存在しているわけではありません。
いや、お金のある業界には少しは偏っているかもしれませんが、それでも、人間の能力に大した差はありません。
成果に差が出るのは、顧客が求めた結果に過ぎません。
私自身、金融系の開発が長く、実際不具合の少ないソフトウェアを開発してきました。
でもそれは、私が特別優秀だからではなく、顧客が少ない不具合を求め、見合うリソースを提供してくれたからに過ぎません。
それを忘れないようにしたいですね。
Discussion