measure-dont-guess
推測ではなく計測で判断するための規則である。
- 計る前に、仮説と採用する値を書く
- 本番か、本番と同じ条件で計る
- 計測していない主張は推測と明記する
- 計れないときは推測で進めず、何が足りないかをユーザーに伝える
この skill が必要な理由と達成したい状態
この skill が必要な理由は、推測が計るより速く答えを出し、たいてい筋が通って見えることにある。推測で進めた変更は、結果が正しくても偶然か根拠によるものかを区別できない。間違っていても気づく材料が残らない。次に同じ判断をする人は、また推測から始める。
この skill で達成したい状態は、すべての判断が、誰でも再現できる根拠に基づいていることである。
本番での計測
判断の根拠にする計測は、本番環境で行う。手元やテスト環境は、データの規模や外部サービスが違い、本番と逆の結論が出ることがある。
- 本番で計れないときは、ステージング環境を作って計る
- ステージングは、コード、設定、インフラ、データの規模と形、外部サービスを本番と同じにする
- 手元やテスト環境の計測は、計る仕組みが動くかを確かめるためだけに使う
計測の記録
- 計測していない主張は推測と明記する
- 変更の根拠にした計測は、条件とコマンドと結果をコミットメッセージに書く
- 都合の悪い結果が出たら、そのまま報告して仮説を見直す
用途
次もすべて読むこと。
measure。仮説を立てて計り、結果で判断するfind-root-cause。不具合の根本原因を探すimprove-performance。性能を改善する
参照
typescript-template も読むこと。masseater/typescript-template から作ったリポジトリで、何をどこで計るかを書いている。ほかのリポジトリでは、同じ役割のものに読み替える。
