「同じコードは2度書かない」
これは僕のポリシーである。
同じコードを2度書くというのは間違いなく無駄なのである。
なぜなら、パソコンで
コピー&ペーストをすればもう一度書かなくても「複製が可能」だからだ。
本当に無駄なく作られたシステムは複製をした後、パラメータを変更し、
「追加」する部分だけ
もしくは
そこにプログラムの書き換えなど存在しない。
ここまで行く事はかなりのトライ&エラーがある為、そうそうたどり着ける場所ではない。
ただ、仕事としてプログラムを書くのであれば「2度書かないで済むプログラム」目指すべきだと僕は思う。
なぜこんな事を言うのか。
最近、他人のソースコードを見る機会が多く読んでいるが
「なぜこんな書き方?」と思う事が殆ど。
「自分しか見ないからコレでいいだろう。」
と妥協がでるのかもしれない。
しかし、
妥協の入ったプログラムは必ずそこでバグを生み、無駄を出す。
例えば、
・変わることが予想される値を変数に格納せず、直接プログラムに書き込む。
・共通の部分をまとめず、すべてのファイルにコピー&ペースト
この2つの妥協をするだけで、1つの修正が100の修正に派生する。
これは実際にあった例
直接値を書き込んだプログラムが一つあり、その箇所が5つあった
そのファイルを元に作られたファイルが10あり、それぞれの手動で作るバックアップが用意されている。
直接書いた値に変更がかかった場合
5(変更箇所)×10(ファイル)×2(バックアップファイル)=100
総修正時間3時間。
もし、妥協をせず30分だけプログラムをまとめる事に費やしてくれるだけで
この修正は10分で済んだし、その後も10分で済む。
ところがこの修正に関しては3時間やってもその後も1時間はかかるケースになることが多い。
10分と180分。
たった30分の2つの妥協がこれだけの無駄を産んでしまう。
この事を良く認識してもらいたい。
18倍という数字も大きいが
目を向けて欲しいのは、ちゃんとしていれば使えるはずだった170分で
「他のプログラムが創れるはずだった事」
新しいサービスに使える170分を奪ったこの30分の妥協を
僕はどうしても許せないのである。
この「妥協」は世の中のいたる所で発生してしまっている。
妥協が妥協を呼んで「負の連鎖」が発生している。
この「負の連鎖」を食い止める事が出来るようにこの部分についても書いていきたい。
「2度同じコードを書かない」事が出来るエンジニアが集まった時
その効率はとてつもなくUPするのだから。