少機能で高機能な製品を作る
ついついやってしまいそうになるのが新しい機能の追加だが、そこは心を鬼にして本当に必要な機能なのかを考えるべきだ。
多機能な製品は市場の幅を広げると思いがちだが、そんなに簡単に市場の幅は広がらないし、多機能にすればするほど価格を上げていく必要が出てくる。
高くて多機能な製品が必要なお客さんはほんの一握りだし、もともとの市場が小さい場合は、そんなお客さんはいない可能性がある。
一度追加した機能は外せない
最初のうちに色々便利な機能を追加しようと躍起になりがちだがそれらの機能は一度でも積んだらそう簡単には外せなくなる。
外せないとりあえず付けた機能をメンテナンスしていくのはなかなかしんどい。その機能が邪魔で新しい機能をつけづらい、といった問題もでてくる。
多機能は製品の寿命を縮める場合がある
機能を追加すればその分だけコードが増える。さらにテストも増える。依存関係も増える。
つまり、その製品のメンテナンスコストが上がる。コストが上がってもその機能を追加したことにより売り上げが上がれば問題ない。
ただ、そんなうまい話はあまりないので、その分のメンテコストが上がるか、メンテコストを上げないで品質が下がるかのどちらかだ。
メンテナンスに対してコストを払わない、品質が下がる、となると新しいリリースにも影響する。新機能の影響で既存機能がバグった、つまりデグレが発生したなどだ。
もちろん自動テストがあり完璧だという反論をしたいのはわかるが、そのテストをメンテナンスするコストは大変なものだ。じゃぁコストが上がるを受け入れろと。売り上がっていないので無理だ。どうするか答えはわからない。
製品がクローズする可能性が上がる。もちろん売り上がったり投資する余裕がある場合は何も問題ない。
少機能でどう戦うのか
一つは少機能であるため、価格が抑えやすいというのはある。ただ価格を抑えたから売れるというわけでもないので、難しい。
本来は追加しないと実現できない機能を他の何かに委譲することで対応するというのが、一つの回答だ。
最低限の機能以外は、全て外との連携という仕組みを大切にする。
他に任せる
つまり機能を追加する時に、自分では無い誰かに対応してもらえる機能を追加するといったものだ。
例えば認証機能は持っているがデータを扱う機能は一切もっていない。つまり別のアプリケーションに聞きに行く仕組みをもたせる。そのアプリケーションが良いといったら良いし、ダメならダメ。
高機能にする
安定していて、早くて、軽くて、使いやすい。なんでもかんでもは無理だが少しずつ実現していけばいい。高機能、つまり通常より優れていれば良い。通常というのはここでは競合他社の製品になるだろう。
少機能を高機能にすることで他社との差別化をはかる。多機能にしない分で得られる余力を高機能につぎ込む。
それで売れるのか
わからない。結果でしか回答できない世界なので、結果を出していきたい。