開発者完全性仮説とは
はじめに
本記事は、「開発者完全性仮説」という概念について説明します。
開発者完全性仮説は、ソフトウェア開発、その中でも品質保証に従事するプロフェッショナルとして向き合っていくべき大切な概念です。
開発者完全性仮説は品質保証に従事する人々の職場での存在意義を揺さぶり、自分自身がどのように価値を残しているのかを改めて言語化するのに役立ちます。
開発者完全性仮説の原典
開発者完全性仮説とは、以下の引用文で端的に表せます。
「開発者が完璧だったらテストやQAはいらない」
「完璧なスクラムチームだったら(以下略)」
JaSST nano vol.13 #4「もうQAはいらない」ってホントなの?
西康晴
開発者完全性仮説については、JaSST nanoというイベントの中で電通大の西康晴さんが提唱されています。
開発者完全性仮説について私なりの言葉で表現すれば、
「すべてができる完璧超人」であれば、バグ(ここでは品質を損なうすべてのこと)を作ることはないので、QAやテストはいらない
ということだと考えます。
開発者完全性仮説の完璧さ
「完璧な開発ができる」とは、「完璧なソフトウェアを作る」ということです。
「完璧な開発」と聞いて、「綺麗なコーディングを行う」という解釈をされたら、それは間違いです。
現在のソフトウェアエンジニアリングのプラクティスは、ビジネスの企画から廃棄まで、すべての工程で適用されます。
これらのソフトウェアエンジニアリングのプラクティスで要求されることを完璧に満たせればどうなるでしょうか。
完璧に満たされたプロセスで進むので、完璧な成果物ができあがります。
それらによって開発された完璧な成果物は、その過程で完璧なテストがされるため、専門家としてのテスターは必要ありません。
また、これらの完璧な開発者は存在自体が完璧なので、第三者による品質保証を必要としません。
なぜなら「完璧」という一言で品質保証はなされていると自認しているからです。
また、完璧な開発者やスクラムチームはその過程でミスをしません。
あるいはミスを取りこぼさないようなシステムを導入しています。
開発者完全性仮説におけるテスターやQA
テスターはQAは開発者完全性仮説を否定する存在です。
なぜなら彼らを必要だと思っている時点で、「開発者もミスをする」「開発者にも取りこぼしがある」と認めていることになるからです。
テスターはバグを見つけるために、テストを行います。これはプロダクトを疑っていることに他なりません。
QAは作り込まれた品質に対して、説明責任を果たそうとします。これは自明な品質をわざわざ他者に説明するようなオーバーヘッドを生み出しています。
開発者完全性仮説の実際
一方で、実際のところは「開発者完全性仮説」が実際の現場で支持されることは少なそうです。
「要件定義の段階で何か漏れているかも?」と思っている人がいたり、「自分は異常系をすべて考慮できているのか?」と思っている人がいたりします。
そういった背景の中で「テスターがテストしてある程度バグを出してくれる」ということを前向きに捉えてくれる人は多いです。
テスターが開発者を揺さぶる
それらの期待感で気をつけることは、「その人の期待の範囲内でテスターやQAは存在意義を認めている」ということだと考えます。
たとえば、「テスターはテストをする人」と考えている開発者に対して、「レビューをしっかりしよう」という提案をすると、どう受け止められるでしょうか。
その時に開発者完全性仮説とのせめぎ合いが起こります。
テスターはその人の思っても見ないところで、開発者の弱点を探して、表明しようとしていることになります。
テスターやQAは自分の活動に対して、「一緒に最高の価値を届ける」という意識を持つことが大切になります。
その中で開発者に対する一定の配慮を持つことも必要になると考えます。
テスターは絶対に驕るな
開発者完全性仮説というある種極端な思想が採用されていなくても、「QAやテスターが活動する」ということは、開発者を揺さぶることになります。
そんな中で、QAやテスターに対して言いたいことは「絶対に奢るな」です。
- 「開発者がクソコード書きやがった」
- 「設計書がきちんと書かれていない」
- 「要件定義がカス」
そんなことを言う人を私はGoodなテスターだとは思いません。テスターやQAエンジニアと名乗って欲しくないと思います。
人は完全ではないし、間違ったものを作る場合もあります。
そういった弱さを認めつつ、より良い未来を作るために建設的な批判ができる人こそ、Goodなテスターだと私は考えます。
おわりに
本記事自体は積極的にリライトしていきたいので、ぜひコメントをお待ちしています。
わたしが主張したいことのまとめ
QAやテスターは「開発者は完全である」という仮説を否定する存在です。
しかし、現実的に「開発者が完全である」という仮説は成り立ちづらいと考えます。
だからこそ、QAやテスターの専門性が必要になるのです。
とはいえ、QAやテスターは開発者に対して驕るのではなく、「ともにつくる」という考えを持った上で、働く必要があります。
Discussion