バグの自己注入の芸術(そして妥当な否認)
デプロイコマンドでEnterを押す。その瞬間と、デカいconsole.logを消し忘れたことに気づく瞬間のあいだには、ほんの数ミリ秒しかない。あるいはもっと悪くて、テスト用に仕込んだif (true)をそのまま残していたと気づく瞬間。
その一瞬のあいだに、世界が止まる。そして電話が鳴る。Teamsが鳴る。
上司だ。
陰謀論
上司には理論がある。自分がauto-inject-bugs.shっていう隠しスクリプトをターミナルに仕込んでいて、本番に上げるたびにランダムで実行している。そう固く信じている。
彼女は言う。嵐が来る前のような、無限の忍耐を込めた声で。「Sadot。なんで『支払う』ボタンを押したら、困惑したアライグマのGIFが開くの?」
「バグじゃなくて、ユーザーエンゲージメントを高めるためのドキュメントされていない機能です」。反射的に答える。否認は悲嘆の第一段階であり、自分の第一防衛線でもある。
ため息。「時々思うんだけど、あなた、私が注意を払ってるか確認するために、わざとエラーを自己注入してるんじゃないの」
防御(と現実)
ここで憤慨する。比喩的に、である。雇用を大切にしているので。無実を主張する。
「ありえません! 自分のコードは純粋で、クリーンで、テスト済みです。ブラウザのキャッシュの問題です。あるいはDNS。いつもDNSのせいです」
でも、読者のあなたとだけの話ですが。時々、彼女は正しい。わざとじゃない(金曜の午後6時にバグを直したい人なんているか?)。けれど、キーボードには一種のグレムリンが住み着いていて、一番大事な時にuser.idがundefinedになるべきだと決める。
彼女に与えているこの「小さな怒り」は悪意から来るものじゃない。ボブ・ロスが言うように、ハッピーアクシデントだ。ただ、小さい木の代わりにNullReferenceExceptionを描いているだけ。
終わらないサイクル
本当のことを言うと、いつも否定しているけれど、このやり取りこそが毎日にユーモアをもたらしている。彼女はエラーを見つける。ローカルには絶対に存在しなかったと自分が誓う欠陥を見つけるバイオニックアイを持っている。叱る(愛情を込めて、と信じたい)。自分は否定する。そしてこっそり直して、こう言う。
「おかしいな、勝手に直った。キャッシュのせいだって言ったでしょ」
彼女は自分が嘘をついていることを知っている。自分は彼女が知っていることを知っている。でも、それは二人の小さな共犯の儀式だ。一日の終わりにソフトウェアが動く時、最終的に。これらの怒りは、生きていて、成長していて、時々自分のデジタルな足につまずくシステムを持つことの代償にすぎない。
だから、もしこれを読んでいるなら、上司へ。自分じゃありません。コンパイラのせいです。誓います。