いま参画している新規開発プロジェクトのシステムには、ユーザーのロール別にパスワード変更画面が存在する。
画面は複数あるけど処理は同じ。パスワードポリシーも同じ。でも画面ごとにパスワードポリシーのチェック処理が実装されていて、これは冗長でマズイな、と思ったので処理を共通化した。
共通化したことについてチーム内に共有したところ、リードエンジニア(のようなポジション)の人に「明日のことは明日考えればいいじゃん」と(冗談っぽく)言われてしまった。そんな面倒なことよくやるな、というトーン。さすがにもとに戻せ、とまでは言われなかったけど。
リードエンジニアは、保守性を意識したコードを書かない。たぶん、分かっていて書いてない。オブジェクト指向的に書かないどころか、単純な日付変換処理をあっちこっちに書いて「何かあったら一括置換すればいい」と言って気にしない人。システムを完成させてリリースすることが最優先、という感じ。
たしかに我々システム屋は「システムを提供するのが仕事であり、自己満足のコードを書くことが仕事ではない」んだけど、保守を見据えて出来る限り堅牢なコードを書くべきだと思う。少なくとも今回の共通化は自己満足ではないはず・・・。
「自分たちで保守しないから適当でいいや」というのは職務放棄だし、保守しないとしても開発中に仕様変更が入ったり、当該箇所でバグる可能性は十分あるのだから、自分たちの首を締めることだってあり得る。なによりプログラマーとしてのプライド・・・といったらカッコつけすぎかもしれないけど、こんなコードを書くなんて気持ち悪くて仕方ない。
リードエンジニアに『リーダブルコード』読んでって言っても、読まないだろうな・・・。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者:Dustin Boswell,Trevor Foucher
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)