何の話?
QAエンジニアと開発エンジニアが昔は「敵対関係」にあるという話はQAエンジニア経験者はあるんじゃないでしょうか?その見方は、現代のソフトウェア開発においては明確に「間違い」であり、古い価値観となっています。
なのでなぜ間違いなのか?そして経験したことない今のQAエンジニア向けには何を気を付ければいいかを伝えられればと思います。
1. よくぶつかる「謎」の理由
対立が起きる時、多くの場合それは個人間の性格の問題ではなく「ゴールまでの評価のズレ」という問題があると思います。
- QAエンジニア
- ミッション:品質の担保・リスクの排除
- 開発との評価ズレポイント:期間は関係なしに悪い状態でリリースはNO!
- 開発エンジニア
- ミッション:機能の実現・期間内のリリース
- QAとの評価のズレポイント:期間内に最低限動くものをあれもこれもダメと言われ困る!
2. そもそものゴールは一緒では?
「QAは開発のミスを見つけるのが仕事」、「開発エンジニアは期間内に作るのが仕事」という認識は両社の認識間違いだと思います。両者の真のゴールは「ユーザーに価値のあるプロダクトを届けること」で一致しているはずです。
開発:価値を「形」にする。
QA:その価値が「証明」する。
同じゴールのために役割を分けているだけなので、本来は敵対する必要すらないと思います。ただ、QA側からは「開発は作るだけ」、開発からは「QAは不具合を見つけるだけ」という誤った思い込みがお互いのゴールを遠ざけているのだと思います。
3. なぜ敵対しがちになるのか?
以下のような「負のループ」が原因で敵対心が発生しやすいと考えます。
QAの後工程での合流:開発がほぼ終わってからQAに渡すと、QAは「時間がない中でバグを見つけなきゃいけない」、開発は「今さら直したくない」という極限状態になり無駄な敵対心を生みます。
コミュニケーションの欠如:「バグ=個人のミス」と捉えてしまう心理(責められている感覚)になり仲間から攻撃されている感覚になりやすい。
情報の非対称性:開発者が「何を考えて作ったか」をQAが知らず、QAが「何を思ってテストしたか」を開発者が知らない状態による空想の悪イメージ。
4. 協力することで良くなること
高品質なプロダクトを速く出すためには、以下の共同作業が不可欠です。
シフトレフト:仕様検討の段階からQAが入り、「テストしにくい仕様」を事前に潰す。
品質基準の合意:「どこまでやればリリースOKか」というラインを事前に決めておく。
自動テストの分担:ユニットテストは開発、E2EテストはQAといった役割分担をしつつ、お互い観点をレビューし合う。
5. どう解決すればいいか?
「敵対」を「共創」に変えるための代表的な対策です。
① 「罪を憎んで人を憎まず」の文化
バグは「仕組み」の問題であり、「書いた人」の問題ではありません。報告を「攻撃」ではなく「ギフト」と捉えるマインドセットをキックオフやチームメンバ加入時に共有します。
② スクラムやアジャイルの導入
開発とQAを別組織にせず、一つのチームとして動かします。毎日顔を合わせ、進捗と課題を共有することで「あちら側」という感覚を排除します。
③ プロセスの透明化
QAがどのような観点でテストしているのかを開発に公開し、逆に開発者が複雑なロジックを書いた際はQAに「ここが壊れやすい」と事前に共有する。