プログラミングができるようにならない君へ。なぜ、たぶんの上にたぶんを積み重ねる?

f:id:hrmch-ioii:20170922005630j:plain

エンジニアの @nabeemichi です。

ぼくはエンジニア歴が6年ほどで、現在はフリーランスでとある会社に週3日で常駐している。

フリーランスで3日しか会社に行かないのに、なぜかド新人の育成までまかされているのだが…

なかなかプログラミングができるようにならない人を見て気づいたことがある。

それは、たぶんのという不確定なものの上にたぶんという不確定なものを積み上げて、

なにが間違っていて、なにが原因なのか自分で自分を苦しめている傾向がある。


正直、僕はこの状態が不思議でならない。

そもそも、現状、どのような順序で何がいつ動作するのかを把握せずに、

たぶんここを通るはずだから、ここらへんを修正しよう

とか普通にやっちゃう。

そんでもってなんかしらエラーが発生したら、そのエラーだけに着目し、

エラーに絆創膏をはるような対処療法的な修正を加えて、本当にどこがまずかったのかを検証しない。

ふしぎでならない。

こんなことしていったら、

無駄に仕事を増やすだけだ。

よく怪我をする人に沢山絆創膏を貼っても何もよくならない。

絆創膏をはる作業が増えるだけだ。

なぜ怪我をするかを考えずに、対処療法をするからわけがわからんくなる。


たぶんここらへんだ!

という仮説を立てるのはいい。

でも、その仮設を事実に変換することをしないとダメだ。

事実にするためのロジックをくむなり、実験をするなりして、

仮設を事実に変換しないといけない。

仮説を事実に変換した瞬間、そこがセーブポイントだ。

次の仮説(たぶん)を考えて、実験する。

実験結果が期待する結果出なかった場合は、その仮設(たぶん)は間違いなのだ。

だったらセーブポイントへもどれば、確実で不変な事実から違う仮説(たぶん)を検証することができる。

これを一般的にPDCAサイクルを回すとかいうのだろうけれど、

間違ったら戻れるポイントを小さい単位で沢山積み上げないと、トライアンドエラーの回数は増やせない。

トライアンドエラーの回数を短時間で沢山すればするだけ、できるようになる速度も加速する。


プログラミングというのは、ロジックの積み上げだ。

ロジックというのは、たぶんではなく、絶対毎回同じことが発生するという事実なのだ。

だから、たぶんの上にたぶんを積み重ねてたら、動くものは何も出来上がらない。


たぶんを考えたら、絶対そうだという確定を証明し、確定の上にたぶんを乗せ、トライアンドエラーを小さい単位で実行しないと、

いつまでたっても、できるきになった頭でっかち何にもできない開発者になっちゃうぞ