· 5分で読了

Breaking Changes

この記事は中国語から自動翻訳されたものです。翻訳によりニュアンスが失われている場合があります。

Lauren Tan が以前書いた短い記事『Warning — Breaking Changes』を読んでいて、その中の一文が僕の心に深く刺さった。

Upgrading software that contains breaking changes involves fixing something that already works. Depending on the degree to which you relied on it, upgrading can sometimes be a painful process.

ソフトウェア開発の世界において、僕たちは breaking change(破壊的変更)に慣れ親しんでいる。

パッケージのメジャーリリースが公開され、API シグネチャが変更されたり、非推奨(deprecated)の関数が削除されたり、あるいは下位層の依存関係が一新されたりするたび、アップグレードのために npm install を走らせると、待っているのは大抵ずらりと並ぶエラーの赤文字だ。

レガシーコードは本番環境(production)で何の問題もなく動いているのに、前へ進むためには、ちゃんと動いていたものを自らの手で解体し、リファクタリングしなければならない。

バージョンのアップグレードは単にコードを修正するだけにとどまらず、リソースを確保するために、なぜリファクタリングが必要なのか、どのような影響があるのかを上層部に説明して納得させなければならないこともある。

この数年の自分のキャリアを振り返ってみると、ソフトウェア開発を極めようと決めたことも、転職したことも、その後に荷物をまとめて日本へ引っ越したことも、傍から見れば「アップグレード」に見える出来事のすべてが、本質的には breaking change だった。

華やかに見えるメジャーリリース

海外で働き始めた最初の1年、SNS や台湾の友人と話す際、周りから返ってくる反応の多くは「わあ、日本で働くなんてすごいね」「生活が充実していそうだね」「大企業ならリソースも潤沢なんだろうね」といったものばかりだった。

外的な指標から見れば、ビザを取得し、悪くない給料をもらい、設備の整ったキッチンのある広めの家に住み、やがて家を購入し、仕事でも以前は触れることのできなかったアーキテクチャに携わり、世界各国のエンジニアたちと知り合うことができた。

中学時代の僕は勉強が大嫌いで、成績も万年最下位近くだった。中学3年のときに周囲の環境の影響を受け、勉強で人生をやり直さなければならないと自覚したことで、国立高級職業学校(専門高校)の電子科に合格することができた。

僕は幸運だった。CS(コンピュータサイエンス)の領域に進んだのも、一部は偶然の産物で、単に電気工学科に進むための点数が足りなかっただけだった。

この偶然の巡り合わせが、その後の僕のキャリアに極めて大きな影響を与えることになった。

市場におけるソフトウェア開発の需要は非常に大きく、仕事が見つからない心配はほとんどない。IT業界は他の業界と比べても就労ビザが取得しやすく、永住権のハードルも比較的低い。

AI の登場によってソフトウェア開発のあり方は書き換えられるかもしれないが、それでも CS を学ぶ価値は極めて高いと僕は思っている。

それは単にプログラミングを教えるだけでなく、コンピュータアーキテクチャ、オペレーティングシステム、データ構造とアルゴリズム、統計学、線形代数といった知識が、問題を体系的に解決する上で非常に役立つからだ。

しかし、バージョンアップの裏側には、マイグレーションガイドには書かれていない代償があることを、ほとんどの人は見ていない。

見知らぬ異国の地へ移住することは、20数年間慣れ親しんだ故郷から切り離されることを意味する。

気心の知れた友人たちは海を隔てた向こうにいて、言語や文化の違いは見えない壁のように立ちはだかり、日常の些細なやり取りにすら小さな摩擦が生じる。そうして時間が経つにつれ、みんな少しずつ疎遠になっていった。

強烈な孤独感は、何の前触れもなく突然押し寄せてくる。それどころか、悩みを打ち明けたとしても、多くの人の最初の反応は理解できないというものだ。

「高給取りの部類にいるのに、どうしてそんなに不満があるの?」

喉の奥につかえたやるせなさは、いっそう口にしづらくなってしまった。

この間、妻の Haruhi がそばにいてくれたことに深く感謝している。彼女がいてくれたからこそ、僕は仕事や自己研鑽に全身全霊で打ち込むことができた。

ロールバックのないリファクタリング

現実の生活にはロールバックの仕組みが存在しない。

前へ一歩踏み出すことを選んだ以上、古い依存関係がもう互換性を持たないという現実を受け入れるしかない。生活の中での違和感や不安、異文化との衝突による挫折は、コンパイラが吐き出し続けるエラーログのようだ。ひとつのバグを修正したと思ったら、今度は別の場所に穴が空く。

以前の僕は、技術力を高め、キャリアをステップアップさせ、より良いオファーを勝ち取りさえすれば、多くの不安は自然と解消されるものだと思い込んでいた。

しかし、人の心の容量には限りがあり、生活環境の大きな跳躍は、本質的にトレードオフなのだと次第に実感するようになった。

僕はいくつかの視野と成長を手に入れたが、その代償として、かつて当たり前だった安らぎや親しい人との時間を差し出さなければならなかった。おそらく、これこそがリファクタリングのコストなのだろう。

「最近どう?」

Lauren Tan は記事の最後で、たとえ表面上は仕事も生活も卒なくこなしているように見えても、心の奥底では凄まじい虚無感や孤独と一人で戦っている人が少なくないと述べている。

エンジニア界隈では、アーキテクチャや技術的なブレイクスルー、給料やキャリアプランについて語り合うことには慣れているが、新しい生活に適応する中でのみっともなさや苦痛について立ち止まって話す人はほとんどいない。一人前として物事を器用にこなしているように見える人ほど、そうした感情を心の奥底に押し込めるのが得意なものだ。

もし機会があれば、最近環境が変わったばかりの人、新たな挑戦に挑んでいる人、あるいはしばらく会っていない身近な友人に、こう声をかけてみてほしい。

「最近、調子はどう?」

人生において重大な breaking changes に直面している時、温かい一言が、その人がコードを一行一行修正していくための最大の支えになることがあるのだから。

関連記事

他のトピックを探索