Hatena::ブログ(Diary)

山本大@クロノスの日記 RSSフィード Twitter

エンタープライズシステム開発現場主義者の視点。(Facebookページができました。いいね!してくれるととても喜びます

■山本 大@株式会社クロノス東京(http://www.kronos-jp.net/)
[記事寄稿 & 執筆] @IT Spring Frameworkで理解するDI
@IT Spring 2.0時代の開発スタイル
@IT Hibernateで理解するO/Rマッピング
著書『Sun SJC-A認定ガイド』

2009-04-13

安全策が後手後手を生む

場当たり的な対応で工数が少なくてすみ、影響範囲も少ないが、コードは汚くなるという案と

影響範囲が広いし工数も掛かりそうだが、コードは綺麗になるという案があるとき、

僕は、よほどの差でない限り、コードが綺麗になるほうを選ぶ。


ここで場当たり対応を選んでしまうことは、

「現実をみた大人の意見」のように思えるかもしれないが、

僕からすると、大事の前の小事にこだわるという、本末転倒の考え方にしか見えない。


保守で、既存プログラムの修正をやろうという後輩から相談を受けた。

既存プログラムのSQLの一箇所が違うだけのメソッドを作る必要があるとのことだ。

メソッドをコピーして重複したコードを書くことに後輩は納得がいかず、うまい方法は無いものかと僕に相談をしてくれた。

僕は、このメソッドの引数を追加して条件分岐できるようにし、元のシグネチャオーバーロードとして別途定義する案を上げた。

後輩は、我が意を得たりと納得し、嬉々としてその実装に取り掛かった。


しかしながら、保守チームの上官から待ったが掛かった。

この既存メソッドは、幾つかの箇所で呼び出されていて間接的な影響範囲は大きい。

だから、「変更よりも追加を」の原則で、コピーして新規に同じようなメソッドを

作ってほしいといわれたらしい。


僕は非常に落胆したが、今後しばらくその後輩の面倒を見てくれるのは

その上官なので、「従うように」と指示した。


この安全策の意図は、たしかに理解できる。

保守チームの発想としては普通の考えかただろう。


「出来るだけ綺麗にというのは、新規開発の発想で、保守では通用しない」

というようなことも言われたらしい。


僕が、この保守チームを率いたなら、このような後手後手を生み出すだけの思想は許さない。



「安全に動くこと」はたしかに保守サービスで大事なことだが、

「綺麗にしてはいけない」というのは、どういったサービスか?


2言目には「コストが、工数が」という言葉が返ってくる。

しかし、こういった汚いコードによって1つ1つの修正が無茶苦茶大変な作業になっている。

それにより、とんでもない工数を請求している現実に目を向けているのだろうか。

場当たり対応が、保守の費用を上げる元凶になっているのだ。



目先の小金を得るために、最小限の工数で対応することが正解だという姿勢は正しいのか?

修正のために新たな重複コードを埋め込むことが保守なのか?

貰った工数が少ないからといって、場当たり対応することが果たして最終的にお客さんのためになるのか?

ここでもっと綺麗に直しておけば、次の機会にはもっと短い工数で対処が出来るのに。


「保守性を高めたら、顧客から保守費用がいただけない。」


と知った顔で、もし偉そうにいう奴がいれば、言ってやる。

そんな仕事ビジネスとは呼ばない。ただの詐欺だ。


僕は、エンジニアなのに付け焼刃のビジネス感覚でビジネスを議論するより前に

自信をもって作ったものを顧客に提供できるようにすることが第一なのではないかと思う。



※ちなみに、ここに登場する上官氏も別に問題を認識していないわけではない。

組織の文化を変えるのは言うのはたやすいが実践するのは難しい。

しかし、何を理想とするのかを正しく持っていなければ理想にたどり着くどころか近づきもしない。

BrokenPipeBrokenPipe 2009/04/25 19:29 「大事の前の小事にこだわる」と罵られる保守運用サイドにすれば、場当たり的な汚いコードが将来の地雷になることは重々承知していますが、アプリケーションにせよOSやソフトウェア製品のパッチ当てにせよ機器のコンフィグ変更にせよ、最小リスクでの安定運用が基本。

その一方、システムのライフサイクルを3〜10年のスパンで見ているので、数年内にリプレイスの予定がたっているシステムなら、大がかりな修正はその際の予算に入れて実施、という計画を立て後の憂いを絶ちます。

もちろん、当面大きく手を入れる機会はないが、場当たり的対応が長期的に運用リスクになると判断される場合、工期と予算の中で理想的な状態に近づける努力はしますよ。

たまたま槍玉にあげやすい敵を見つけて2項対立に引きずり込む記事はとてもわかりやすいのですが、その敵の思考プロセスは想像の範囲でしかありませんし、必ずしも一般化できるものではないと思います。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証