12/08/2016

1行のコード変更に6日掛かった話

Ed Weissman氏のブログより。2年前に投稿された記事で、Hacker Newsに取り上げられていた。

(本当の話)

フィリップ (社長): 我々の工場は10%近く十分に活用されてない。在庫の確保を始めるか、従業員をレイオフをするかだ。私は皆が忙しくするより、在庫を作って、書き入れ時の前に先回りをしたい。

リー (運用管理者): 会社の方針は3ヶ月以上の在庫を作ることを制限しています。もし、4ヶ月に変更するなら、やるべきことがたくさんありますよ。

フィリップ: 分かった。どのようにそれを実行に移すんだ?

リー: よく分かりません。レガシーなソフトウェアの設定を変更する必要があると思います。

デビッド (IT重役): いいとも。おそらくコアルーチンの1行だろう。チケットを記載してITサービスに提出してくれ。

ジュディ (IT管理者): このリクエストにチケット#129281を割り当てています。しかし、ビジネス影響を図る部門と責任者の承認が必要です。

デビッド: それはフィリップだ。すぐにやらないとレイオフが必要になるぞ。

ジュディ: 分かりました。それでは部門自身でそれを記載して、迅速にこれを投げます。

2日後。

デビッド: 129281はどうなった?

ジュディ: 1番目の開発者の拡張機能キューにあります。14個のバグレポートの後です。

デビッド: キューを無視しろ。緊急にマークしてエドにすぐに送ってくれ。

1時間後。

エド (プログラマ): モジュールORP572の1252行目で、ハードコードされたMonthsOfBacklogという変数を"3"から"4"に変更しました。ユニットテストが成功して、2つのバッチテストを走らせました。運用作業キューは予想どおり10%増えました。予定通り進んでいます。コードレビューに提出し、ユーザ受入れテストのためにホーマーに移しました。

シャーリー (コードレビュー): ハードコードされた変数を持つことは会社のポリシーに反しています。パラメータファイルにこれを記録する必要があります。また、2つの古いデバッグコマンド、割り当てられていない変数の警告メッセージやハードコードされた従業員IDがあり、このモジュールを本番環境に移行する前に全て修正しなければなりません。

エド: そんなの、どうでもいいじゃないか。

シャーリー: それはその通りかも知れません。しかし、ORP572を割り当てられたら、あなたは新しい会社のポリシーに違反する既存のエラーを修正する責任があります。私はそのままではこれを進めることはできません。

2時間後。

エド: OK、完了したよ。コードレビューに再提出したところだ。

ジュリー (ITテスト): フレッドが月末の会計処理終了のために制御試験を走らせているので、ホーマーはユーザ受入れ試験ができません。代わりにマージを使って下さい。

エド: 私はマージにアクセスできない。

ジュリー: では、ITセキュリティでジョーに連絡して下さい。彼はあなたに権限を与えてくれます。

2時間後。

ジョー (ITセキュリティ): デビッドのサインなしにはマージにアクセスを許可できません。彼は町から出ています。月曜日まで待てませんか?

エド: それはないよ。フィリップはすぐにやってほしいんだぞ。彼にアクセスを許可してもらってくれ。

シェリー: 新しいパラメータレコード"MonthsOfDemand"はもっと良い名前が必要ですよ。オフショアプログラマはこの意味を理解していないわね。変更の監査証跡も必要よ。

エド: それは何のポリシーだい?

シェリー: それは厳密にどこにも書かれていないわ。オフショアチームは3ヶ月後に遅れでwikiを更新したけど、全ての新しいパラメータレコードが新しいネーミング要件を満たし、監査証跡を保持しなければならないと断言するわ。

1日後:

エド: パラメータレコードを"MonthsOfDemand"から"SelectedMonthsOfBacklogDemand"に変更して、そのレコードと監査証跡を保持するモジュールPAR634を加えた。コードレビューに提出したよ。

トニー (ITテスト): マージ上で129281を見ましたが、テスト計画がありません。

エド: 古い方法と新しい方法でそれを実行して、WorkOrdersHoursレポート上で合計が増加したことに注意して下さい。

トニー: それがテスト計画? いや、これは工場で全てに影響します。ユーザーが選択したテストケース、期待される結果、文書化されたテストランとユーザーのサインオフが必要です。

2日後:

フィリップ: デビッド、エドのプログラムを本番環境に緊急で移すことをトニーに伝えてくれ。

デビッド: 了解。

総経過時間: 6日
変更された極めて重要なコードの行: 1
変更された極めて重要なコードのバイト数: 1
飲まれたエクセドリン: 24錠
Hacker News上で費やされたイライラの時間: 14