品質とスピードはトレードオフなのか?
そんな話がまわりであふれているので思うことつらつら書きます。
まずやらないといけないのは「品質」と「スピード」のイメージあわせ
「品質」
これはいわゆる「質」「クオリティ」です。品質には ISO 的な定義として「機能的」「非機能的」「操作性」「快美性」「保守性」など含まれます。 つまりは、ちゃんと動いて、ちゃんとカッコよくて、ちゃんとメンテナンスもしやすいってことです。 「ちゃんと」とはどういうことでしょう? これは「予定通り」「計画通り」の意味です。 予定以上、計画以上は単に過剰な品質です。
「スピード」
これは「単位時間あたりに進む距離」です。 1時間あたりに何Km進むか?
プログラムであれば1日でどれだけのプログラムが組めるか? みたいな話です。
さて本題です。
わたしは品質とスピードは直接的には関係ないと思います。 いや、もちろん品質下げれば早くなります。そのあたりをもう少し詳しく。
品質を落とすことはゴールの姿を変えること
勘のいい人はすぐわかると思いますが、最初の定義の通りで「品質」というのは「ちゃんと動く≒予定した状態にする」ことです。それは機能だけではなく保守性もそうです。保守性も要件です。一回限りの使い捨てソフトウェアに保守性は要りませんし、100年使うなら保守性は必要です。「〇〇機能」とかといっしょで「保守性」も必要だから担保するものです。
つまり機能であろうと保守性であろうと、「品質」を落とすという事は、本来作りたい/作る予定だったものの姿を変えることです。
それは「ゴールまでの距離を短くする」ことであって「スピードが上がってることにはなりません」。
「品質を落とす」は「本来100m走なのに50m走にした」みたいな意味に近いです。 100m を 50m にするだけなのでスピードは変わりません。「品質」と「スピード」は直接的に関係はありません。
もちろん短距離走の方が速いというようなことも現実にはありますが……
では「品質」とトレードオフになるのは?
と言われると「期間」だと思います。
作るものの質を下げる ≒ 作るものを減らす ≒ やることを減らせば、それは当然のように期間を短くできます。
おまけ
けっこう勘違いしている人いますが…… スピードは「ゴールまでの時間」ではありません。「単位時間あたりの距離や作業量」です。
スピードの話をしているのに単位が「秒」「時間」「日」という「時間」になっている人がいたら要注意ですよ!! スピードの単位は「km/h」「リリース数/月」とかそういうものです。
おまけ 2
じゃあスピードを上げるにはどうすればいいかというと。 エンジンの馬力を増やすのです。スキルを上げるのです。 道路を整備するのです。 働きやすい環境を作るのです。 追い風をつくればいいです。 スピードを上げるってのはそういうことです。(再三言いますが距離を短くすることではありません)