なぜ5年前の僕はレガシーシステムをリプレースできないのか

レガシーなインフラを改善するつもりが組織の悪者になる話 - Qiita

これを読みながら、僕は5年前に所属していた大手IT企業での仕事のことを思い出した。 その企業は日本のIT企業の中でも老舗で、よくある話だがガラケーiモードのときに一山当てて、その後も業態を替えながら1部上場を維持しているなかなかの企業である。

そんな中で、僕は2012年の入社当時から音楽配信事業に関わっていた。 その企業での音楽配信事業は上場するほどの成長の原動力になった中核事業でありながら、スマホシフトできずに衰退している事業だった。僕は、まさにそのスマホシフトへ挑戦し、そして敗北が決定的になるその時期に新卒として5年以上働いた。

当時、僕は意識はそこそこ高いが頭はあまり良くないエンジニアだった。 だから入社後数年経つと、社内のシステムの多くがメンテされておらず、また多くの前向きな活動 - 機能追加やユーザー体験向上 - を邪魔しているのがそれらのシステムであることに気づいた。いわゆるレガシーシステムというやつである。 当然僕は憤慨した。これらのシステムはなぜメンテナンスされていないのか。既存の問題を解決せず、塩漬けされるのかと。既存のシステムへの手入れを回避するために、新たな機能やサービスは別のシステムとして増築され、その結果ますますサービスの全体は複雑化していった。複雑化するのでサービスの改善はどんどん難しくなり、ユーザーはあっという間にapple musicやその他サービスに流れていった。僕らの敗北はどんどん決定的になっていた。

様々な理由を聞いた。このシステムはもはや開発しないと決定された。 これは言語がXXXだからもう開発できない。これはXXXだから、XXX部署の持ち物で・・・。 そうしているうちに僕自身は無力感が溢れ、敗軍の1兵卒として疑問を持たなくなり、負け犬としてふさわしくなっていった。

さて、8年前の僕に、今の僕がアドバイスをしよう。 より良いアーキテクチャ、より良いレガシーの置き換え、最新の言語、考え方を身につけるのと同じかそれ以上に、事業と、眼の前のシステムが事業にどういった影響を与えているのか理解しよう。 それを僕に説明する責務は、誰かのものにしていいものではなかった。それを理解していないからこそ、僕の提案ややりたいことは、本当にお金や時間を使うに値するのかどうか、上司は判断できなかった。僕が本当に目的を果たそうとする場合、それはXXXの責任だから、という言い訳はするべきではなかった。 もしかしたら、いや、おそらくは8年前の時点ですでに逆転は厳しい状況にあっただろう。だが、少なくとも8年前にそういった視点を持ち、上司やその上と議論ができていれば、少なくとも挑戦はでき、敗北することは出来ただろう。

8年前、挑戦することも出来ず、ただただ惰性で日々をすごく僕は、ひどく凡庸で、どこにでもいる、敗北すらできない傍観者だった。

P.S. 約10年経ったが、未だに僕はソフトウェアエンジニアリングにハマっている。 失敗ばかりだが、それでも物を作ることは楽しい。