- SDD(仕様駆動開発)は人間関係を改善する手法ではないが、結果として衝突は減る
- なぜPMとエンジニアは衝突するのか
- 従来開発における仕様の位置
- SDDにおける仕様の定義
- 衝突が減るメカニズム
- 責任の所在が明確になる
- 見積もりが現実的になる
- 注意点:仕様をPM任せにすると失敗する
- 導入初期に起きること
- まとめ:対立は性格の問題ではない
SDD(仕様駆動開発)は人間関係を改善する手法ではないが、結果として衝突は減る
開発現場でよく起きる摩擦があります。
PM(プロダクトマネージャー)は「仕様通りに作ってほしい」と言い、エンジニアは「その仕様では作れない」と言います。
この対立は、能力や性格の問題ではありません。
仕様の扱い方の問題です。
SDD(仕様駆動開発)を導入すると、この衝突が目に見えて減ります。
それはチームワークが良くなるからではなく、争点が変わるからです。
なぜPMとエンジニアは衝突するのか
典型的な会話を見てみます。
- PM「ユーザー登録で確認メールを送りたい」
- エンジニア「非同期処理が必要です」
- PM「それは分からないが、とにかく必要」
- エンジニア「期限内に無理です」
この時点で双方は違う話をしています。
| PM | 求めているもの |
| 結果 | ユーザーが登録できること |
| エンジニア | 考えているもの |
| 実装 | どう作るか |
つまり、片方は振る舞い、片方は実装を議論しています。
議論が噛み合わないのは当然です。
従来開発における仕様の位置
多くのプロジェクトでは、仕様は要件定義書に存在します。
しかし実際には次の状態です。
- PM:機能の説明
- エンジニア:設計の解釈
- QA:テスト観点
同じ文書を見ても、役割ごとに意味が変わります。
そのため、合意したはずなのに実装後に問題が発覚します。
よくある摩擦
- 「思っていた動きと違う」
- 「仕様書に書いてある」
- 「そこまでは想定していない」
この議論は、どちらも間違っていません。
仕様が曖昧なため、双方が正しいのです。
SDDにおける仕様の定義
SDDでは仕様を「振る舞い」として定義します。
文章ではなく、実行結果で定義します。
例:
POST /users 201: 登録成功 409: メール重複 400: 形式不正
この段階で決まるのは、作り方ではありません。
何が起きるかです。
PMは期待する結果を確認でき、
エンジニアは必要な実装量を把握できます。
衝突が減るメカニズム
対立の多くは「あとからの発見」で起きます。
- 実装後に仕様が変わる
- テストで未定義挙動が見つかる
- リリース直前に要件追加
SDDではこれが前倒しされます。
仕様レビューの時点で議論が発生します。
このときの議論は次の形になります。
- PM「このケースはどう扱う?」
- エンジニア「この仕様だとこの処理が必要」
- QA「この状態もテスト対象になる」
争いではなく設計になります。
責任の所在が明確になる
従来の開発では、問題発生時に責任が曖昧になります。
- 実装の問題か
- 設計の問題か
- 要件の問題か
SDDでは基準が単純です。
仕様に合っているかどうか
| 状態 | 判断 |
| 仕様違反 | 実装修正 |
| 仕様不足 | 仕様修正 |
人ではなく成果物が基準になります。
ここが感情的対立を減らす最大の要因です。
見積もりが現実的になる
PMとエンジニアの摩擦の大きな原因が見積もりです。
- PM:機能単位で見積もる
- エンジニア:実装量で見積もる
SDDでは仕様が細分化されるため、両者の認識が一致します。
例:
「ユーザー登録」ではなく、
- メール検証
- 重複チェック
- 失敗時メッセージ
- 再送処理
具体的な作業単位になります。
その結果、見積もり精度が上がります。
注意点:仕様をPM任せにすると失敗する
よくある誤りがあります。
「仕様はPMが書くもの」という考えです。
SDDではこれは成立しません。
仕様は共同作業です。
- PM:期待する結果を定義
- エンジニア:実現可能性を確認
- QA:検証可能性を確認
誰か一人が書くと、必ず抜けが出ます。
導入初期に起きること
最初は議論が増えます。
仕様レビューで細部まで決める必要があるためです。
ただしこれは摩擦ではありません。
衝突の前倒しです。
後工程の手戻りが減るため、結果的に負担は減ります。
まとめ:対立は性格の問題ではない
PMとエンジニアの衝突は、立場の違いではなく、
判断基準の不一致が原因です。
- PM:価値基準
- エンジニア:実装基準
SDD(仕様駆動開発)はこの間に「仕様」という共通基準を置きます。
人が相手ではなく、仕様が相手になります。
その結果、議論は対立から検討に変わります。
SDDは人間関係を改善する手法ではありませんが、
開発における争点を整理する手法です。
争点が整理されると、対立は自然に減っていきます。