ソフトウェア成長曲線
ソフトウェアも生物と同じで、生まれてから死ぬまでの成長のライフサイクルを持っている。
人生と同じで、将来どうありたいのか、そのために、現在どのステージにあり、そのステージで何をすべきなのか、を見極めることが重要。その判断を間違えると、うまく育っていかなかったりする。
成長初期の頃に無理をしすぎると、成長の柔軟性を失って、後々ガタが来る。
成長に合わせて、周りの環境も時代も変わっていくので、あるべき姿を固定しすぎて、方向転換できなくなってしまうと、時代遅れになってしまう。
一方で、まだまだ成長できるはずなのに、ダメだと判断して、一度破棄して、フルリニューアルとかしてしまうことは、すごくもったいない。せっかく、フルリニューアルして作り直した (当然時間がかかる) のに、その間に時代が変わって理想形が変化していたら、本当にもったいないと思う。
以下の図の、各ステージ (フェーズ) で、それぞれどんなことに気をつけるべきなのか、考えてみたいと思う。
幼年期
あらゆる可能性を秘めたフェーズ。 ぼんやりした作りたいもののイメージは持ちつつも、あるべき姿に関して、厳密に決めすぎないほうがいいだろう。
どのような環境を用意するか、どんなアーキテクチャを用いるか、などを、今ある情報をもとに未来を想像しながら、ざっくりと決めるといい。
この時点で洗練されている必要は全く無い。まずは手を動かして、やってみることが大事。
青年期
ある程度、骨格ができてきて、機能追加という名の筋肉を付けていくべきフェーズ。
いろいろやっていく中で見えてきたこともあるはずなので、良かった点はさらに伸ばしつつ、イマイチだった点については直すなり、切り捨てるなりすることが必要。この段階であれば、必要があれば、モデルチャンジも厭わずやっていくべきだろう。それは、今まで作ってきたものをゼロにするという意味ではなく、培ってきた知識なり経験をもとに改良を加えるという意味である。
その後の伸びしろという意味では、このフェーズが非常に重要で、失敗を恐れずに大胆にチャレンジするといい。
壮年期
まさに働き盛り、脂の乗った30-40代。今まで育んできた能力をフルに発揮すべきフェーズ。
一方で、体のあちこちにガタが出てくるのもこのフェーズ。 大きな病気になったときの影響範囲が広いので、細かい体調管理には十分気をつけたい。
老年期
壮年期ほどではないにせよ、まだまだ生産性を供給できるフェーズ。 とはいっても、もう無理は禁物。まだまだ伸ばせるはずの寿命を縮めることになりかねない。
安定的な運用を心がけながら、スムーズな次世代へのバトンタッチを行うべし。