Hatena::ブログ(Diary)

novtan別館 このページをアンテナに追加 RSSフィード Twitter

2008-03-21

SI業界を目指す君達へ贈る「何故システム開発はテンパるのか」

先日学生に聞かれたんですよ。

「下流工程は大変って聞きますが、上流は楽なんですよね?」

よろしい、君はよく勉強している。でも根本的に間違っている。下流工程が辛いのは、上流工程でちゃんと仕事ができなかったからだ*1

というわけで、主に学生向きに話を単純化して語ってみます。これが普通だとか、一般的だとか言うつもりはなく、違う視点もあるかと思いますが、一つの考え方として。

SIでのシステム開発は、建設業にたとえられます。が。

顧客の希望を聞き、設計し、施工し、引き渡す。こういった工程を踏む仕事ということで、システム開発はよく建設業にたとえられます。実際に工程管理の手法なども似通っています。ところが、大抵の場合、耐震偽造をした建築物よりもシステムのほうが脆弱に仕上がります。何故でしょうか。

一つには、建物の図面を引くには建築士の資格が必要ですが、システムの設計に資格は必要ありません。

もう一つ、建物は、強度とかの内部構造はお客さんの知ったこっちゃない(建築基準を満たすことは義務付けられていますし)わけで、一方で設備とか間取りとかデザインは設計段階において目に見える形で提示されます。システム開発は、内部構造の基準もありませんし、目に見える部分もなんだかはっきりしませんよ。

さらに大きな違いがあります。建物は、建て始めちゃってから設計変更をするためには一回壊すことが必要ですが、システムは(一見)何も問題なく設計変更することができます。いや、できないんだけど、できます(ぉ

このような違いが悲惨な現場を生むのです。

トイレはいらない?

人の生活する建物を立てるのですから、必要最低限の設備というのは自動的に決まります。出入り口がなかったり、密閉されて呼吸が苦しかったり、30階建てなのにエレベーターついてないとか、そういうナンセンスな建物はまずありません。というか、絶対ありません。ましてやトイレがないなどと。というわけで、今後必要だけど足りないものをトイレにたとえることにします。

しかし、システム開発でままあるのは「トイレ?そんなのいらないってコンサルが言ってたよ!次世代インテリジェントビルなんだから!」なんてお客さんがいたりするところです。常識的に考えて、トイレがいらないわけないですよね。どんな無人ビルだそりゃ。

あと、お客さんもシステム屋さんも、図面にトイレが書かれていないのに気付かなかったりすることもあります。そりゃエンジニア失格なんだけど、いろんなことに振り回されるとつい些細なことを忘れてしまったりします。いや、些細じゃない!

上流工程のお仕事

というわけで、お客さんの要望を漏れなく汲み取り、あるいは常識的過ぎて忘れているものを思い出させてあげたり、インテリジェントな機能を提案したり、防犯対策や災害対策をきっちり考えたりすることが上流工程の仕事です。

上流工程が破綻する原因は色々ありますし、後になって気付く失敗もあります。

  • コンサルが出来ないことを出来ると言って仕事に仕立て上げた。「このビルは、空を飛べます!(嘘つきにもほどがある!)」
  • 営業が絶対出来ない予算で取って来た。「1億円あればできます!(土地代だけで1億超えるんだけど…)」
  • お客さんが何を作りたいか自分でもわかっていない。「うーんと、ほら、都庁みたいなアレ、アレが作って欲しいんだよ…(アレってなんだ?)」
  • ディテールにこだわるけど肝心なことが何一つ決まらない。「ロビーは大理石で、ドアノブは全部ホテルタイプで…(それより階数とか部屋数を決めようよ…)」
  • 絶対に必要なものを組み込むことを忘れていた。「(そういえば…トイレはどこ?)」
  • 業界では常識かも知れないけど一般的じゃなくて認識相違「客商売なんだから最後に4が付く部屋番号なんてダメに決まっているじゃないか!」
  • その他諸々

最初の二つはともかく、それ以降の話はSEの本分で、こういった問題を起こさず、何が必要なのか、自分の常識に囚われていないか、大事なものを見落としていないか、というのを探っていくのが仕事なのです。お客さんは基本的に素人ですから、システムに何が必要なのかを本当にはわかっていません。だから、目的をはっきりさせて、その実現方法をしっかり提示することが上流工程の仕事です。

でも、トイレいらなくね?

お客さんは、システムとして何が重要なのかわかりません。たとえ本来の目的(主に業務要件)ではなくても必要なもの(主に機能要件)というのはあります。これを忘れてしまうと大変なことになりますが、できるだけ安く作ろうということで、その大事なものがコスト削減の対象になっちゃったりします。いや、なくちゃダメなんだって。

その必要性をお客さんに認識させるのがエンジニアのコミュニケーションスキルの見せ所(そう、勘違いしてはいけませんが、SEに必要なコミュニケーションスキルとはお客さんと仲良くなることではなくて、大切なことを種々の手段で納得させることを指します)です。これがすごい大変。もう泣くほど大変。バカなお客さんも大変ですが、賢すぎるお客さんも大変です。あと、やたらこちらを信頼してくれるのはいいけどわからないことは教えてください…

というわけで、なんだかんだいって、トイレを図面に書くことが許されないこともあります。

配管工事くらいはしておこう

「じゃあいいよいらないんだろ!」なんて逆切れしてトイレのない建物をお客さんに渡してみたいものですが、システムは納品のときに検収やユーザーテストというものがあって、そこで欠陥が発見されると「こんなもの使えるか!」みたいに拒否られてしまうのです。なんと理不尽な!。で、大抵トイレがない建物のダメさ加減は使ってみれば気付くわけです。さて、お客さん、どうするか。「トイレがない建物なんて使えるわけがないだろ!」もはや逆切れです。言った言わないの水掛け論。先に言質をとっておけばよいのですが、お客さんに「トイレいらないんですね!一筆書いてください」なんて言えないこともあります。ああ、立場が弱い僕達。

でも、あとで言われるのなんてわかっているじゃないですか。水周りの工事なんて、一度やったら直すことは困難ですから、事前に拡張性の高い設計をしておくことでリスクを最小限にすることができます。

ああ、お客さんの声が聞こえてきますよ。「なんでトイレがないんだー」はいはい、何とかしますから。

ここで追加料金が取れるのがいいお客さんです。そりゃそうだよ、要らないって言ってハンコ押してんだから。

たまに、どうしても予算が取れなくて、とか、全部システム屋側のせいにしてお金を出さない客もいます。でも、そこで無償で対応しちゃうとシステムなんてそんなものって勘違いされるんですよね。そして、頑張ってしまって出来てしまうと、「ほら、できるじゃん」といわれてしまうのです。いや、確かに出来たけど、地上30階の非常口の向こうにロープを伝っていかないとたどり着けない空中トイレとか、行きます?

無理な拡張は建物全体の信頼性を落とす

というわけで、上流工程の失敗により、やたらと補修・拡張を繰り返す悲惨な建物。もはや当初のデザインは陰も形もなく、余分なところに予算を使ってしまったので入り口もずいぶんとみすぼらしくなりました。どうも隙間風とか雨漏りとかもしそうですし、上のフロアの騒音がダイレクトに響いてきます。あーあ。

おまけに、変な出っ張りとかがくっついているせいで風ですごくゆれるし、なんか変な共振みたいな音が聞こえます。

エレベーターもなんか引っかかる感じですし、非常階段の踊り場が書庫になってたりします。

ああっ、そのボタンは押しちゃダメなんです。ダメったらダメ!

それでもなんか感謝されてるよ

「いやあ、やっぱり新しい建物はいいねえ」そうですか。良かったです。でも、多分その建物は不便なんです。でも、満足してもらえたらいいんです。ただ、何人も工事中の事故で…残業して遅くなったら出ると思いますよ、何かが。


まだ他にも管理の問題とか、実力の問題(身の丈の問題)とか、いろんな問題が合わさってシステム開発はテンパります。でも、やっぱり一番大きいのは、どういうものを作りたいか、その為に何をしなければならないか、というのがイマイチわかりづらいということでしょう。これはシステム屋さんにおいても、お客さんにおいても同じです。SI事業者の、そしてSEの仕事というのは、要望をきちんと捉え、それを設計に落としていくことなのです。これを出来る能力というのを客観的に保障する指標がないことも原因ですし、出来上がってきた設計図から必要な要件が満たされていることを把握できない(設計書の問題もあるけれど、理解力の問題もある)ことも問題です。そして、安易に作り変えが出来ると思っていることが最大の間違いです。

きちんと、決めるべきことを決めるべき期限までに決めていくことが大切です。そして、追い詰められるとつい手抜き工事をしてしまいがちですから、余裕のあるスケジュールで仕事を進めるのが肝心です。

そんなに上手くいくものではありませんけれども、これからどんどんこういった点は改善されていくと思います。上流が上手くいけば下流だって楽に出来るんですよ。デスマーチなプロジェクトは大抵上流がメタメタです。下流だけの問題はアドホックな対応で何とかなるものです。作業者に恨まれないような仕事の進め方をしたいものですね。

興味があったら以下のような本も参考にしてみてください。

追記:フォローエントリ

今後書くフォローエントリはここに追記していきます。

その1:SI関連業界の諸君、共感してないで学生を呼び込もう! - novtan別館

*1:いろんな意味でね。

通りすがり通りすがり 2008/03/21 23:31 確かに言われることはわかるんだが、仕事を請け負った大企業のSEなんかは、あまりよくわかない子会社の派遣要員だったりして、はっきり言ってその道のプロではないのです。そういう人が上流の方をやってしまうと、プロジャクトがめちゃめちゃになるんです。大手銀行や証券会社などの大企業であれば、大手SE企業が直接指揮をとることになるでしょうが、現在では地方の案件は、大手SE会社の子会社が担当したりするわけです。そしたら、大規模な案件は初めてであったるするわけで、上流工程でもまか不思議な仕様書ができあがったりするわけです。そう考えると、SE業務も建築士のようにきちんと国家的な資格を作って、プロじゃないとやっちゃいけないようにしないと、顧客を納得させるシステムは作れないと思うのです。

JohannJohann 2008/03/22 03:30 >仕事を請け負った大企業のSEなんかは、あまりよくわかない子会社
>の派遣要員だったりして、はっきり言ってその道のプロではないのです。

的確な指摘だと思う。私はアメリカ在住だけど、日本見てて思うのは派遣社員
が多すぎるってこと。何で「**社」と話してるのに「■■社」から派遣され
てる人間が出てくる(しかもその事実はお客さんには知らされない)のか
分からん。

えーえー 2008/03/22 03:47 >仕事を請け負った大企業のSEなんかは、あまりよくわかない子会社
>の派遣要員だったりして、はっきり言ってその道のプロではないのです。

実情としては、子会社の派遣要員がその道のプロで、仕事を請け負った大企業にはプロは全くいないのが現実。

和パスタ和パスタ 2008/03/22 10:59 頼む側は長年その仕事に携わっているのだから良く知っているはずなのに、いざITシステムの段になるとトイレがいらないとか言い出す、これは一般人のITリテラシーがないことによる。
システム設計するやつはあっちの企業そっちの業界とやるから身につかないしトイレが必要とわかる前に設計しだすからめちゃめちゃ、そもそもいろんな業種を良く知りその上ITOKなんて完璧人間なんてあまりいません(そういう人がいるとこだけうまく言ってる、優秀な人間は1割り程度思われるが成功しているシステムが2割り程度のあたりに現れていると思う)。
必要なのはシステム側は普通の人でもできるように同じような業種内容をやり続けてられるように社会体制をとることが重要で、頼む側はやはり業務を主としつつシステム開発に継続的に関わり理解を深める(最上は社会に出る前にある程度は知っている程度になっている)ことが重要。
これは役人が内容わからずすぐ移動してしまって無責任非効率を生み出すのに似ている。

通りすがり通りすがり 2008/03/22 13:02 >実情としては、子会社の派遣要員がその道のプロで、仕事を請け負った大企業にはプロは全くいないのが現実。

東京などはそうかもしれないが、地方では、子会社が親会社の社名を使って、作ったこともないシステムを受注して、全く経験のない若手社員を担当にすることがしばしば見受けられるからね。

要するに、顧客には申し訳ないけど、社員の経験を積ませるために、そういう仕事をやらせているのが現状だ。そんな状態なら、普通プロがやれば陥らない問題が、当然のように起きてしまいデスマーチ当たり前になってしまう。会社の方も、若手がやった方が人件費も安いからね。こういう状況でシステムが作れないと、新聞で動かないシステムができて親会社が顧客から訴えられるわけだ。だから国が資格を認定してプロがやるようにしないと、いくらシステムの構築の技術的なことを述べても意味がないのである。あと、建築基準法のように、建造物を造る家で指針となる法律を作って、それによってやればきちんとシステムが作れるように国が動いた方がいい。まあ、コンピュータシステムは、建築物みたいに目に見えないから、なかなか難しいとは思うが。

別の通りすがり別の通りすがり 2008/03/22 13:33 本文はかなりよいと思いました。
上流のなんたるかを教えるのに適切な内容/比喩かと。
建築士の人とは初対面でも意気投合できて、同じ愚痴を言い合える不思議。
そういう意味でも似通ってる業界なんですよねぇ。

コメント欄の議論はパス。

とおりすがりとおりすがり 2008/03/22 23:37 「建築基準法のように、建造物を造る家で指針となる法律を作って、それによってやればきちんとシステムが作れるように国が動いた方がいい。」
これ良くある素人っぽいミスだと思うけど、それは絶対に止めた方がいい。そんな統一基準が存在しないのがSI業だし、仮にできたとしても国が動いて出来た頃にはおそらくその指針は既に時代遅れになっている。情報処理技術者試験なんて物笑いの種でしょ。それとおんなじ。

u2uniu2uni 2008/03/23 09:44 >仕事を請け負った大企業のSEなんかは、あまりよくわかない子会社
>の派遣要員だったりして、はっきり言ってその道のプロではないのです。

元請けと現場のエンジニアって、ものすごく温度差がありますからね。
とくに派遣とかフリーとかだと顕著ですよね。仕様の不整合を
「来月いっぱいまで出てこなければいい(表面化しない)」
と吐き捨てるような人がたくさんいますから^^;
そんな人と一緒に仕事をこなすこと自体が難しいですw

NOV1975NOV1975 2008/03/26 23:49 大変興味深い議論ありがとうございます。あとで別エントリとして触れたいと思います。

trshugutrshugu 2008/07/27 21:21 これは良エントリ。

>SEに必要なコミュニケーションスキルとはお客さんと仲良くなることではなくて

これは名言!

七誌七誌 2008/10/04 12:23 そもそも、請負とは単純かつ明確な作業を代行すること。(Aを殺せとか)
客先の業務を理解した上で、客ニーズに合わせたシステムを作るってのは、そもそも請け負えない業務。
(自分でSE雇って、作らせろ)

日本のSI会社の99%は偽装請負(客にはA社の人間ですといって、実はB社の多重出向、指揮命令系統も
他会社の社員から)であり、各々の会社で働いている人材もその犯罪に加担している犯罪者。

システム開発云々〜、コミュニケーションスキル云々〜、の前に犯罪。

明日、会社に行って仕事がんばると、頑張って犯罪おかしてることになる。

NOV1975NOV1975 2008/10/05 00:22 新しいエントリにコメントついたのかと思ったらいまさらこれかww
おかしい現場でしか仕事したことないなんてかわいそうですね。99%なわけない。

t2y-1979t2y-1979 2009/05/17 12:23 もっと今更で申し訳ないのですが、これは本当に良エントリですね(^ ^;;
「上流の方が楽だ」という認識を改めさせなければいけないですね。確かに顧客の相手をして、ドキュメントのチェックさえすれば、実際にコードを書かなくて良いので楽そうに見えます。実際、経験を積めば、作業そのものは楽かもしれません。しかし、実装者よりもシステムに対して、多大な責任を担っていることを勘違いしている人が多過ぎる気がします。そのシステム、顧客の要望を満たさなかったら上流の責任なんですよってところを、下流へ押し付ける傾向があるところがダメなんですよね。コードも書けないのに、その責任を担えるかどうかをよく考えてほしいと思います。

NOV1975NOV1975 2009/05/18 23:54 実際に上流の仕事をやっていると、物を作るほうがなんぼも楽だと思うことのほうが多いですよね。ものづくりが大変なのは計画がおかしいだけなんで、ちゃんと計画できていれば楽ですし。
そのあたり、お客さんの側も含めてきちんと意識づけをしたいものです。

nanobytenanobyte 2009/06/20 00:58 素晴らしい。とても分かり易い例えです。

NOV1975NOV1975 2009/06/20 11:16 本当はたとえ話に頼りたくないんですけど、何しろ僕たち何やっているのか正体不明ですからね。

おっぱりおっぱり 2012/12/14 20:44 昔流行った、顧客がほんとうに必要だったものを思い出しました。
http://2chart.fc2web.com/itkakumei/

通りすがり通りすがり 2014/07/17 20:26 なぜシステム開発はテンパるのか「下流工程は大変って聞きますが、上流は楽なんですよね?」とか聞いてくるような、低次元な学生が就職する先がSI業界だから。上流だの下流だの言ってる時点で既に終わってる。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証