ふつーのプログラマです。主に企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。

魔女の刻 (20) オーダーテイカーはなぜ嫌われる

»

 白川さんも全てを見通せるわけではない。白川さんの職務を代行した今枝さんの行動は、プロジェクトをかき回すといった生やさしいものではなかった。白川さんが築き上げたジョブフローを叩き壊し、混沌の鍋の中に放り込むという離れ業をやってのけたのだった。
 当初、私が気がかりだったのは、今枝さんがサードアイに対してハラスメント行為を行うのではないか、ということだった。難易度の高いコンテナばかりアサインするとか、わざと情報提供を遅らせるとか、その手の嫌がらせだ。今枝さんは、プロジェクトの遂行に注力すると約束したが、そこには東海林さんや私に対して友好的に接することまでは含まれていない。
 だが、意外なことに、今枝さんはサードアイのメンバーを、他社のメンバーと完全に公平に扱った。ひょっとすると高杉さんあたりから、釘を刺されていたのかもしれないし、後で下請けの管理能力を問われるような記録を残したくなかったのかもしれない。いずれにせよ、私たち3 人にアサインされるチケットの数は、他社のそれと同程度だった。東海林さんには難易度の高いコンテナがアサインされることが多かったが、これは白川さんのときも同じだったので不当な扱いではない。
 白川さんと異なっていたのは、今枝さんはあくまでも各自のスキルと、進捗状況の数値だけでチケットをアサインしていたことだ。その弊害を一番多く被ったのは、細川くんだった。
 一般的に結婚の前後は、何かと忙しいものだし、仕事を早めに切り上げて帰宅したいと思うのは当然だ。白川さんは、細川くんの事情を察して、結婚前には比較的難易度の低いチケットをアサインしてくれていた。その状態が新婚旅行から戻った後も維持されることを、細川くんは期待していたに違いないが、今枝さんはもちろんそんな事情など一顧だにしなかった。
 7 月下旬に差しかかった時点で、細川くんの平均退社時刻は20:30 前後だった。6 月の同時期は、白川さんの配慮で18:00 程度に抑えられていたから、一気に2 時間以上遅くなったことになる。ある朝、細川くんの車にピックアップしてもらって開発センターに向かっているとき、私は少し心配になって訊いてみた。
 「ね、毎日遅くなって、奥さん、何も言わない?」
 細川くんは深いため息をついた。
 「実は結構言われてます。最初のうちは、まあ仕事じゃ仕方ないわね、だったんですけど、昨日なんか、家に帰るのがイヤでどっかで時間潰してるんじゃないでしょうね、になりました」
 「新婚早々じゃあ無理もないわね」
 「とはいえ、新婚だから早めに退社できるように調整してくれ、なんて、あのオーダーテイカーさんには言えませんしね。ああ、白川さん、早く復帰してくれないかな」
 私も同意見だった。細川くんのみならず、プログラマ全体の退社時間は、はっきりわかるぐらい遅くなっている。今枝さんがエンドユーザとの打ち合わせを一手に引き受けるから、私たちはプログラミングとテストの専念できる、という高杉さんの言葉にウソはなかった。だが、私たちの負荷は減るどころか、むしろ増大している。原因は、ひとえに今枝さんにあった。
 「今枝さんを擁護するわけじゃないけど」私は窓の外を見ながら言った。「別に悪人じゃないんだよね、あの人。元々、営業畑にいて、システム開発の指揮を執るのは初めてなんだし」
 「だったら、高杉さんの任命責任じゃないですか。川嶋さんから高杉さんに申し入れてくださいよ」
 「何を」
 「今枝さんが使い物にならないとか」
 「そんなこと言えるわけないでしょ」
 「せめて、あの打ち合わせの長さに苦情を言うとかできないですか」
 営業出身、ということも一因なのかもしれないが、今枝さんはとにかく話が長い。相変わらず、横文字を多用しているのもそうだが、自分が話しているイコール仕事をこなしている、と勘違いしているのではないかと思う。仕様の打ち合わせの多くは、市役所内で行われていたが、たまにタスクフォースのメンバーと開発センターの会議室やフリースペースで行う場合もある。その様子を見ていると、交わされる会話の8 割は今枝さんの発言だった。それも無意味な内容が多い。
 たとえば、何日か前、タスクフォースの瀬端さんとの打ち合わせでは、こんな調子だった。


 今枝さん「では、生徒さんがタブレットに解答を入力するんですね。入力したら、そのステータスが教師さんのタブレットに転送されて、状況が確認できるということですね。いやあ最近の授業ってのは、進歩してますね。昔みたいに紙を使う手間がなくなるわけですもんね。だいぶ楽になったんじゃないですかね(笑)。で、その状況の更新が、現行だと60 秒間隔なので、もっと早めにして欲しいってことですか。どれぐらいが適当なんでしょうね。あまり早いと画面もちらつくでしょうし、かといって遅すぎると今と状況が変わらないわけですからね。カチャ、カチャ、カチャとこれぐらいでしょうか。あ、ちょっと早いですかね。やっぱり、カチッ、カチッ、カチッ、ぐらいでしょうか」
 瀬端さん「負荷がかからない程度に早く、という要望です」
 今枝さん「負荷がかかるというと、つまりネットワークに負荷がかかるということですか。それともタブレット自体の処理のことですかね。どっちかを優先すれば、片方の負荷が高くなるんですよね。トレードオフになるわけですよ。バランスというか、さじ加減が難しいですね。うちのネットワーク担当に意見を出してもらった方がいいかもしれませんね。一度、打ち合わせの場をセッティングしましょうか。現場の先生方のアグリーも取りたいですしね。なんならランチミーティング形式ででも(笑)」
 瀬端さん「いや、いまさら、そこまでやらなくても大丈夫です」
 今枝さん「そうですか? こういうディティールが大事だと思うんですよ。後々のトラブルの元になりかねないので。前にもですね、帳票のヘッダ部分と明細部分の間を1 行空けるか、2 行空けるかでトラブルになったことがあるんですよ(笑)。信じられます? それぐらいどっちでもいいと思うんですけどね(笑)。あとフォントのサイズとかでも、よく揉めるんです。で、いつにしましょうか」
 瀬端さん「何がでしょうか」
 今枝さん「ですから、ミーティングの日程ですよ。うちの方は、たぶん来週の水曜日あたりだと都合がつけられると思うんですが。くぬぎ市さんの案件担当している奴が、今週は別件でずっと手が離せないようなんです。でも、どうしてもということであれば、何日か早めるのはできると思うんですがね。何しろ、このプロジェクトの方がプライオリティが高いのは間違いないことなんで(笑)」
 瀬端さん「いや、ミーティングを開くには及びません」
 今枝さん「そうですか? 私としては、互いの意思を確認しておいた方がリスクヘッジになると思うんですが。後から、こんなはずじゃなかった、と言われても困りますので。あ、コストの件ならご心配なく。この手のミーティングも契約に含まれていますから。よその会社だと、ミーティング1 件のコストをパーアワーで請求するところもあるんですよ。うちは大丈夫ですから(笑)」
 瀬端さん「......5 秒でお願いします」
 今枝さん「え? 5 秒というとミーティングの時間がですか(笑)」
 瀬端さん「画面更新の間隔です。5 秒でお願いします」
 今枝さん「あ、そうですか。それで問題ないですか。後からやっぱり3 秒にしてくれとなったりしないですか」
 瀬端さん「それはなるかも......いえ、大丈夫です。5 秒で進めてください」


 普段は礼儀正しく、滅多に相手の言葉を遮ったりしない瀬端さんも、さすがに最後の方には苛立ちを露わにしてしまったようだった。その気持ちは理解できる。もし私が打ち合わせの担当だったら、


 私「現行は60 秒間隔ですか。とりあえず10 秒ぐらいでどうでしょう。負荷の様子を見て、後から変更もできますし」
 瀬端さん「それでお願いします」

 で、済んでいただろう。
 「あれはたぶん」私は細川くんに言った。「そのうち、タスクフォースの方から苦情が入るんじゃないかな。そうじゃなきゃ、自分で気付くかもしれないし」
 「気付かないと思いますよ。あの人は自分しか見てないですから」細川くんは憂鬱そうに言った。「あと、あのわかってなさを何とかして欲しいですよ。川嶋さんも昨日、被害に遭ってましたよね」
 長時間の打ち合わせよりも深刻なのは、手戻りの多さだった。そもそも業務を理解していない状態で、プロジェクトに投入されたため、ヒアリングに不足部分が多いし、技術的な知識不足からくる仕様洩れも多い。ケアレスミスや些細な勘違いというレベルではなく、そのままでは実装が進められないレベルだ。今枝さんに確認に行くことになるわけだが、それが一人や二人ではなく、ほぼ全員なので、毎日、今枝さんのデスク横には長い順番待ちの列ができていた。
 先週末の夕方、私はその列に並んだ。実装をアサインされたコンテナの仕様を読んでいて、あまりにも不明点が多すぎたためだ。30 分ほど待たされた後、ようやく順番が回ってきた私は、疲れた表情の今枝さんに迎えられた。
 「ああ」今枝さんは私の顔を見ると、視線を宙にさ迷わせた。「ええと、サードアイの......」
 「川嶋です」
 「そうだった。で、何。質問?」
 「はい」
 「どれ?」
 「さっきアサインされた」私はタブレットを見せた。「これです」
 「ああ、これね。未返却督促レポート。これがどうかした?」
 「未返却ステータスによって、ページを分けるとありますが、未返却ステータスが、コードテーブルに定義されていませんが」
 「ないわけないだろう」今枝さんはバカにしたような目を向けた。「よく調べた?」
 「調べました。ありません」
 コードテーブル――正式名、業務共通コードテーブルには、学校情報支援システムと図書館システムで共通に使用される各種コードが定義されている。現行システムで使用されているコードはもちろん、今回のリニューアルで追加されたコードなどが含まれる。現行システムでは、業務コードが決まっていたものの、ドキュメント上にしか定義が存在していなかったため、ソース内にハードコーディングされていた。これではメンテナンス性が悪いので、新システムではコードテーブルが採用された。たとえば、学校情報支援システムで学年を表すコードは、小学1 年が001 だが、コードテーブルには"SCHOOL_YEAR_E1" のキーで定義されていて、Java ソース上ではこのキーでCassandara にアクセスすることになっている。このキー自体は、いくつかの列挙型で定義されていて、

 String schoolYearKey = SchoolCommonCodeTable.SHOOL_YEAR_E1.getKey();

のように使用する。列挙型のソースとコードテーブルはエースシステム社員によって管理されているので、私たちでは編集ができない。
 「見落としかもしれないだろ。もう一度調べて見てよ」
 今枝さんは面倒くさそうに手を振ったが、私はタブレットを見せた。あらかじめ、列挙型のソースを表示してある。
 「ありません」
 今枝さんは舌打ちして私を睨むと、タブレットを引ったくるように取り、ソースをスクロールし始めた。
 「......ああ、これはまだ未登録だったか。じゃ、そこは省略して進めて。それぐらい、自分で考えて進めてくれよ。君にだって頭ってものがあるんだろ。ぼくは忙しいんだよね」
 「そういうわけにはいかないんですが」
 「なんで? それぐらい融通きかせてよ」
 「いや、コードテーブルの方はともかく、ソースの方は定義しておいてもらわないと進められないんですが」
 「どうして」
 「......この未返却ステータスに関するロジックがコーディングできないからです」
 「どうしてできないのさ」
 私は徒労を感じながら、列挙型についての説明を始めたが、予想したとおり30 秒も経たないうちに今枝さんに遮られた。
 「ああ、もう、そういうのはいいからさ。とにかく進めてよ。やり方は任せるから」
 今枝さんは虫でも払うように、手を動かした。私はやむなく引き下がった。
 結局、そのコンテナのコーディングは、適当な文字列を未返却ステータスとして記述しておくしかなかった。もちろん、そのまま単体テストをしても、エラーにはならないがエンドユーザの意図した結果が出るはずがないので、コミット時のコメントに、「コードテーブル未定義により、未返却ステータスは仮の値を当ててあります」と書いておいた。
 そして、昨日、私は今枝さんに呼び出された。今枝さんは、列を作っていた数人のプログラマを飛ばして私を呼ぶと、タブレットの画面を示して言った。
 「ほら、これ見て。単体テスト実行不可、になってるでしょ」
 「なってますね」
 「こういういい加減な仕事されちゃあ困るんだよね」
 「はあ?」さすがに腹が立って、つい口調が尖った。「その下のコメント読みましたか?」
 「あ、これ? ステータスアクセスエラーのため」今枝さんは画面の文字列を読んでから、私に視線を戻した。「これがどうかした?」
 「どうかしたも何も。先週、未返却ステータスのコードテーブルがないって言ったじゃないですか」
 「そうだっけ。いちいち憶えてないけど。それがどうしたの。そんな言い訳聞いてないんだけどな」
 「言い訳じゃありません。コードテーブルが定義されていないと言ったら、やり方は任せるから進めろと仰ったじゃないですか」
 「ぼくが言った?」
 「言いました」私は答えた。「だから仮の文字列をセットして......」
 「言ったかもしれないけどさ」今枝さんは、それがどうした、という顔で私を見た。「これはやり方がまずかったってことだよ。もう少し、考えてよ。君には頭ってものがないの?」
 あまりの言い草に頭に血が昇りかけたが、私の後ろで順番を待っていた草場さんが助け船を出してくれた。
 「今枝さん、本来ならコードテーブル定義がなければ、実装を進められないんです。それをとにかく進めろと仰ったなら、こういうやり方しかなかったと思いますよ」
 「だから実装の詳しいことはわからないんだって」今枝さんはエース社員らしさを発揮した。「実現方法を考えるのは、君たちの仕事だろう。違う? ぼく、何か間違ったこと言ってるかな」
 私は草場さんと顔を見合わせ、互いの顔に諦めが浮かんでいるのを認めた。ここで「たとえば家を建てるときに設計図がなかったら大工さんは仕事ができない」のようなありふれた例え話をしたところで、今枝さんには通じないだろう。私は平静な口調を保つように努めながら訊いた。
 「それで、このコンテナはどうすればいいんですか」
 通常、単体テストで差し戻されたコンテナを、元の実装者が担当することはないから、私の役目は終わっているはずだった。だが、今枝さんは驚いたように私を見た。
 「何言ってるの。やり直しだよ。当たり前だろ」
 そう言われても、単体テストが通らなかったということは、まだコードテーブルの定義が完了していないことになる。どうやり直せばいいのか。
 もう一押ししてみるか、と顔を上げたとき、サブリーダーの新美さんが私を見ていることに気付いた。新美さんは、意味ありげに首を横に振り、続いて、自分のデスクを指さした。どうやら、それ以上今枝さんを相手にせず、後で、自分のところに来い、と言っているらしい。私は了解の合図で小さく頷くと、今枝さんに「わかりました」と答えて、その場を離れた。
 後で、今枝さんが離席した隙に新美さんのデスクに行くと、新美さんは小声で教えてくれた。
 「未返却ステータスですが、まだくぬぎ市の方から出てきてないんです。だから実装に回るはずがないんですけど、今枝さんがアサインしてしまって」
 「忘れてたってことですか」私は少々呆れて訊いた。
 「忘れたというか、もういっぱいいっぱいで、手が回らないみたいです」新美さんは苦笑しながら言った。「白川なら、絶対こんなことはなかったんですけど、今枝さんときたら......」
 「どうすればいいんでしょう」
 「放置しておいてください」新美さんは驚くようなことを言った。「川嶋さんへのアサインは取り消しておきます。サブリーダー権限でも取り消しはできるので。コードテーブルが整備されたら、改めて誰かにアサインしますから」
 「でも」私は今枝さんが戻ってこないか、ドアの方を確認してから訊いた。「今枝さんが、後で気付いて怒ったりしませんか?」
 「大丈夫ですよ」悪戯っぽい笑いを浮かべながら新美さんは断言した。「あの人はやることいっぱいなので、さっきのことなんか、今頃忘れてますから。こんなことで、全体の進捗が遅れるようじゃ、白川が戻ってきたとき失望します」
 新美さんの言ったことは正しかった。自席に戻ったときには、私へのアサインは取り消されていたし、その件について今枝さんが何か言ってくるようなことはなかった。
 「確かに今枝さんには悪意はないと思いますよ」細川くんは、開発センターの駐車場にジュークを入れながら言った。「でも、口先だけでプロジェクトを仕切れると勘違いしてますよ、あれは。他のエースの人だって、みんな嫌ってますよね」
 「そうね。一緒にランチに行ってる様子もないしね」
 「ああ、早く、白川さん、復帰してくれませんかね」
 「それ、さっきも言ったよね」
 「何度だって言いますよ。全員の共通認識ですから。今枝さん以外ですけど」
 車を降りたとき、スマートフォンが振動した。私は、細川くんに先に行っているように合図してから電話に出た。
 「おはよう、黒野」
 『おはよう』黒野は少し沈んだ声で言った。『今、いいか』
 「大丈夫」
 『お前に頼まれた調査の件だが、やっとわかった。FCC みなとシステム開発、マギ情報システム開発の元請けは、どちらもTBT 通信システムサービスだった。それからお前の推測通り、田熊通信システムも同じだ。あと、トレーニング中に脱落したアイカワ製作所とオリエントソフトシステムも同じくTBT 通信システムが元請けだった』
 「やっぱり......」私は唇をかみしめた。「その、TBT 経由で参加してる他の会社はわかる? つまり、今、まだ残ってる会社って意味だけど」
 『わかってる。もう出なきゃいかんから、後でLINE に送っとくよ。じゃあな』
 「あ、待って」私は急いで言った。「一個だけ。その中にTSD はいる? ツジ・ソフトウェア・デベロップメント」
 『TSD......いや、いないな。TSD はうちと同じ、東風エンジニアリング経由だ。それがどうかしたのか』
 「いや、ごめん。何でもない。ありがとう」
 『今度、おごれよ』
 電話を切った私は安堵のため息をつき、すぐに自己嫌悪に陥った。黒野に調査を頼んだのは、参加プログラマの中にQ-LIC の意を受けた人間が残っていないか確認するためだった。同じ元請けから参加している会社の方が可能性が高いと考えたからだ。だが、私が何よりも気にしていたのは、草場さんが「工作員」である可能性だった。極めて利己的な動機だ。これでは、今枝さんを非難する資格などないかもしれない。
 首を振ってオフィスエントランスの方へ歩き出そうとすると、駐車場に一台の車が入ってきた。車種を見た私の心臓が跳ね上がった。草場さんの青いフィットだ。
 フィットから降りてきた草場さんは、すぐに私に気付いて、笑顔を浮かべて近付いてきた。
 「おはようございます」
 「おはようございます」私は何とか平静な声で挨拶を返した。「今日も蒸し暑いですね」
 「そうですね」草場さんは小声で言った。「今日、ランチ、大丈夫ですか?」
 「ええ、はい。冷やし中華ですね」
 「よかった。楽しみにしてます。じゃ、いつもの時間で」
 草場さんは小さく頭を下げると、先にエレベータホールに向かった。私はほころんだ顔を引き締め、少し遅れて、その後を追った。

(続)

 この物語はフィクションです。実在する団体名、個人とは一切関係ありません。また、特定の技術や製品の優位性などを主張するものではありません。本文中に登場する技術や製品は実在しないことがあります。

 ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

参考資料:くぬぎ市再生プロジェクト ICTシステム再構築受注図

order-companies.png

Comment(21)

コメント

匿名

草場さん…プラグたったぁ

匿名

コード定義が完了してたら単体テスト通るようなコーディングしてたってこと?それだとその前のやりとり(定義がないと書けません)の意味が通らないような?

公英

川嶋さん、この先なにか他社の妨害行為が発覚するたびに「その元請けはどこで、TSDはその配下の可能性はないか」とキリキリ悩まされちゃうんでしょうか。 恋の呪縛だあ…

今枝さんタイプの若い方って突然キャパオーバーからの心療内科→休職コースになりそうで、何故かちょっと応援したくなってきた。

サルーン

コード定義が未完了の場合は「単体テストに通らない」が正解なので、今回もそうなっただけでは。

匿名

頑張っても手柄にならないってことは、しくじっても失敗にならないってことですよね。
それにしても、こういうのが権力を持つとかないませんね。


そういえば、私も、変な事ばっかりクチにする上司が、
「俺のほうが会社勤め長いんだぞ」なんて発言するのを聞いて、呆れたことがあります。

匿名

無能にも生活と誇りを保証してあげれば権限的に上位にいく動機を減らせるので、みんなもっと無能に優しくした方がいいと思う

SQL

草場さん、何かあやしい動きしてたっけ?
「工作員」でないことを確かめたかった、ということ・・・?

匿名

>「工作員」でないことを確かめたかった、ということ・・・?


小説というものを読んだことがない人なのかなあ。
これで安心しちゃって、実は……なんてパターンもあるんですよ。

かなた

>コード定義が完了してたら単体テスト通るようなコーディングしてたってこと?それだとその前のやりとり(定義がないと書けません)の意味が通らないような?

;定義がないから適当に決めてロジック作りました
if 返却コード == 1 then 返却されていない処理 else 返却済みの処理

みたいな状態でしょう。これであれば、未返却延滞のコード定義がされて、それが1なら処理が正常に通りますし。
ただ、これでこのロジック完成か?って聞かれたら「定義ないんだから、全部仮で作ってるので予定されているコードになっている可能性は低い(が適当に実装しろって言われたから書いた)」ってことに>定義がないとかけません

VBA使い

ハローサマーグッドバイでも、島崎さん(だったっけ?)が実は...な役でしたね。
なんとなく草場さんがキャラ被って思えてくる。

匿名

今枝さん(もしくは今枝さんをねじ込んだ上級SE)が実はQ-LICの企業スパイだったって線を期待してしまうアホは私だけだろうか…?

匿名

2ですが
仮の未返却ステータス(列挙値?文字列?)を当てて、そのまま単体テストすればとりあえずは通るようにコーディングしておいた
単体テストが通らなかったということはコード定義が完了していない(←?)、単体テスト実行不可というステータス
やっぱり矛盾してるように思えます。
話の本筋には影響しませんが…どうにも気になるもので。

匿名

この場合、足りないのは設計図じゃなくて、
設計図に指定がある材料、だと思うがな。


それにしても。


ここまで、自分が何をしているのか、何をしていないのか、
自覚がないやつが出世できるなんて、
世の中、間違ってるよなあ。

第1話で草場さんも東海林さんらとリカバーの作業をやってたから工作員の可能性はないのかなと思ってます。
川嶋さん絡みで途中から改心したということもあり得ますが。

夢乃

いつも先を楽しみにしてます。

今回、以前に「後でわかったことだが、TSD も東風エンジニアリング経由で参加していた」が回収されてちょっと満足。
ところで、TSDに対してこういう言い方ということは、TSDを直接の請負元は東風で、同様に、田熊通信システムの直接の請負元はTBT、ということですよね。
ところが、(6)の時に田熊の椛山氏は「名倉スタッフサービスさんに無理言ってねじ込んでもらった」と言っていて、直接の請負でない会社に「無理言った」のかな?と気になってしまいました。
毎度、面倒臭いところばかりツッコんですみません。

リーベルG

夢乃さん、どうも。細かくチェックしていただいてありがとうございます。
受注図を追加しました。
田熊通信システムは、名倉スタッフサービスにお願いしたんですが、名倉の方では諸々の事情から、TBTに振った、という設定です。

匿名

リーベルGさん、ありがとうございます。
田熊は名倉に無理を言って、TBTを紹介してもらったということですね。なるほど。
受注図っ! 自前で作っていましたが、当然すべてを網羅することはできず、この図はとってもありがたいです。あとはここに、これまでの登場人物を書き込んでいけば・・・何かが見えてくるのかも(^^)
それを眺めながら、続きを楽しみにしています。

夢乃

上の投稿、名前を書き忘れました。すみません。夢乃、です。

匿名

定義がない=定数の変数名が決まってない
だと思いますが

匿名

「そんなこと言えるわけじゃないでしょ」

「そんなこと言えるわけないでしょ」
でしょうか?

リーベルG

匿名さん、ありがとうございます。

コメントを投稿する