Marginalia

計画の優先順位ではなく目標の優先順位を決める

プロジェクトやタスクなどなんらかの計画が並んだリストの中で、それら個別の計画について直接的に優先順位を考えてはいけないのではなかろうか。

むしろ、考えて決めなければならないのは、それらの計画を立てた理由になっている目標の優先順位ではなかろうか。それが決まっていれば、それに紐づく個々の計画の優先順位は自動的に決まるだろう。SELECT * FROM 計画 ORDER BY 計画.目標の優先順位 というわけである。

そもそも、優先順位というものをあらかじめ決めておくのは、それを関係者との間で約束として機能させるためである。自分一人なら好きなものを好きな順にやるのと変わりない。集団が優先順位を決めることで結ぶのは、「われわれはこの優先順位に従って選択し、行動する」という約束であり、「優先されたものがあるうちは、劣後されたものを選択しない」という約束でもある。

であれば、優先順位について合意をとることで「なぜこの計画がほかよりも優先されるのか」という問いに関係者全員が答えられるようになるはずである。そしてその「なぜ」は自ずと、それらの計画を立てた理由になっている目標の優先順位を確認しているのと同じになるのではなかろうか。

計画を並べ替える作業とはソートであり、ソートにはなんらかのアルゴリズム(評価ロジック)が必要なはずである。そうでなければ実行者は常に「なぜこれが優先されているのだろう」と意図がわからず戸惑うことになったり、検討するたびに優先順位が変わったりする。上位の目標の優先順位が決まっており、それに従って計画の優先順位が(設定ではなく)導出されていることがわかっていれば、そのような戸惑いは減る。

翻って、計画の優先順位がうまく決められないと頭を悩ませているときは、そもそもその上位にある目標の優先順位が決まっていない・知らされていない・共通認識になっていないのではないか、ということを疑ってみるとよさそうだ。アルゴリズムが決まらないのにソートできるはずもないのだから。