どの様な話?
実際にプログラムを書いていると、書いていない人から悪口を言われます。
それに対してなかなか反論出来ません。
なぜでしょうか?
実際にやっている人(この場合はプログラムを書いている人)と、悪口を言う人(この場合は書いていない人)を天秤の両端で表すとすると、
- 天秤の支点までの距離がプログラミングの分野では、他のどんな分野よりも実際にやっている人が比較して断然長くなる
- 例えるなら、悪口を言う人が箇条書きレベル1 ならば、プログラマーは箇条書きレベル20 になる様なもの
です。悪口を言う人は、プログラムの批評をするには余りに大まかすぎるので、牛刀でしらす1 匹をさばく様な形になり、
- どんな悪口を言っても前提が偽と(同様と)なり、
- その結果、どんな悪口の結論も真になる
という最悪な形だからです。
それでは悪口を言う人が最強では無いか
と思われるかも知れませんが、それらの悪口は全く実を結びません。天秤の(余りにも)短い方の端から、長い方の端を動かそうとするのは無理です。
社会の分野によっては、天秤の両端が同じ長さで議論が泥沼になる分野もあれば、長い短いが絶妙で、上手く社会に介入できる分野も有るかも知れませんが、プログラミングの分野は上記のとおりです。
ですので、「20年(悪口を)主張してきたが実を結ばず、後10年主張しても同じかも知れない」という詠嘆は確かな実感だと言えます。
違いの本質は何か?
悪口を言われる人と、実を結ばない人との違いの本質は何でしょうか?
それは、
- 確率で済ませるか、定義(因果)にまで落とし込むか
だと思います。要件定義書は確率の側で、それはそれで(その時点では)尊いものだと思いますが、プログラミングはそれから先に進めます。
- その過程で他の可能性を削ぎ落とします
が定義とはそういうものです。本当に細かい話になります。
テストは?
もちろんテストを書くことも全く同じで(定義(因果)にまで落とし込む)、やはり本当にテストを書くと、悪口を言われると思います。
本当にテストを書いていないから悪口を言われないだけです。
例えば、1円の売上げを自動的に2円で計上するプログラムのテストを書いても、プログラミング上は何の問題も有りません。
それが正しいか誤りかは要件を決める側の人の問題です。ただ、明らかに悪口を言われそうなので、テストを書くのを尻込みするだけです。
テストを書いたのに悪口を言うのは悪質です。
結論
これからも「悪口を言われる」事でプログラミングが嫌いになる人は存在し続けることでしょう。