炎上プロジェクト談

鋳型に入れたような悪人は世の中にいるはずがありませんよ。平生はみんな善人なんです。少なくともみんな普通の人間なんです。それが、いざという間際に、急に悪人に変わるんだから恐ろしいのです。だから油断できないんです。

夏目漱石『こころ』

はじめに

過去に経験した炎上プロジェクトについての駄文。

登場人物(会社)

  • A社:私の転職する前の会社。C社からZプロジェクトの一部機能を再委託されたシステム開発会社。
  • B社:私の転職予定だった会社。この会社もZプロジェクトに関わっているが今回の記事では書けなかった。
  • C社:大手SIer
  • D社:大手製造業
  • P氏:B社の開発マネージャ。●ね。
  • G社・H社・I社・J社・L・M・N社:C社からZプロジェクトの一部機能を再委託されたシステム開発会社たち

2017月4月~

大手製造業D社からのシステム開発プロジェクト(以下、Zプロジェクトという)を大手SIer C社受注しました。そしてC社は私のいたA社の他2、3社にZプロジェクトの開発を再委託しました。私は設計段階から参画しました。その後、設計が進むにつれて開発規模が拡大し、参画する会社も増えていきました。結局C社から再委託されたシステム開発会社は、A社を含めて8社(以下、この8社をまとめて2次受け企業という) を超えました。さらに各社とも開発要員を自社だけで賄えず、さらに派遣や業務委託で要員を調達していました。典型的なITゼネコンの構図ですね。末端の開発要員まで含めると、要員は300人は超えていたと思われます。本当は3次、4次とあるのですが省略。

Zプロジェクトを構成するサブシステム

2018年4月~

  • 認証基盤:G社が開発。C社からの再委託。
  • マスタ管理機能:A社が開発。C社からの再委託。
  • Frontend機能:H社が開発。C社からの再委託。
  • Backend機能①:I社が開発。C社からの再委託。
  • Backend機能②:J社が開発。C社からの再委託。
  • Backend機能③:K社が開発。C社からの再委託。
  • Backend機能④:L社が開発。C社からの再委託。
  • Backend機能⑤:M社が開発。C社からの再委託。
  • データベース機能:N社が開発。C社からの再委託。

この時点で炎上決定。

2次受け企業の各社がZプロジェクトの各機能の開発を分担してC社から受注し設計開発を行ってきました。各社とも、D社からの要件を「C社を経由して」受け取り、設計開発を行っていました。しかし、D社からの要求提示漏れ、C社の要件ヒアリング不足、2次受け企業の設計開発不足により、開発が予定より大幅に遅延しました。正確に言うと、2次受け企業の開発はいったん終わったかに見えたのですが、結合テストフェーズで不具合が多発しました。

結合テストで起きた主な不具合の概要

  • ログイン出来ない。認証基盤と、その認証基盤を利用するFrontend機能とのインターフェースが噛み合わず、ログインエラーになる。
  • Backend機能①~⑤の間での整合性がとれていない。例えば、Backend機能①で登録したデータをBackend機能②で更新しようとするとエラーになる。

不具合の原因

  • 認証基盤およびBackend機能①~⑤がそれぞれ別のシステム開発会社で開発され、度重なる要件変更についての情報共有がI社~M社で十分にされていなかった。

不具合の原因の原因

2次受け企業間でのコミュニケーション不足だ、といえばそれでおしまいです。確かにC社の大きなフロア内でA、C、G~N社が開発していました。しかし、機能ごとに開発会社が異なるということは、それぞれの会社が開発工数を見積り、開発工数(=費用) を C社と合意して開発しているわけです。ということは、要件変更が発生し設計開発の工数が増えた場合、 A、G社~N社は追加工数を再度見積もり、C社と合意する必要があるわけです。合意しないと開発できません。要件変更に伴う開発を賄う費用が出ないからです。

揉め事発生

開発工数が増えるとはいえ、2次受け企業の言い値で追加費用を合意できるわけではありません。商流(お金の流れ)を追ってみます。

お金の流れ

D社⇒C社⇒2次受け企業(3次受け以下は省略) の順に開発費用が流れていく。

2次受け企業の追加開発にかかる費用は以下のいずれかで賄うしかありません。

  1. C社の持ち出し
  2. D社がC社に追加費用を支払い、C社が2次受け企業に支払う。(この期に及んで一部を抜いたりする)
  3. 2次受け企業(A社およびG~N社のいずれか)の持ち出し

今回の場合、結合テストで発生した不具合ごとに、その不具合の原因を作りこんだ会社に追加費用を負担させる方針をとりました。

お金が絡むとややこしくなる

不具合の直接原因を特定するのは簡単です。プログラムをトレースすれば分かります。しかし、その不具合の責任企業を特定するのは簡単ではありません。

例えば、M社が開発したBackend⑤で不具合があり、その直接原因がプログラムエラーであった場合、直接原因となったプログラムエラーを発したのはM社のプログラムです。ですが、エラーの原因がデータの不備であり、そのデータを登録する機能がBackend④であったとします。この場合、エラーの根本原因はBackend④です。修正すべきはBackend④です。

したがって、この不具合の責任企業はL社だ、となるかというと、そうでもないのです。そのデータが登録されるデータベースのテーブル設計をしたのはN社です。L社の担当者曰はく「そのテーブルにそんなカラムが定義されていることを私たちはしらない。プログラムは修正するが、修正費用はいただく。」

では、この不具合の責任企業はN社かいうと、そうでもないのです。N社の担当者曰はく、「このデータベース設計でD社とも合意をとっている。うちらの瑕疵じゃない。直すなら追加費用をいただく。」

結局データベース設計に合意したD社が責任企業かいうと、そうでもないのです。D社の担当者曰はく「合意したけどウチの責任じゃない。2次受け企業たちとの間でコミュニケーションがとれていないだけだ。」

2次受け企業間のコミュニケーションに責任を持つのはC社です。しかしC社もそう簡単に瑕疵は認めません。とうとうC社マネージャがブチ切れました。「2次受け企業間で情報共有するためにRedmineを提供しているだろ。お前らが必要なコミュニケーションをしていないだろ!」

話が振り出しに戻りました。コミュニケーション不足は元々分かっています。問題はその責任がどこにあるのか・・・。結局この不具合の責任企業はBackend④を開発したL社となりました。

1日もかからず修正できるはずなのに、瑕疵が誰にあるのかを決めるのに1週間以上費やしました。D社にとってはこの1週間分の工数は無駄ですね。たぶんC社が管理工数と称してD社に請求しているのかな。

そして炎上へ

普段は温和(?)な2次受け企業の担当者も、背に腹は代えられません。自社の利益(損失)がかかっているので、そう簡単に自社の瑕疵を認めません。不具合の数は数百となり、もはや不具合1つ1つについて、その瑕疵を判断するのは不可能になりました。そしてプロジェクトは崩壊寸前になりました。

(補足)ある日の会話

  • C社⇒I社:プロジェクトを前に進めたいから先に不具合Xを直してほしい。瑕疵かどうかは後で判断する。
  • I社⇒C社:ウチの瑕疵でない認識なので先に追加費用をもらわないと開発できない。
  • C社⇒J社:プロジェクトを前に進めたいから先に不具合Yを直してほしい。瑕疵かどうかは後で判断する。
  • J社⇒C社:わかった。しかし、不具合Xが直らないと不具合Yを直せない。先に不具合Xを直してほしい。

こんなやり取りが多かったです。結局各社とも足並みがバラバラで開発が延々として進みませんでした。

で、結局Zプロジェクトはどうなったの?

この後も揉め事は収まらず、何人もうつ病になり主力メンバが相次いで退職したとか・・・とある開発者が発狂したとか脱糞したとか、色々あるんですが省略。

結局機能を大幅に絞って2020年2月にリリースすることになりました。その初期リリース直前に私はA社を退職しました。風のうわさによると、初期リリースは遅延したとのことでした。

B社は?P氏って誰よ?

2018年10月からB社が登場します。2次受け企業の足並みを揃え、プロジェクトを円滑に進める立場として参画します。そして私がB社のP氏と仲良くなり、B社に転職しないか(初年度年収は4桁万と言われた) とP氏に誘われて、B社の最終面接(P氏から絶対大丈夫だ、と言われた。) で不採用になり、無職になり、別会社に転職し・・・という話が続くのですが、 炎上の話が長くなったので書けなくなりました。また今度にします。

P●ね。

さいごに

このプロジェクトを経験した後、私は「会社のために働く」という気持ちがゼロになりました。(そして P●ね。) ITエンジニア1個人としてどのように生き抜いていくかのみを考えるようになりました。会社は敵ではありませんが味方でもありません。

P●ね。

また、この記事では全く言及していませんが、B社のTさんは(Pとは違い)尊敬できる人でした。(Pとは違い)何事も粘り強く取り組まれ、どんな状況でも(Pとは違い)真面目に仕事を行うTさん、お世話になりました。(Pとは違い)ありがとうございました。(Pとは違い)また一緒に仕事したいな。

P●ね。

補足

今回言及できませんでしたが、2018年10月から私が退職する2020年02月までの間にも色々あったんですよ、SESクソ体験が・・・。パワハラ・法令違反・メンタル疾患など。いずれその話も書きましょう。

P●ね。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です