下痢とソフトウェア開発
9/3から昨日まで実家に帰ってました。目的は実家のインターネット環境構築という、そんなことのために実家に帰るのかというレベルの話なのですが、そんなことはどうでもいいです。 行き帰りともに高速バスを利用したのですが、帰りのバス乗車早々に腹痛が始まりました。
- 22:00 乗車&出発&腹痛開始
- 22:20 下痢の兆候
- 22:40 耐え切れないレベルの下痢の衝動
格安の深夜バスなので当然、バスには備え付けのトイレなどありません。パーキングエリアでの休憩はおそらく3時間後です。これは困った。
ここで考えられた選択は2つです。
- 運転手さんにバスを最寄りのサービスエリアで停めてもらう
- 計画されている、およそ3時間後と思われる休憩地点まで我慢する
元来が小心者で引っ込み思案の僕ですから、この段階では後者を選択するつもりでした。しかし、敵の侵攻は予想以上に早く23時を回る頃には確信しました。これは無理だ。そのうち漏らす。
したがって、上で挙げた選択肢は以下のように変わります。
- 運転手さんにバスを最寄りのサービスエリアで停めてもらう
- 漏らす
下痢を我慢するというのは時間とともに強力になってゆく敵に対して一方的に防戦を繰り広げるようなもので、グラフにすると次のようにy=t*(sin(e^t))^2
になります。
横軸が時間t、縦軸が強さyです。
おもむろにスマートフォンを取り出し脂汗の滲む手を震わせながら最後の力を振り絞ってgoogle mapを確認します。 約10分後に福山サービスエリアがあります。ここを逃すとまたしばらくチャンスはありません。迷う余地はありませんでした。勇気を振り絞って運転手さんのところにいきます。
「あの、すいません。どうしてもトイレを我慢できそうになくて。申し訳ないんですが最寄りのサービスエリアで停めてもらえませんか?」
「あ、はーい。もう少し待っててくださいねー」
助かった。助かった。しかしまだ終わってません。ゴールが見えた時にこそ、気の緩みによる事故が発生するものです。襲い来る下痢と戦うために謎の奇行を自席で繰り広げながら到着を待ちます。
福山SAに到着して、無事用を済ませ、運転手さんにこれ以上ない感謝の意を述べたところでこの話は終わりなのですが、ふと思いました。
この話はソフトウェア開発に通じるものがあるのではないか?
ソフトウェア開発に限りませんが、下痢というのはつまり炎上です。 下痢というのは予測できないタイミングで不可抗力的に発生します。仮に予測できたとしても、そのまま抑えこむことは困難だし唯一の解決策は下痢を排泄することです。
下痢の排泄というのはつまり、デスマーチを受け入れること、納期を延期すること、開発を中止すること、またはその他の消化作業ですね。
今回のケース、僕はベストな選択をしたと自負しています。もし運転手さんへのお願いが少しでも遅れたら、その先に起こる自体は想像したくもありません。 つまり、わずかでも炎上の予兆があれば、その予兆は大火に発展する前提で行動すべきなのです。下痢は待ってくれないし、勝手に消え去ってはくれません。早めにアクションを起こせば、その先にはまだ福山SAが待っているかもしれません。アクションが遅れれば福山SAに戻って対策を打つことは不可能です。
大火に発展する前提で考えれば、アクションを遅らせることはマイナスの影響しか与えません。なのに世のソフトウェア開発においてアクションが遅れ気味なのは、大火にならないかもしれない、といった根拠の無い妄想であったり、そもそも腹痛の兆候に気づかない場合がほとんどなわけです。
その先には下痢があるかもしれない。ひとたび腹痛が発生すればそれは最早、下痢を排泄して解決する以外に方法はない。
全ての開発者はこれを念頭に置いて日々の仕事に励んでください。