コピー指向プログラミングは一向になくなる気配がない

今回のネタはid:suikyojinさん経由でゲットォォ


http://argv.ameblo.jp/argv/entry-10144604985.html


すでに動いているコードがある。

似たような画面を作る際にまずほとんどのユーザーがやるのはコピーだろうか。おいらはどちらかといえば1から理解するために小さいところからくみ上げて完成させていくのがすきなのだが、どうもまわりを見ているとコピー派がすごく多いみたい。

たしかに、チーム開発で共通化をしようと思うと、他のメンバーと相談して仕様を決めたり、あるいは他のメンバーの作った複数のソースを変更したりと面倒なことは多い。そういう役割の人(「共通チーム」などと呼ばれる)ならともかく、単なる「一機能の担当者」であるプログラマが、共通化のためにそこまでの労力を払うことは、まずないだろう。

コピー・プログラミングなら、誰にも気兼ねすることなく、自分の担当機能を作ることができる。多くの職業プログラマにとっての最優先課題は「自分の担当機能を動くものに仕上げること」であって、「ソースコードが美しいかどうか」などは二の次なのである。

ここポイント高いよなぁ。

ほとんどの人は自分の仕事を遅れることなく無事に完了させるのが目的であって、システムそのものが完成するのが目的ではない。システム全体が完成することを望むのは発注側とリーダーやマネージャークラスだけだろう。自社内ですらそうなのに、派遣等で一時のために集められているのならなおさら悪化する。

チームで開発するに当たってどういう考え方で望むのか、事前にかなりの量を話し合うのが必要だと思うのだけれども、そんなのを話し合った現場をおいらは見たことがない。結果好き勝手に進む。もちろんだぶるところも大量に出る。

数十個のPHPソースファイルにそれぞれDB接続用IDとパスワードが書かれているのを誰も不思議に思わない。聞いても「おまじないなんでわからない」「コピーしただけだからよくわからない」という言葉が返ってくる。ソースを見ても1つのソースファイルの中でも大量にだぶる部分や異様に深いネストしたIF文など非常に見通しの悪いものが書かれていることも多い。そしてその深いIF文ではすべてのパターンのチェック漏れ等悲劇が襲う。でもだれも気にしていない。

そこでおいらが手を入れる。びっくりするほどコード量が減り、見通しが良くなる。理解しやすい、バグも減る、同じプログラムでもここまで変わるんだ!とその瞬間は理解してくれるのだが、数日するとあら不思議。元通り。

言語の深く突っ込んだ部分がどうだとかオブジェクト指向がどうだとか言う前に、根本的なことを教えるのが真っ先に必要だと悟った。下手するとこの部分の矯正だけで半年から1年はかかるかもしれない。でもここを通り抜けなければ真っ当なプログラマにはなれないと思う。そしてこれこそがプログラマとして必要な唯一の適性かなと。