エンジニアはいったい誰のためにシステムを作るのか
勝手な想像なのだけれど、SIerの社内システムの方が顧客に収めるシステムより出来が悪いと思っている。
なぜそう思っているかと言えば、それは顧客のシステムを作る側のSIerのエンジニアは業務を聴くことは多くの経験をしているけれど自分の業務を一から設計したり、業務から要件を整理する機会がないから。あともう一つ、そういった素養を持っている可能性のあるエンジニアは優秀なだけに最初に顧客に囲われてしまうから。
そのような状況下で作られるシステムはどんなものになるかは語らずもがな。そう考えると顧客の存在はとっても意味があって、顧客はスポンサーでもあるし顧客の組織に対しての責を負うから顧客のプロジェクトマネージャは必死にSIerをコントロールしようとする。実現する要件の範囲にしかり、ドキュメントの種類や品質にしかり。
顧客のシステムを作るときは顧客に手綱を引かれるからひかれたままやるのだけれど、組織の中のシステムになった途端に手綱を引く第三者の存在がなくなるからどうしても甘えてしまう。要件定義しかり、アーキテクチャ設計しかり、プログラミングしかり、テストしかり。
作ったほうはそれでよいと思って作ったからたちが悪い。だから利用者はなんでそんなシステムに出来上がっているのかさっぱり理解することができない。理解しようとしても設計資料を見ることもできないし、最悪はドキュメントすらなかったりする。そして、その作ったエンジニアは頃合いをみて客先に出てしまう。
甚だ疑問なのだ。システム化する業務の要件から押さえようとしていたのだろうか。そもそもきちんと業務のオーナーに業務の目的を聴いて何をしているか、何を機械化すればいいかを聞き取れているのだろうか。ドキュメントだって何の目的でそのドキュメント様式を選定し、どのタイミングで何を作るかなどごく当たり前のことを当たり前のように決めて、やっているのだろうか。
得てして、システムは使われなくなる。まだ使いにくくても使えるならましだ。それより使われないシステムを作ることの方が罪が重い。だって、システムを作るということは他所で稼いできた利益を消費することなのだから。使いにくいなら使いやすくすることもできるけれど、使えない使われないシステムなら利益をどぶに捨てるようなものだ。外で顧客のプロジェクトマネージャに手綱を引かれながらもアウトプットしているエンジニアのことを思えばそんなシステムを作るなんてワタシには信じられない。
そんなシステムしか作れないエンジニアに顧客のシステムを作らせようとすることもぞっとする。
システムは一体誰のために作るのか。そのバジェットはだれが供出してくれるのか。そのバジェットを1円でも無駄にしないシステムを作るにはどうしたらいいか。誰のためのシステムを作るかはシステムを作るのが目的ではなく業務をシステムで視覚化する過程で業務をシンプルに作り替えることでもあるのだ。
システムを作ることは当たり前のことを当たり前のようにすることでしかなく、それができないのであればエンジニアはやめた方がいい。当たり前のことを当たり前のようにやり続けることは実は難しいのだが、それでも自分の技術を誰かのために使うかをいつでも応えられるようにしておきたい。