嫌いなものが存在するという悩み

息子を寝かしつけるため、ベッドで横になり、いろんな話をする。
彼は先日 5 歳になったばかりなのだが、 5 歳児には 5 歳児なりの悩みがある。

彼曰く「嫌いなものがある、ということが嫌なの」だそうだ。嫌いな食べ物(例: 茄子)があって、嫌いな人(例: 弟)がいて、嫌いなこと(例: 蚊に刺される)がある。僕は初めて聞いたとき、思わず笑いそうになった。好きなものだってあるんだからそれで良いじゃないか、というとそうではないらしい。好きなものだってあるが、それは嫌いなものを消してくれるわけではないから、困る、と。とどのつまり、そういうことらしい。

f:id:kura-replace:20181002174757p:plain

=== そこでこんなアドバイスをした ===

僕「嫌いなものが、そもそも何故あるのか分かる?」
子「だって嫌いなんだもん」
僕「好きなものだってあるだろ?自分が知ってるあらゆるものを、これは少し好き、これはとても好き、これはちょっと嫌いという風に決めているのは自分なわけ。」
子「じゃあ嫌いなものが全部、無くなったら良いのに。そしたら好きなものだけが残るはず。」
僕「わかってねーな。いま好きなものだけが残ったら、その残ったもののなかで好きとか嫌いとかをまた決めちゃうんだよ。」

f:id:kura-replace:20181002175926p:plain

子「えー(´Д`;) じゃあその新しく嫌いになったものも無くしたい!」
僕「そしたらまた残ったもののなかで嫌いなものが出てくるぞ?」


子「もう嫌だ.. 僕が居なくなったら良いんや...」
僕(な、なるほどそう来るか...)

 「だがしかーし、逆にいま知らないことをたくさん知ったらどうなる?いま好きだと思ってるものより、もーっと好きになっちゃうようなものだって、あるよ?」

f:id:kura-replace:20181002175942p:plain

子「えーーwwwww」
僕「それは知りたいやろ?」
子「うん」
僕「あー、でも、いま嫌いなものより、もーーっと嫌いなものだって、知ることになるけどな?」
子「えー(´Д`;) やっぱ嫌だ」
僕「でも、それより、もっと、もーっと、もーーーーーっと好きになっちゃうものだって、ある」

f:id:kura-replace:20181002180155p:plain

子「あぇーーー!!!!!!」
僕(勝った😏)

子「じゃあそれはどうやったら知れるの?」
僕「まぁ、それは絵本を読んで。」
子「絵本はもう読んだよ?」
僕「もっと読んで。例えば、蝶が卵を産んで、青虫になってサナギになって、また蝶になるやろ?」
子「うん」
僕「それさ、ずっと見てたわけ?見てないでしょ。当たり前に知ってるけど、虫の絵本たくさん読んだから知ってるわけだろ。卵から蝶になるところをずーっと見てたら、お腹すいちゃうし、眠くなっちゃうし、とにかく無理なの。でも知ってる。絵本を読むと、自分ひとりだけでは知ることができなかったことを知ることができちゃうわけ。」
子「はー」
僕「... というわけでこの話はおしまい、もう寝ようぜ」
子「あー待って。うんこしたい」
僕(何故...)

=== というわけで息子との話は終わり ===

 ところで、企業のエンジニアリングにおいてもこれと似たようなことってあると思う。

 例えばエンジニアの視野の狭さ。アプリの設計を考えるとき、そのプロダクトが潜在的に持っている伸びしろを矮小してしまうことがある。その決定打となるのは、利用する技術の選定だとか、根の深い依存関係だとか、スケーラビリティやセキュリティへの配慮の弱さだとか、そういうかたちで現れるのだが、現れたときにはもう手遅れ、ということだって多い(だって企業はスピードが大事だから)。仮に同じだけの時間をかけたとしても、携わるエンジニアが誰であるかによって、完成品の質、もしくはそれが生み出す具体的な利益の差は非情なほど開いてしまう。

 少し立ち位置を変えよう。今度は「嫌いなものが存在するということ」に悩む姿勢そのものを肯定的に捉えてみる。それをチーム運営に apply するかたちで振り返ってみると、別の問題が見えてきたりもすると思うのだ。

 手がけているプロダクトにボトルネックがあったとして、それの解消にリソースを割くことができないというのはよくある話。しかしそれでもその企業のエンジニアリングが頓挫しないのは、ほかに手軽に解決できる問題が転がっていて、その解決がいくばくかの利益を呼び寄せるからだ。それに、そうやってチームを維持しておけば、いずれ何か政治的な力学によってそのボトルネックの解消を回避できるかもしれない。つまり「将来いつか開けるであろう広い視野」への期待が、「いま目前に立ちはだかるモンスター」を矮小化する暗示に化けるのだ。こういう楽観的な視点は、ある側面から見れば開発者として最も大切な素養の一つであることに異論は無い*1が、それによって長期的な停滞を招く可能性があることを意識しなくてはならない、とも思う。

 僕が見てきたエンジニアリングの現場というのはほんのわずかだが、そのわずかな経験を元に言うと、開発チームが問題を忌避すればするほど、そのプロダクトに関わる非開発者がどんどん離れてゆくように思う。なぜなら、問題がそもそも問題であると認識されていることは、その事柄が厄介であり重要であることの自明的な発露であるからだ。まぁもちろん僕だって、開発チームが、あらゆる問題を積極的かつ抜本的に解決する存在でなくてはならない、なんて言うつもりはない。けれど、冒頭の、息子の完全にオリジナルな悩み「嫌いなものがある」ってのは、なかなか捨てたもんじゃないなと思ったのだ。

*1:"You ain't gonna need it"(YAGNI) という言葉だってあるし(あぁもちろんそれがこの話とイコールだなんて言ってませんよ)。