見出し画像

何もかも完璧なシステムなんてないのである

顧客の要求を正しくとらえるのは難しい

 システム開発の難しさでよく紹介される絵がありますが、やっぱり、何年やっても難しいなと思います。

 しんどいわー。

 難しい理由はいくつかあるのですが、業務システムという観点から言うと、こんな感じ。

・顧客の要求自体が矛盾している(整理されていない)
・業務や背景を知らないと正しく伝わらないことが多い
・要求の取り違えが起きやすい
・システムのあらゆるケースを言語化することは不可能

 とくに、業務システムなんぞにいるとですねー。「こんなこと、当たり前でしょ?」ってよく聞くんですけどね。

 全然当たり前じゃないの。
 それ、あなたの部署のルールなの。
 その言葉、他の部署だと別の意味で使われているの。

漫画とか小説なんかで女性が「私の気持ちを全然わかってない!」とかありますけれど
適切に言語化しないでわかるわけないですよね

 なので、もめるのあたりまえなんすよ。

素朴な疑問を徹底的に追及する

 開発をしていると、「ん???」と思うことがあるわけです。
 そこで掘り下げると、結構致命的な矛盾や認識違いが見つかったりするんですけれど、これ結構情シス内部でも、経験が浅い人だったりすると「なんで?」って言われたりします。

 もう、自分たちの方で要求をまとめて合意までもらってるんだから、あとは作るだけなんだから面倒な確認なんかして掘り下げなくてもいいでしょっていう理屈ですね。

 わかるー。

 でもそれじゃあユーザとの信頼は確立できないし「本当に価値あるシステム」なんてできやしないのですよ。

大事なのは、システム開発の5ステップを正しく踏むこと

 実は、システム開発のプロセス自体は決まりきっていて、つきつめるとこの5ステップでしかありません。

 ただ、そこには「ヒト・モノ・カネ」の3つの要素が入ってきて、さらに「ビジネス」という要素が入ってくるので、難しいことになります。

1.ゴールを関係者間で定義する
2.ゴールをもとに要求を掘り下げる
3.要求を仕様化する
4.仕様に対して合意をもらう
5.製造したシステムの検証をする

 で、だいたいもめるシステムについて話を聞くと、1→2のところをおろそかにしているか、4.のところがきちんとできていないかどっちかですね。

 あと、残念ながら、上流工程の人と下流(製造)の人との認識齟齬なんていうものもよくあるし、技術が足りずに言われたことを作り切れないなんて言うこともある。

 さらに最近あるのは、外部のサービスを使ってるんだけど、そこで思っていたような性能が出なくて使い物にならなかったり、特定のユースケースに対応してなくてスクラッチで作らざるを得なくなったりとかね。

 だいたい、外部のシステムを使うというのは、製造は簡単になるんですけれど、上流側の方はハイレベルのスキル必要なんすよ。正しく理解しないといけないからね。

ビジネスは変わる、要求も変わる。

 あと事業会社の情シスで大事なことは「ビジネスは変わる」「要求は変わる」ということですね。

 情勢が変われば考え方は変わるし、要求は進化したりする。
 そのときにうまくさばけないと、システムが矛盾しておかしなものになったりするので、どう打ち返すかを考える必要があります。

 一方的に断っても「前向きじゃない」とか言われるし、
 出来上がったシステムが矛盾していたら怒られるしね。
 このあたりは、PMの腕の見せどころだと思います。

システム開発には絶対的な正解はない

 システム開発は、さまざまなフレームワークが用意されています。
開発プロセスだって決まってるしね。

 上流工程だって、成果物の定義はだいたい決まっているので、これを抑えて動けば、何かしら動くシステムは作れますよ。

 そのうえで問題は「ビジネスで成功する」ことがゴールだということで、誰か一人の人が「これやりたい」って言ったことを実現することがゴールじゃないってことですね。

 これが、いわゆるコーポレートエンジニアの難しいところでもあり、面白いところでもあるなあと思っています。

この記事が参加している募集

#仕事について話そう

110,303件

この記事が気に入ったらサポートをしてみませんか?