実際に因果推論をして見ると
仕事として手が動くプログラマーが全人口の1万人に1人だと想定すると ー(1)
はじめにテストを書け、仕事として手が動くプログラマーは全人口の100万人に1人では無いかと推察します ー(2)
もしそうなら、
- (1)のプログラマーを私が使って私の為に仕事をしてもらえる確率は0では無いと思われ、
企業や公共団体が(1)のプログラマーを使ってそれらの為に仕事をしてもらえ、そこのサービスを通じて私の為になる確率は100%と言っていい、
と思いますが、
- (2)のプログラマーが私の為に仕事をしてくれる確率は0(殆ど0の確率が、何段階も重なって初めてそうなる)でしょうし、
企業や公共団体が(2)のプログラマーを使える(間接的に私もそのサービスを使える)のも、少ない確率となる、
と思います。
(なんでも有り得る)可能世界では、
- はじめにテストを書け、仕事として手が動くプログラマーが登場する
道筋も有るかも知れませんが、確率まで加味して考えると、現実ではお目にかかる事は、まず無いのでは無いかと愚考します。
なんでそう思ったのか?
なんで、仕事として手が動くプログラマーの1/100 が、はじめにテストを書け、かつ仕事として手が動くプログラマーになると推察したかと言うと、
(はじめの内ではテスト(=モデル)など気にしない、在来工法の)
仕事として手が動くプログラマー(私もそうだったと思いますが)は、
- はじめの内は「動くプログラムの定石」に従い作る
- なぜなら、動くプログラムを作るのが絶対条件で、動く定石から外れた所には解が無い為。
- 特に初めの内は、モデルなんてどうでも良い、計算の正しさもどうでも良い
からで、
- はじめの内から、テスト(=モデル)を気にする事が出来、
かつ、
- 動くプログラムを作れる、手が動く
となると、それ位希少になると思ったからです。
「はじめの内」と言う条件を取っ払えば...
もちろん、在来工法で目鼻を付けてからテストを書いても良いなら、かなりの、在来工法のプログラマーでも、テストは書けると思いますが、
それだと、
- 仕様制定の経緯から入らないと、テストにたどりつかない
- (その様な有る意味 "よそごと"もやっていると)生産性(ステップ換算)は1/10 程度にまで落ちるだろう
- (テストを作る手間で)生産性(テスト以外のプログラムのステップ換算)は、さらに1/2 程度になるだろう
- 既存RDBシステムと切り離して使える、それを模倣出来る性能のモックを作るとすると、それだけで大仕事になる
- プログラマーと兼ね合いで仕様制定にも絡むのだから、もらえる金額は多くしてもらわないと、割が合わない
- つまり、プログラマーの人数が20倍以上(高性能モック作成は別途)必要で、費用も割高になる。
となる事が予想されます。
プログラマーはただでさえ希少なのに、(「はじめの内」では無いにせよ)テストも書くとなると、(希少性は大丈夫だとしても)費用は上がる様に思えてなりません。
プログラマーがテストを書けと言うなら、そういう事も考慮すべきだと思います。
結論
費用をかければ良くなる!