レストランの洗い物とソフトウェアの負債

投稿日:

大学生の頃にレストランでアルバイトをしていた。そのレストランは銀座の歓楽街にあるワインを売りにしたレストランだったのだけど、金曜日になると当時はかなりの盛況ぶりだった。

店にお客さんが多くなると、当たり前だけど多くの料理や飲み物を提供しなければならなくなる。そしてその裏で忘れてはいけないのが、多くの空いたお皿やグラス、什器類が洗い物として溜まっていくということ。そしてお皿やグラスが足りなくならない限りは洗い物というタスクの緊急性は高くなく、料理やドリンクの提供より優先順位が落とされがちである。しかし緊急性は高くないのだが、キッチンやバーカウンターに積み上がった洗い物は確実に従業員の作業スペースを奪い、作業効率を低下させる。

料理やドリンクの提供の効率が下がると、ますますそれらのタスクに追われるようになる。そしてそれらのタスクに追われるようになると、更に洗い物タスクの優先度が下がってしまう。そして洗い物タスクの優先度が下がるとますます洗い物が溜まっていき、それがますます料理やドリンクの提供の作業効率を下げてしまう。こういう負のサイクルが、うまく回せていない混雑時のレストランに巻き起こっている。

こういうときに何が大事かというと洗い物という負債の解消である。もちろん目の前のお客さんの料理やドリンクの提供はしなければならない。だが得てして人は、その手のタスクの優先度や緊急度を過剰に高く見積もりすぎのところがある。負債の解消のようなタスクに1秒足りとも取り組む暇もないかの如くの精神状態に陥ることもあるが、大抵は自分で自分にかけたマインドコントロールみたいなものだ。

ソフトウェア開発にもこれが大きく当てはまる。もちろん目の前の機能の実装と提供が最も優先順位が高く、最も達成しなければならない仕事だ。ただそのタスクが忙しくそれよって近視眼的になってしまうと、コードの負債、開発環境やテスト環境の負債、それら様々な負債の解消に取り組めなくなってしまう。それは大量の洗い物に囲まれながらする料理やドリンクの提供に悪戦苦闘するレストランの従業員そのものだ。

じゃあ負債の解消をスクラムのタスクに積めばいいのか、そんなタスクの優先度が皆に分かってもらえると思うのかと問われるかもしれない。経験上、こういうのはエンジニア以外に価値を理解してもらうのが非常に難しい。そしてそれを説明する手間暇や労力も考えると、裏でガッと一気に進めるのが最適解であることがほとんどではないかと思える。言い方を選ばずに言えば勝手にやるのが正解、といった類のタスクだと思う。