私たちのチームでは、アジャイルになって以来、実際に必要なドキュメントの量を絞り込んで理解しようとしています。これまでに学んだことを皆さんと共有できます。
何よりも先に、アジャイル/リーンドキュメンテーションに関するこの記事を必ずお読みください。非常に良い読み。
第二に、ストーリーの予備作業の後、設計文書の作成を再検討することを強くお勧めします。以前に試してみましたが、それは無駄であることが証明されています。前回のリリースの途中で、ストーリーのコードが配信された後にのみ設計ドキュメントを更新することにしました。そして今、それでも早すぎると思っています。
コーディングの前に設計ドキュメントを作成する理由を自問する必要があります。私たちにとって、これらが理由でした:
- チームとして、ストーリーがデザインにどのように影響するかを理解する必要があります。
- 新しい(または一時的な)メンバーがチームに参加するとき、または1年以上誰も取り組んでいないコードに戻るときに、設計ドキュメントがあると便利です。したがって、これらは組織の記憶に役立ち、コードがどのように機能するかを理解するのに役立ちます。
- 設計ドキュメントは、リリース後にコードのトラブルシューティングを行う必要がある保守エンジニアにとって役立ちます。
(1)を満たすために、実際の設計文書を作成する必要はありません。あなたのチームはまだコーディングの前に設計段階を持っているべきですが、その段階はホワイトボードまたはナプキンの前で15分間のセッションと同じくらい簡単です。設計変更について議論するためだけに書くのに数日(数日ではないにしても)かかる実際の文書を作成する必要はありません。
(2)または(3)は、現在のストーリーの開発中には不要であり、その後の複数の反復で必要になることはほとんどありません。
また、チームメンバーが設計ドキュメントを作成/更新するたびに、コードが記述されないことにも注意してください。実際のコードの前にドキュメントを作成すると、コーディングを開始すると常に設計が変更されるため、ドキュメントの更新が必要になる可能性はほぼ100%です。そして、私たちのチームが学んだように、コードの後にデザインドキュメントを書いたとしても、その後のストーリーからのリファクタリングはデザインを変更します。
だから私がお勧めすること:
- チームがコーディングの前にインテリジェントな会話を行えるように、最初は一時的な設計/モデルを十分に作成します。これらを保持することを期待してはならず、それらを形式化するのに時間を浪費しないでください。
- 誰かがそれを必要とする場合にのみ公式の設計ドキュメントを作成します(つまり、チームは組織の記憶を本当に必要とします)
- 安定化されたコードについてのみ設計ドキュメントを作成します。繰り返しごとに変更され続けるモジュールを文書化しようとしても意味がありません。
- モジュール(または製品の一部)を完全に説明する設計ドキュメントを作成します。以前は、行う必要のある変更を文書化した設計ドキュメントを作成していました。これらのドキュメントは、リリースが完了するとすぐにまったく価値がなくなりました。
- ドキュメントを非常に高レベルに保ちます。アーキテクチャと非常に高度なデザインをカバーする20ページを書くと、そのドキュメントはa)他の人に実際に読まれ、b)コードの一般的なレイアウトに慣れるのに役立ちます。詳細については、コードに直接アクセスできます。700ページの詳細な仕様を記述した場合、それらはほとんど常に現実とは一致しません。だれでも読むには多すぎるため、将来の変更が行われるたびに20ページではなく700ページを維持および更新しなければなりません。