読者です 読者をやめる 読者になる 読者になる

Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

「なぜ?」を可視化するためDecision Recordsをはじめてみた

「なぜ?」を可視化するためDecision Recordsをはじめてみました。

経緯

以前に Thoughtworks の Tech Radar をチェックしていて見かけた手法に
「Lightweight Architecture Decision Records」というものがありました。
アーキテクチャに関する意思決定を記録しましょう、というものです。

tbpgr.hatenablog.com

アーキテクチャに関わらず「なぜ、それを選択したか?」が
記録として残っていることは仲間への情報共有や未来の自分への情報共有として
有益そうだなと思い、記録してみることにしました。

Architecture に関わらない意思決定なので Decision Records と呼ぶことにします。

フォーマット

## <i class='fa fa-globe'></i> 状況
取り組んでいる対象に関する前提などの情報をかく

## <i class='fa fa-list'></i> 意思決定
以下に意思決定した項目ごとのお題と説明と理由を列挙する。
大分類として別の意思決定の場合は別のドキュメントにしたほうがよさそうだけど、
一つお題の中で決まったことが複数あるなら1ファイルの方が使いやすいかな、
ということで今はこの形にしている。

### <i class='fa fa-clock-o'></i> 意思決定した項目のお題1
意思決定した項目の説明

#### <i class='fa fa-check-circle'></i> 理由
意思決定した理由

### <i class='fa fa-trash'></i> 意思決定した項目のお題2
#### <i class='fa fa-wrench'></i> 理由

:
個数分続く

サンプル

## <i class='fa fa-globe'></i> 状況
プロジェクトに関わる意思決定に関して、現状は各担当の頭の中の情報が主となっている。
自分自身についても少し期間が空くと意思決定の理由を忘れてしまうことがある。

## <i class='fa fa-list'></i> 意思決定
### <i class='fa fa-clock-o'></i> Decision Recordsで意思決定を記録する
Decision Records で意思決定を記録する。

#### <i class='fa fa-check-circle'></i> 理由
意思決定を記録することで、なぜその選択をしたのか理由を共有できる。
共有する相手は

* 仲間
* 未来の自分

である。

また、一つの対象に対して別々のときに複数の意思決定をした場合に
意思決定の歴史を参照可能になる。
History1, History2 を踏まえないとなぜ現状が今の状態になっているか
判別できない場合に有効。

プログラムで例える。
共通化をした後にリファクタリングをした際に、リファクタリングの影響で
共通化した場所が1箇所しか残らなかった場合に、履歴がないとなぜそのような状態になっているかわからない。
履歴があれば2つの意思決定と行動の結果によって現状の状態になったことがわかる。

まとめ

記載するコストが存在するため、全てに関して記載するわけではないですが、
よしなに試していこうと思います。