対象的な3つのプロジェクト
1つ目は、ドメインを構築しなかったプロジェクト
2つ目は、鋭いドメインモデルを構築し、リリース後も維持され進化させていったプロジェクト
3つ目はドメインモデルは構築したが・・・
1つ目は典型的な失敗プロジェクト、2つ目はうまく行ったプロジェクト、3つ目はドメインを構築したものの失敗したプロジェクトの話です。
3つ目のプロジェクトで気になったのは以下の箇所。
開発者の役割を誤って分割したために、モデリングが実装から切り離されてしまい、進行中の深い分析が設計に反映されなかった。(まえがきより)
設計と実装で役割を分けてしまったためにモデルが実装に反映されなかったということ。
モデルと実装は切り離さず、役に立つモデルでないと意味がないことは序文でも触れられていたことでした。
これは自分の実体験ですが、とある金融系のプロジェクトに参加したときのことです。
完全に設計と実装を別のエンジニアが行うことになっていて、設計にはなんと、実装未経験のメンバーまで含まれていました。
また、ベテランそうな人たちの会話で「このプロジェクトはドメイン駆動設計は合わないよね」なんて話をしていましたが、金融系なんてドメイン駆動設計が合うど真ん中のプロジェクトじゃないかと思ったものです。
このプロジェクトはもう3年以上前に参加したプロジェクトでしたが、結果どうなったかは、、、ご想像にお任せします。(僕自身は3ヶ月限定のスポットで参加したのですぐに抜けました。。。)
『役割』もモデルと実装を分けない。