はじめに
システムのリプレイスが予定していた時期を超えて、そもそも終わる見込みがない
これは私が最近体験したことでした。
そしてこの経験を経て、「リプレイス」ということについて色々議論をした中でシステムリプレイスのときに知っておくべきことを言語化することができました。
システムリプレイスはエンジニアをやっていれば、誰しもが経験することだと思います。
あなたがやろうとしているリプレイスはうまくいきません
なぜシステムリプレイスがほとんどうまくいかないのかを今回は解説していきますので、いつかこの記事をプロジェクトの前に思い出していただければと思います。
セカンドシステム症候群とは
システムのリプレイスやセカンドバージョンの多くの場合以下の問題を含んでいます。
- 新しい機能が追加される
- 機能がリッチになる
- UI/UXなどのデザインが改善される
これが「シンプルさを失う」「複雑化」などを引き起こします。
これはファーストリリースが最低限の機能だけで行われるのに対して、リプレイスの場合既存のシステムが使えることに加えて、ビジネスサイドの「やりたいこと」「実現したいこと」などが追加されることにあります。
別の価値を追加することを理由にリプレイスすることが多くだと思います。そうなると既存の要件+αになりどんどん開発しないといけないことは増えていくわけです。
リプレイスは予定通りに終わらない
もし仮にリプレイス対象のシステムを5年かけてコツコツ作り上げたものだとした場合、リプレイスは1,2年でやるとします。
このときに既存機能でも5年分を新しい技術などでやらないといけないのに、そこにデザインの刷新や機能追加などのビジネスサイドの要望もいれていくことになります。
長いプロジェクトになればなるほど、工数の膨らみは期間を伸ばすことになります。
例えば、1週間のプロジェクトが1.5倍に膨れても7.5日ですが、3ヶ月のプロジェクトであれば4.5ヶ月、2年のプロジェクトなら3年にも伸びてしまいます。
既存機能を完全にリプレイスするときには、既存機能がすべて使えることがマストな場合は多いです。するとすべての機能をリプレイス終えることがプロジェクトの単位にあるので、マイルストーンのような区切りをつけることが難しいです。
プロジェクト期間は長くなり、工数が膨れたときの影響も大きくなるのでうまくいかないのです
うまくいくリプレイス
ではリプレイスを行うときにどうすれば予定通り、または予定とほぼ近い期間でリプレイスを行うことができるのでしょうか。
ここには2通りの方法があると考えています。
1. 既存システムから引き算をする
既存システムのリプレイスをする場合には多くの場合
既存システム + デザイン刷新や機能追加
と既存システム以外にも追加で作業が発生します。この機能追加がリプレイスを期間内で終わらない原因となります。
なので、追加した分だけ落とせる機能を見つける必要があります。
既存システム + デザイン刷新や機能追加 - 一部機能
このようにすることでプロジェクトの期間を縮めることができ、より確実にプロジェクトを進めることができるようになります。
多くの場合既存機能はユーザーが利用しているため落とせないということも多く、なかなかこの選択を取れないことが多いです。
2. 別システムを新たに作る
これはリプレイスとは少し考え方が変わります。
リプレイス対処のシステムを残したまま、共存したカタチで別システムを作ることにします。
この別システムでは、追加したい機能を提供したり、既存システムの改善したい機能などを部分的に提供するなどします。
どのように新しいシステムを作れば、ユーザーに価値が届くのかをしっかりと考える必要はあります。
リプレイスに比べてかなり小さいプロジェクトになるため、不確実な箇所が途中で工数を増加させても全体として大きな影響になることは少なくなります
リプレイスをすることになった場合は別システムで対処できないかを考えることが大切です
別システムを作ったうえで徐々にリプレイスをかけていくというのも将来的には可能です
おわりに
そもそも最終的にかかるポイントはどんなやり方をしても代わらないはずです。
いかに早くして不確実なところを潰せるのか、工数の増加がサプライズにならないか(びっくりさせないか)が大切になります。
今回学んだのはプロジェクトが大きくなってしまうのはウォーターフォールのようにきっちりと不確実性がないという状態を作れないようなアジャイルではアンチパターンになるということでした。
もしアジャイルでリプレイスをやる場合はこの記事を参考にして新規システムが作れないかを考慮に入れてほしいです
ここまで読んでいただけた方はいいねとストックよろしくお願いします。
@Sicut_study をフォローいただけるととてもうれしく思います。
また明日の記事でお会いしましょう!
JISOUのメンバー募集中!
プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
実践的なカリキュラムで、あなたのエンジニアとしてのキャリアを最短で飛躍させましょう!
興味のある方は、ぜひホームページからお気軽にカウンセリングをお申し込みください!
▼▼▼