ソフトウェアは人が作るもので、文字通り柔らかい。その寿命は人よりは長くないと思われがちだが、実際には、そのソフトをメンテナンスする人、という文脈で考えるとソフトウェアの寿命のほうが人よりも長いことのほうが、特に自社サービスでは多い。なぜなら人は会社を辞める、異動する、飽きるので。
ので、ソフトウェアの方が開発者よりも寿命が長いという前提でやりくりしていかないといけない。つまり、開発者の世代交代が当たり前のように起きるのだと考える必要がある
レガシーなソフトウェアを作り直すのは生産性云々の視点もあるけれども、実際にはそこじゃなくて、開発者の世代交代に適応するための活動だと思います
レガシーソフトウェアの再構築を通じてドメイン知識を次の世代の開発者に継承し、オーナーシップを新しい開発者に移譲する。そこで働くソフトウェア開発車の在籍期間よりも、サービスの方が長く存続するならそういうことを当たり前に繰り返していく必要がある
レガシーなのは嫌だから作り直す、というのは個人の視点で、マクロなマネジメント視点としては、そこにあるソフトウェアが提供するサービスを長く繁栄ささるために必要な組織の新陳代謝のために作り直すという視点があります
スマホで打ったもんでミスタイプ多い。。。
なので、ある程度サービスが流行ると、常にそのサービスを動かしながら作り替える。一通り作り替えたと思っても。すでに作り替えたところが古くなってるので、また作り直す。の繰り返し。一見無駄なようで、この延々とした作り直しのプロセスが、プロダクトや組織も、今その時点に適応することに繋がる
サービスが下火になって作り直しのコストをかけることができなくなると、そこで営みが止まる。経済みたいなもんですね、ずっと回ってないといけないっていつ
一休のサービスなんてもう20年前くらいからありますけど、社員で20年在籍してる人なんて1人もいないですからね。今どきのソフトウェアエンジニアは、3〜5年くらいで次のチャレンジを目標に辞めていくので、その世代交代に適応できるよう常に作り替えていくみたいな発想が必要です