ビジネス開発Daisuke懐かしいクライアントさんから2年前に納品したシステムサービスに「バグ(不具合)がある」と連絡が入り、至急なおして欲しいと言われる。私が一人で開発したものだし、クライアントさんも困っているようだし、連絡を受けてからすぐにバグ修正をするための調査を始めた。「バグと思われる現象」について、Skypeとメールにて詳細に説明を受け、自ら再現などを試みつつ何度もソースコードを読み返すこと二日目。調べていくと、バグだと言っていた内容は実は当時口頭で合意した「仕様」だったことがわかった。(そもそも、2年も経っていて仕様を忘れてしまっていたが、ソースコードのコメントに仕様が書かれていたことで記憶が蘇った。)そこで、急いで調べた結果について報告を行う。「これはそもそも仕様なのでバグではありません。この仕様を変更する場合は追加修正という形になります。クライアントさんは納得ができない様子。無理もない、クライアントさんには情シス部があるわけでもなく、社内に専門家もいない小企業さんである。(プラス、これまで色んな開発会社に仕事を頼んでは失敗を繰り返している過去を聞いているだけに、開発者への妙な不信感も多少あるのかもしれない。「やはり、これはバグだと思うし、そんな大きな変更にも見えないし、大変困っているのでとりあえずすぐに直して欲しい。(通常は、そういうトラブル予防として「エビデンスの確保」や「ドキュメンテーション」をしっかりやるのだが、小さな案件だとそこに回せる予算がないケースって結構あったりする。2年前に受けた時はそのケースだった。)ここで私は非常に悩み始める・・・。実際問題として、この不具合(とクライアントさんが思っているが、実際は当初通りの仕様)の改修は、それ自体それほど大したことはない。なんなら「1日もあればサクッと改修できる目算」である。1日、私がサービス(無償奉仕)しさえすれば全て丸く収まる。クライアントさんは希望通りの機能を手に入れて業務が円滑になってハッピー。私の方もこれまでお付き合いしてきているし、1日程度のサービスくらい融通を効かせてもいいのではないかと思う。「クライアントさんが納得しない」「私がちょっとサービスすればいいだけ」という理由でそれをやっていいのだろうか?やはり、ちゃんと納得行くまで説明して「バグではなく当時合意された仕様である、なのでこの改修は明らかに追加労働であり、追加費用をお支払いいただく事となります。」ときちんと理解していただくべきか・・・。ちなみに、今までなら「サービス」や「善意」で、さっさと修正してしまう場合も結構あった。理由は、それがもっとも「経済的視点でみて合理性が高い」から。詳細な状況説明ドキュメントを丁寧に書き下ろして、素人にもわかるように解説資料も作成し、それらを持ってして「これは仕様なのです。」と説明し理解していただくコストを考えたら、1日でプログラムを修正する方が圧倒的に早い。後者で対応してしまった方が、私としても楽だし、クライアントもバグ(本当は仕様)が修正されるという、一番経済合理性のある道筋かと思う。今回はかなり悩んだ挙句、後者ではなく前者を選択した。プログラム修正する倍以上のコストをかけてでも理解してもらう作業を行おうと。1日で修正できる程度のバグについて、二日かけて資料を作成し送付、その後資料に基づき何度も長文説明メールのやりとりをしてさらに数日かけ、「これは仕様となっており、修正には追加費用がかかります。(必要なら見積書は作成させていただきます)」ということを細部まで説明しきった(個人的には)。結果、努力が実を結び、クライアントさんからは「なるほど。