土曜日の夜、いつもの居酒屋で、ハッチとビールを飲んでいた。
大学1年の春に出会ってから、もう20年以上の付き合いになる。僕が人事に進み、ハッチがエンジニアに進み、キャリアの方向は正反対だったけれど、月に一度のこの飲みだけは続いていた。
ハッチは僕のコードを見たことがある。何度かレビューを頼んだ。最初は恐る恐るだったけど、ハッチは意外と丁寧に見てくれた。辛辣だけど、丁寧に。
この夜、僕はハッチにある質問をした。
正直に答えてほしいんだけど。俺のコード、エンジニアから見てどうなの。
ハッチはビールのグラスを置いて、少し考えた。
正直に言っていいか。
うん。
設計はめちゃくちゃだ。命名規則は統一されてないし、エラーハンドリングは甘いし、テストのカバレッジも偏ってる。コードレビューしたら赤ペンだらけだと思う。
覚悟はしていたけど、やっぱり刺さった。半年間、毎晩のように書いてきたコードが「めちゃくちゃ」と言われるのは、なかなか堪える。
でもハッチは、そこで終わらなかった。
でもな、動くコードが正義だよ。
「動くコードが正義」。
ハッチはその言葉を、笑いながら言った。でも目は笑っていなかった。本気で言っている目だった。
俺はこの業界で15年やってる。コードが綺麗なのに出荷されないプロダクトを山ほど見てきた。設計が美しいのに誰も使わないシステムも。逆に、ぐちゃぐちゃのコードだけど毎日ユーザーが使ってるサービスもある。お前のコードは後者だ。
それって褒めてるのか。
褒めてるんだよ。めちゃくちゃ褒めてる。お前は半年でプロダクトを出荷した。ブログは動いてる。ダッシュボードは使われてる。SNSは自動投稿されてる。半年だぞ。CS専攻の新卒でも、最初の半年でここまでやれるやつは少ない。
ハッチとの会話メモ: 「動くコードが正義」 「出荷してないコードに価値はない」 「お前のアドバンテージはドメイン知識。コードの綺麗さはあとからついてくる」 「Claude Codeを使ってるからズルい? IDE使ってるのはズルいか? Stack Overflow見るのはズルいか? ツールを使うのは当たり前だ」
3杯目のビールを飲みながら、ハッチが珍しく長い話をした。
俺がコードを書き始めたのは中学2年のときだ。BASICで。それから25年かけて今の実力になった。お前は半年で、俺が25年かけて到達した領域の、まあ、5%くらいには来てる。
5%か。
でもな、残りの95%のうち、70%はAIが補える時代になった。つまりお前は実質75%のエンジニアなんだよ。しかもドメイン知識は俺より上だ。HR領域では、お前のほうが俺より良いプロダクトを作れる。これは事実だ。
5%。でもAIが70%を補えるなら、75%。ハッチの計算が正しいかはわからない。でも、その考え方は僕を少しだけ楽にした。
完璧なエンジニアになる必要はない。自分の5%と、AIの70%と、9年のドメイン知識。その組み合わせで、十分に価値のあるものが作れる。
帰り道、駅のホームで電車を待ちながら、ハッチに送ったLINEのメッセージを見返していた。
「ありがとう。動くコードが正義、って言葉、たぶんずっと覚えてると思う」
ハッチからの返信は短かった。
「当たり前のことを言っただけだ。次はテストカバレッジ上げろ」
アラタ: テストカバレッジを確認したい。今どれくらいある? クロ: 現在のカバレッジは約42%です。主にE2Eテストでカバーしていますが、ユニットテストが手薄ですね。 アラタ: 目標60%。まずはユーティリティ関数から書いていく。
ハッチの言葉に救われた夜、僕がやったのはテストを書くことだった。
「動くコードが正義」。その言葉を信じるなら、動き続けることを保証するテストにも、同じくらいの価値がある。
友人がいてよかった、と思った。コードの書き方を教えてくれる友人じゃない。コードを書く意味を教えてくれる友人がいてよかった。