若者が改修ばかりやってると陥りがちなジレンマ
α版の出来があまりにひどかったので、β版から巻き取って開発し直そう*1ということで、開発ディレクションとしてチームに入ることになった。
システム設計のみならずデータ設計もやり直し。瞬間最大風速が1万アクセスを超える見込みなので、UI も考え直し。
とはいえ開発は外部発注となるため、若手とコーディング規約について話し合っていたときのこと。
α版は一応MVC の体裁を取っている。だが Model がただSQL 打つ関数まとめただけの名前空間と化していたり、Model から View 呼び出してたりで、ちょっと読んだだけで仰け反るような代物だった。
だからコーディング規約作成の背景として、MVC になってない、というかオブジェクト指向自体理解できてないよね、って話を始めたところ、早々に見切りをつけて(というか読みたくなかった)オレの代わりに読み込んでいた若手が、何だか納得いかないよう顔で唸った上に「いや、ちゃんとMVC になってますよ」とのたまう。
いやいや、何を以って? と、一応認識共有のため MVC の理論についてざっくり話す。Controller が統率、Model がデータの管理、View が出力。MVC のそれぞれは責任が違うため疎結合が重要。オブジェクト指向はカプセル化と取り扱うデータの一貫性が重要。なのにαはバリバリ相互依存だし、Model がただの関数の塊だから一貫性ないよね。
若手はそれでも「んー、でも」を繰り返し、全く納得いかない風情。そして、
「あるべき論で言えばそうかもしれないんですけど」
あぁ、なるほど。そもそも作りなおすこと自体に納得いってないのか。となれば、なんで作りなおす羽目になったのかの話。設計がずさんで、作りにもコーディングにも一貫性がない。運用しながら機能を追加していく予定となっているシステムだから、今後のメンテがえらく大変になる。今のシステムを改修することも大変。だったら設計からやり直したほうが遥かにマシ。入念なコーディング規約を作るのは、開発・運用するのがコード読めば気合と根性でなんとかできるような人たちじゃないから。そこまで一頻り説明すると、
「それは、分かります」
ふぅ、良かった。「あるべき論」とか言うから、オレが変に理想論でも追っかけちゃってるのかと冷や冷やしたよ。と、安堵するのもつかの間。
「でも、折角ここまで作りこんだものを捨てるのは」
出た、コンコルド現象。要はもったいないと言いたいのか。でも大丈夫。ちゃんとその分の予算取ってるから。規模に対して時間もあるから、お金にならないデスマーチじゃないよ。
「あー、そうか、そうですか。でもなぁ、でもなぁ」
気持ちは分からないでもない。でもコレ、作ったのオレらじゃないよ。
「分かります。分かるんです。言ってることがとても正しいことは、頭では理解できてるんです。でもなんだろう、このものすごく納得いかない感は!」
本当になんだろう。やっぱりモッタイナイ?
「あー! 分かった!」
お。
「今までこれよりもっとひどいの見てるからだ!」
へ?
「某ブログパッケージとか某SNS パッケージとか、某ECパッケージとか。あーいうのばっか見てたから、これがすごくまともに見えるんだ!」
そういうことか! 思わず笑ってしまった。しかし同時に切なくもなった。気持ちは分かるが、下ばっか見てるなよ。
傍で話を聞いてたプロマネも思わず、「頼むから上を目指してくれ」とツッコミ。
「理解できました。もう大丈夫です」
そうか、良かった。
しかしなんだろう、これは。コンコルド現象とはちょっと違う。モッタイナイというのではなく、「世の中にはもっとひどいことがあるんだ」、というやり場のない怒り、みたいな? 尤もオレはかなりの理想論者のため、自分で作ったシステムですら翌日には丸めてゴミ箱に投げ捨てたい性分なので、分からなくもない、といった程度だが。そういえば、かつての部下も似たような症状に陥っていたな。しょうもない設計での開発とか改修ばっかやってた弊害か。
彼が自分で自分に気がつくという劇的な自己啓発を成し遂げたおかげで、その後の打ち合わせはトントン拍子に進んだ。
「DB設計はどう思う?」
「あれこそ直さないといけません!」
「MVC捨てるよ」
「俺もアレは大嫌いです!」
なんと清清しい。。。
*1:既にαもβもあったもんじゃない