【サービス開発のポイント】品質を定義せよ!
サービス開発・ソフトウエア開発において品質確保は、とても重要なテーマです。
しかし品質というのは、定義がとても曖昧です。これ最初に議論してますか?
品質レベルについてチーム内、組織内、会社内でレベル合わせをしておきましょうという提案です。
品質が曖昧な事例
一番わかり易い事例は車です。フェラーリとトヨタのビッツです。
販売価格を見るとフェラーリが3000万円に対して、トヨタのビッツが200万円です。
(正式な価格は、正しく無いかも知れません。)
詳しく調べてはいませんが、素材のコストは15倍もないと思います。
何が違うのでしょうか
フェラーリが高くても売れる理由は、
・見た目がかっこよかったり
・排気音が良かったり
・他人に自慢できたり
・ファンのコミュニティがあったり
・店員の対応が良かったり
間違いなく素材が良いから買ってるという人は居ないです。
品質ではなくブランドだったり持った時のステータスでしょうか。
品質が悪くても値段が高い時がある
上記のフェラーリとトヨタのビッツでは、むしろトヨタのビッツの方が品質が高いのではないでしょうか?壊れる事等殆どないし、気温の変化等にも非常に強いです。マイナス40度の地モンゴルでもビッツが沢山走ってます。
一方、フェラーリは良く壊れるイメージがあります。実際に所有した事は無いので分かりませんが、全然壊れないという事は無いと思います。
品質は良ければ良いものではない
きっとフェラーリの品質を上げようとすると、見た目がかっこ悪くなったり、排気音が静かになったり、ハンドル操作の感覚がクイックじゃなくなったりするのだと思います。
品質は、ユーザーが購入した時の期待値と価格が一致すれば売れる訳で、品質というのは、買う側の価値を意味する訳です。
価格=品質(原価+期待値)
期待値が大きい商品ほど、ブランドが高い。つまり価格が高くなっている訳です。
サービスやソフトウエアでも同じ
品質が良いサービスやソフトウエアは大事かと聞くと全員が大事と答えると思います。
しかし、速度と品質はどちらが大事と聞くと、プロダクトリーダは、速度と答える事の方が多いのではないでしょうか?
変化の早いVUCA時代の中では、品質高く作り上げるよりも、アジャイル的に作り上げて、動かしながらディテールを詰めていく事が大事です。
でも後から品質が大事っていうでしょ
プロダクトリーダーから速度が大事と言われて、アジャイル的に開発していくと品質はある程度置き去りしてしまいます。そして、暫くすると技術的負債が溜まっていき作り直す必要が出てきます。
しかし、プロダクトリーダーは必ず言います、そんなの聞いてない!
速度に関しても、開発速度もあれば、修正速度の話しだったかも知れません。
品質と速度と開発力の公式を伝えときましょう!
品質=開発力-速度
速度を上げすぎると、一定の開発力の中では品質は下がってしまう。
では開発力を上げれば良いのか?良く人を増やせば良いのではと言われますが、これも違います。
開発力と速度も公式があります。
Barry Boehm (バリー・ベーム) のCOCOMO式という式があります。
T = c × Ed(dは指数)
T:開発期間
C:2.5
E:開発工数
d:1/3
で算出します。(cやdは色々と算出方法があります)
これは、開発規模・人数が増えると難しさが比例以上に上がっていくという事意味します。
1.2〜1.5倍のレベルで難しさが上がっていきます。これは人数を増やせば済むという事ではないとう事を意味してます。
最後に
どんなプロダクト、ソフトウエアを作るかによって品質レベルは様々だと思います。見た目のかっこよさなのか、開発速度なのか、それとも修正速度なのか。
具体的な品質レベルについてチーム内、組織内、会社内でレベル合わせをして開発を開始してみて下さい。
未経験の皆さん、若手エンジニアの皆さん、勉強方法について悩みがあればなんでも気軽に質問して下さい!
これからも記事を書いていきますので、モチベーションアップのためフォロー、イイねお願いします。