会議室で、就任4日目のCTOが私の6ヶ月かけて作ったコードを見て「スパゲッティだ」と笑った。次の瞬間、彼は管理者権限で「削除」ボタンを押した。本番環境の核心モジュールごと。止めようとした私は、その場でクビを言い渡された。「お前はチームに馴染めない。出て行け」と彼は言った。私は静かに荷物をまとめた。そして、オフィスを出る前に、彼が重要なことを知らないままなのを確信した。私が唯一人、どうやってこ…
会議室には、ぬるいコーヒーと緊張の汗の匂いが充満していた。私はマホガニーのテーブルの先頭に座り、MacBook Proの冷たい表面に手を置いていた。私は緊張していなかった。緊張とは不確実性への反応であり、私は自分のコードに不確かさを感じたことは一度もなかった。 そして、ホワイトボードの前にはブラッドが立っていた。創業者の息子。MBAを輝かせ、カタログから買ってきたような笑顔を浮かべた、就任からわずか4日目の最高技術責任者。彼は私のプロジェクトを指さし、「スパゲッティみたいだ」と笑った。 「ふくらんでる。重い」 部屋が静まり返った。私のチームはうつむいた。彼らは知っていた。ノード7が肥大化しているはずがない。それは10,000件の同時リクエストを処理できる、負荷分散の傑作だと。フェラーリのエンジンを見て、カムシャフトを知らないからといって「汚い」と言えるだろうか。 「ふくらんでいないよ、ブラッド」と私は冷静に言った。「これはレイテンシー低減プロトコルだ。スループットを20%向上させる」 ブラッドは湿った、見下すような笑い声をあげた。「そんなの誰が気にするんだ?君はただの邪魔者だ」 彼は管理者権限でコンソールを開いた。私の胃が締め付けられた。創業者のジェリーに警告したはずだった。彼に管理者権限を渡すのは、チンパンジーに拳銃を渡すようなものだと。しかしジェリーは、自信を持たせてやれと言っただけだった。 ブラッドはノード7のディレクトリにカーソルを合わせた。明日のデモのために、本番環境への自動デプロイが有効になっているというのに。 「削除」 彼は言い放ち、エンターキーを押した。ターミナルに緑のテキストが流れ、止まった。削除完了。 「君はロジック層を消したんだ」と私は座り直して言った。爆発物の専門家が、計画通りの爆発を見守るような奇妙な静けさを感じていた。「アプリは今や単なるフロントエンドの殻だ。データも取得できない、認証もできない。ゾンビだ」 ブラッドは顔を輝かせた。「ほら、君のネガティブさが問題なんだ。君はクビだ。荷物をまとめて出て行け」 部屋が息を呑んだ。マーカスが立ち上がろうとしたが、ブラッドに睨まれて座り込んだ。 その時、私の携帯が振動した。何週間も無視していた番号。私は出ることにした。 「ケイラです」 相手はオリオン・テクノロジーズのエンジニアリング担当副社長、イライアスだった。来週ストリームラインを3500万ドルで買収する予定の会社だ。「あなたからオファーへの返事がなくてね。明日、デュー・デリジェンスを終える。正直、君だけがこの買収に興味を持ち続ける理由なんだ」 私はブラッドを見た。彼は腕を組み、勝ち誇った笑みを浮かべている。 「はい」と私は電話に言った。声は部屋中に響いた。「オリオンからのオファーを受け入れます」 ブラッドの笑みが消えた。「誰だ?」 「すぐに仕事を始められます。今、予定が空いたんです」 電話を切り、MacBookを閉じ、ケーブルを抜いた。振り返らずにドアへ向かった。「頑張ってね、ブラッド」 通路を歩きながら、私は計算していた。ノード7は認証トークンを処理していた。それがないと、50分後には期限切れで全員が管理パネルから締め出される。ブラッドは私をクビにしたのではなく、燃えている建物に自分で鍵をかけたのだ。 私の机は、ぼんやりとした午後のオフィスの中にあった。誰も知らない。この会社はもう死んでいる。私は段ボール箱に私物を詰めた。キーボードのカスタムキー、ノイズキャンセリングヘッドホン、猫の写真。会社のパーカーとブランド入りの水筒は置いていった。 「本当なのか?」 振り返ると、シニアSEのグレッグが立っていた。彼は私と同等にインフラを理解している数少ない人物だ。「彼は本当にノード7の最適化モジュールを…」 「彼はコマンドラインを使わなかった。GUIで『削除』をクリックして、確認ダイアログも押したんだ」 グレッグの顔色がさっと変わった。「APIゲートウェイとロードバランサーは、トラフィックをルーティングするためにノード7に依存している。これが死んだら、ヘルスチェックが失敗する」 私はApple Watchをちらりと見た。あと9分。「そして、オートスケーラーが新しいインスタンスを起動しようとする。だが、ベースイメージはブラッドが変更したメインブランチから取得されるから、新しいインスタンスもクラッシュする。無限クラッシュループだ」 「デプロイを止めなきゃ」とグレッグは電話に手を伸ばした。 「止めないで」と私は鋭く言った。「今介入したら、君は新しいCTOに逆らうことになる。彼は管理者権限を持っている。君もクビになるよ。住宅ローンと双子がいるんだろう?」 グレッグは唾を飲み込んだ。「…燃えるままにしておくのか?」 「もう燃えてるのよ、グレッグ。あとは煙探知機が気づくのを待つだけ」 エレベーターで降りる直前、ブラッドの混乱した顔がガラス越しに見えた。私は手を振らなかった。ただ彼が孤独に気づくのを見ていた。 シアトルの冷たい雨の中、携帯で配車を呼んだ。「オリオン・テクノロジーズの建物まで」 オリオンのロビーは、ガラスと鋼鉄の大聖堂のようだった。イライアスはダークジーンズに黒のカシミアセーターを着て待っていた。「ルーティングが効率的でね。前のルートに障害物があっただけ」 私たちは湖の見える席に座った。「6ヶ月間、ストリームラインを買収しようとしてきた。だが、フロントエンドのコード、売上予測、ユーザー維持率、すべてに赤旗がついた。唯一、バックエンド、APIレイテンシー、データベース構造、暗号化プロトコルだけは完璧だった」 「私がいたからね」 イライアスはうなずいた。「そして今、君は自由だ」 「ブラッドが1時間前に、コードベースを『リーン化』した。ノード7のロジックモジュールを本番環境で削除して、私が止めようとしたからクビにした」 イライアスは口笛を吹いた。彼は驚いているのではなく、計算していた。血の匂いを嗅いだ鮫のように。「つまり、買収を完了しても、我々は抜け殻を得るだけだ。フロントエンドの見せかけと、大量の500エラー」 彼はタブレットをテーブルに滑らせた。「これはプロジェクト・ヴェッセルだ。我々が本当に欲しかったのは、エンジンだけだった。残りは捨てたかった。だが、テクノロジーが自壊しているなら、元の設計者と一緒にゼロから作ればいい」 「私がリードするの?」 「アーキテクチャの責任者、株式パートナー、給与は3倍、チームは自由に選べ。創業者の息子はなしだ」 私は設計図を見た。すでに自分の中でコードが組み上がっていた。「条件が一つ。事態が落ち着いたら、元チームの3人を雇いたい。マーカス、グレッグ、QAのサラを」 「完了だ」 一週間後、私はオフィスにいた。ドアのついた本物のオフィス。ラスティのスタックにシップの土台を組み上げていた。私の携帯は、地獄への窓だった。マーカスからのテキストには、オートスケーラーが15,000インスタンスを起動してクラッシュしたと書いてあった。グレッグは40時間も眠らずに、ブラッドが泣いていると報告してきた。 金曜日、デモ当日。私は救助ボートと名付けたチャットで、リアルタイムのテキストを見守っていた。 「ブラッドがクライアントサイドでデータをハードコードしてる。静的JSONファイルだ。見せかけの村だよ」とサラ。 「日付範囲でフィルターをかけるように頼んで」と私はイライアスにメッセージを送った。「去年は静的ファイルが1か月分しかカバーしていなかった」 デモが始まった。ブラッドはダッシュボードをクリックし続けた。「速いでしょ?」と彼は言った。あたりまえだ、ローカルCSVを読み込んでいるんだから。 オリオンの副社長が質問した。「去年の第3四半期の物流スループットを見せてください」 沈黙。ブラッドは「レイテンシーの関係でアーカイブされている」と言った。副社長は信じなかった。「データベースの整合性を確認したい。アーカイブを開いてください」 これで終わった。データベースは接続すらされていなかった。ブラッドはブラウザのコンソールで必死にタイプしていた。画面に巨大な赤いエラーが浮かんだ。「undefined … Read more