「何のためにやるのか目的をはっきりさせる」 のが大事。それによって、どこにコストをかけるべきか考えることになる。
システム老朽化の原因は何か
- ソースコードがぐちゃぐちゃになってきた (なんで定期的にリファクタしない?)
- 基盤アーキテクチャが古くて新機能を導入できない (たとえば、 WebSocket を全面的に使いたいけど今は Apache + PHP みたいな状況。これは全面入れ替えが必要、やむを得ない)
リニューアルの際は老朽化しにくい仕組みを導入するべき
- 「システム (土台) が新しくなりました」だけでは、お客さんはよろこばない
- 老朽化しやすいシステムは、また近いうちにリニューアルが必要 (お客さんの喜ばないポイントにコストをかけてばかりいる)
- お客さんのためになることにコストをかけるべき。機能を追加したり、デザインやUIをわかりやすくしたり
- 土台を作り直すのは、お客さんのためになることを素早く実施できるようにするため。 「リニューアル直後が最高品質 (その後は品質が落ちるだけ)」 ではなく 「まだまだブラッシュアップできる」 のが良い
- 機能追加等の際に、リファクタすべき (機能追加の際にリファクタリングのコストを含める)
技術的負債の返済はインクリメンタルに
「システムリニューアルで一発逆転」 みたいな状況にならないように。
本来は顧客に価値をもたらすフィーチャーを開発するだったスプリントが、顧客に何の価値ももたらさない作業に回されることになってしまった。これは本来、スプリントごとに少しずつやっておくべきだったことだ。
⇒ [ヅ] エッセンシャル スクラム: アジャイル開発に関わるすべての人のための完全攻略ガイド (2014-11-30)
# とあるシステムのリニューアルに関わりそうなのでなんとなく考えたことを書き出してみた。
# 僕の魂は、 「技術好きのITエンジニア」 ではなく 「他にないモノを作りたいクリエーター (競争したくない・ブルーオーシャンに行きたい)」 だと思う。
tags: programming
Posted by NI-Lab. (@nilab)