前回はハードウェアとソフトウェアの担当部所間でのギャップについて話しましたが、今日も関連する話です。
以前に関わっていた道路関係のシステムでは、様々なシステム間でのインターフェイスが必要で、他組織のシステムとのやり取りもありましたし、同じシステムでも、その中には多くのベンダーが色々なシステムを納入し、それぞれのシステムがお互いに通信を行っていました。
その道路関係のシステムで現地調整をしていたときのことです。私はその日の仕事を終えて帰ろうとしていました。私はビルの3階にあるコンピュータルームで作業していましたが、仲間が5階で作業していたのでちょっと様子を見ようと思って帰り際に5階に立ち寄りました。
そこでは、私たちのチームのメンバー数名がなにやら深刻な様子で働いていました。明らかに何かトラブルが発生したようです。その日は私たちと、A社との間でインターフェイス試験をする予定になっていましたが、それがスムーズに進んでいないようでした。
私たちのチームはまだ経験も浅いメンバーが多く、放っては置けないのでしばらく状況を聞いて、私も全面的に応援することになりました。問題はTCP/IPによる通信がA社との間でうまく通らないということで、この手のトラブルは非常によくある話でした。
障害が発生したときというのは、大概はまず自分を疑うものです。このときもまずは自分たちの機能に問題がないか、基本的な部分から順を追って動作の検証をしていきました。全てが自分たちのシステム上だけで確認できれば良いのですが、通信のようなインターフェイス部分となると、どうしても通信相手の方にお願いしてデータを投げてもらわなければなりません。まだ20代と思えるA社の担当者(ここでは仮にBさんとします)は、明らかに自分たちは間違っていない、悪いのは私たちのシステムで、そのために遅くまで付き合わされて迷惑だといった様子が、イヤミな言動にありありと出ていました。
そのようなBさんの態度に私もむかっ腹が立ちましたが、それまでのいきさつを知らないので、おいそれと抗議するわけにも行きません。ひたすら下出に出て、「申し訳ありませんがもう一度テストデータを流してもらえないでしょうか」と何度もお願いをしました。露骨にいやな顔をしながらも何回かは対応してくれましたが、そのうちに「うちのマシンをデバッグに使おうとしているなー」とまで言うようになりました。そして、時間も遅くなってきたので本社の上司がA社の上層部とも交渉した結果、A社とのテストは明日に延期となりました。Bさんは、帰り際に「明日はつながることを祈っていますよ」と言い捨てて、先に帰りました。
さすがにこのヤローと思いましたが、この頃になるとかなり調査も進み、私は十中八九A社の問題だろうと思い始めていたので、逆にさっさと帰って欲しいと思っていました。そして、Bさんが帰ると、本当はこのようなことはいけないのですが、こっそりとA社のマシンの端末を叩いて、ネットワーク設定がどうなっているかを確認しました。すると、案の定ネットワーク設定が間違っていました。とても単純なミスでした。
この後私は、A社に対して、またBさんに対してもきちんと反論ができるストーリーを作りました。翌日私は別の場所で作業する予定だったので、仲間の若い技術者に申し送りをしておきました。元はといえばこの若い技術者がこの作業の責任者ですから、これだけ侮辱的な対応をされたのだから、きちんと証拠を突きつけて謝罪させろ、そして誠意が見られないようであれば、会社対会社でクレームを出すことも視野に入れろと、重ね重ね言い含めました。そして、どういう資料を提示して、どのように相手に非を認めさせるかという段取りを噛んで含めるように伝えたのですが、今一つ彼らには手ごたえが感じられませんでした。相手にバカにされて、悔しいとも思っていないようだったので、もっと怒れというようなことを言ったと思います。
それから数日後にその申し送りをしておいた技術者にどうなったか聞いたところ、翌日に遅刻をしてしまい、肝心の相手にはぎゃふんといわせる事もできなかったということでした。しかし、どうも彼の態度を見ていると、私一人がエキサイトしていたようで、彼らは別にどうとも思っていなかったようです。返って私が面倒な申し送りをしたことを迷惑がってすらいたように思えたので、私もそれ以上何も言わず、ただ脱力感を感じたことを憶えています。
とにかく、会社が別であろうと、仮にそれがライバル会社であろうと、仕事は助け合って行うべきで、Bさんのような態度はとるべきではないと思います。彼のような対応は天につばを吐くようなもので、いつか自分自身にツケが戻ってくることでしょう。
このシステムはかなり大規模なものだったので、その後も色々と開発の仕事がありました。そのなかで、ある改造作業が入ったときに、業務責任者が作業の切り分けをする際、マシンを境界として分割しようとしていました。これはよくある話で、物理的に分かれている部分で仕事を分割するのはとても自然なことでした。つまり、AというマシンはAチーム、BというマシンはBチームに開発させて、インターフェイス試験でAとBの接続テストをするというものです。
しかし、私はこれに反対しました。そのような切り分け方ではなく、システムAとシステムBとの通信部分だけを一つの機能として切り出して、1チームにやらせるべきだと主張したのです。そうでないと、システムの境界で非効率な作業が発生する、つまり2チームが同じことで悩むことになるのです。
かくして、言いだしっぺの私がその部分を担当することになりましたが、AシステムにもBシステムにも共通のAPIを提供する通信パッケージとして設計し、トラブルもなく完成を見ました。開発中は、A、Bどちらかで通信の問題があっても、各担当者はそれがどちらの問題かを検証する必要なしに私に報告すればよかったので、彼らも私の主張を理解してくれたと思います。