Tatehito's Blog

Webエンジニアの備忘録というか駄文。

こうしてクソコードが生まれていく

いま参画している新規開発プロジェクトのシステムには、ユーザーのロール別にパスワード変更画面が存在する。

画面は複数あるけど処理は同じ。パスワードポリシーも同じ。でも画面ごとにパスワードポリシーのチェック処理が実装されていて、これは冗長でマズイな、と思ったので処理を共通化した。

共通化したことについてチーム内に共有したところ、リードエンジニア(のようなポジション)の人に「明日のことは明日考えればいいじゃん」と(冗談っぽく)言われてしまった。そんな面倒なことよくやるな、というトーン。さすがにもとに戻せ、とまでは言われなかったけど。

リードエンジニアは、保守性を意識したコードを書かない。たぶん、分かっていて書いてない。オブジェクト指向的に書かないどころか、単純な日付変換処理をあっちこっちに書いて「何かあったら一括置換すればいい」と言って気にしない人。システムを完成させてリリースすることが最優先、という感じ。

たしかに我々システム屋は「システムを提供するのが仕事であり、自己満足のコードを書くことが仕事ではない」んだけど、保守を見据えて出来る限り堅牢なコードを書くべきだと思う。少なくとも今回の共通化は自己満足ではないはず・・・。

「自分たちで保守しないから適当でいいや」というのは職務放棄だし、保守しないとしても開発中に仕様変更が入ったり、当該箇所でバグる可能性は十分あるのだから、自分たちの首を締めることだってあり得る。なによりプログラマーとしてのプライド・・・といったらカッコつけすぎかもしれないけど、こんなコードを書くなんて気持ち悪くて仕方ない。

リードエンジニアに『リーダブルコード』読んでって言っても、読まないだろうな・・・。