要望を、忘れることで穏便かつ確実にリジェクトする
先日ちょっと社内で議論をして、ユビレジの改善に関するアイディアの出し方を整理しました。これまでどうやってたかというと、BasecampのTodoリストにリストアップしていた。
これを止めることにしました。
基本的には、Discussionという機能を使います(要するにML)。共有はできますが、誰もそれについてフォローしない場合には勝手に時間が経つと消えていきます(消えないけど、誰も口にしない話は過去のものとなって忘れられていく)。これまでは古いものもToDoリストに残っていたわけですが、古いものは(誰かが議論を続けようとしない限り)忘れられていくようになります。
これまでは「放っておくとToDoリストに残り続けました」が、これからは「放っておくと過去の話になって忘れらていく」ということです。
はっきり言って改善のアイディアなんて放っておけばいくらだって出てくるわけです。少なくとも、経験的に常に開発につぎ込めるリソースではかばいきれないくらい多く出てきます。そううると、当然その中には「積極的にやってはいけない理由はないけど、ひとまずなかったことにする」ものが出てきます。というかかなり多い。この分別って、案外めんどうくさいものです。
きちんとした理由を説明することはできなくても、なんとなく野生のカンで筋が悪そうだと思うものがあったりします。こういうものは、ちゃんと説明してリジェクトするよりも、なんとなく消えていってくれる方がありがたくて安全なものです。うっかりリジェクトするべき理由を議論し始めると、うっかり論破され多場合に、不本意なものを実装することになります。実装するの自体は手間でないことも多いのですが、こういうものが後で問題になることは多いのです。
- そもそも無意識のうちに(野生のカンで)やるべきではないと思っているので、すぐに忘れてしまう
- 野生のカンというのは全体の設計とうまく整合性がとれていない場合が多いが、そうするとなにか特別な取り扱いが必要になってしまうことが多い
- 忘れてしまったものについては、後で別の変更をするときに特別な取り扱いが必要なことを忘れる
- ぎゃっと悲鳴を上げる事態が発生する
これは避けたいのです。ここでの過ちはなんでしょう?私はうっかり議論を始めてしまうことそのものだと思います。寝た子を起こさずに、そのまま永眠してもらうのが正しかった。
ところで、開発チーム、というか私が気づいていない問題があったときには、どういう風にそれを伝えれば良いのでしょうか?
まずはDiscussionに投稿することが一つの方法です。それが明らかに正しそうなアイディアならば、すぐに実装されるはずです。そうでない場合は忘れられていきます。ただし、本当に自分が重要だと考えていて、忘れられるわけにいかないと思っている場合は、しつこくDiscussionにコメントし続けて風化しないようにしましょう。それでもうまく行かなかったりスルーされ続けたような場合は、開発チームを誰か捕まえて、アイディアについての意見や改善するための方法を聞きます。その開発チームのメンバーから賛同を得られた場合には、そのまま実装してもらえば良いと思います。(あるいは自分で実装します。)
重要なアイディアは、多分なんども提出されるはずなので、忘れられたとしても問題はないはずです。バグのたぐいの問題はソフトウェア開発者のプライドにかけて可及的速やかに修正されるでしょう(今までと特に変わらないはず)。
一見、なんだかふわっとした方法でうまく行くのか良くわからない気もしますが、そもそも世の中はこういうもののような気もします。
オープンソースのプロジェクトの例だと、問題があったときにMLやバグ管理システムで報告するのも悪い手段ではないですが、ちょっと微妙な問題については自分で直してしまってパッチを送るというのが有効な手段なことが多いのではないでしょうか?MLで議論することもできますが、別の方法としては、どこかで開発者を捕まえて自分のアイディアを話して意見を聞くのが確実でしょう。
「どこかで」とか「開発者を捕まえて」というのがハードルになる場合はありますが、今回は社内での話が前提なので問題にはなりません。開発者は普通(建前としては)オフィスにいるはずですし、ユビレジくらいの規模の会社で相手の顔もわからないとか話したことがないとか確実にありえないわけです。
しばらくこんな感じでやってみようと思います。
なんかこういう、古いものは忘れていくことをencourageするようなタスク管理システムってないのですかね。ToDoの項目のなかで古いものはどんどん消えていくようなやつ。例えば締め切りとかは、すぎてからしばらくはアラートしてほしいけど、ある程度すぎるとだんだん消えていくのが正しいと思う。