プログラマなら、技術者なら、出来れば上を目指して欲しいと思うものの、世の中にあふれる仕事というのは、実はそれほど技術が要らない仕事がボリュームゾーンだったりするのだ。技術を身につけたところで、それを活かせる仕事が回ってこないことも多々あるんですよ。役不足と言う奴ね。*1
そう言う意味で下限に合わせたプログラム設計はシステム開発を停滞させる - @katzchang.contextsの総論には賛成なのだけど、しかし、僕の分析ではやはり業務システムのボリュームゾーン、つまり一番人手のかかる部分ってのはそれほど技術を要さないし、ある種の人海戦術的戦略はそれほど間違ってもいないということは言っておきたい。*2いや、現場の人間としては嫌なんだけどね。だってつまらないじゃん。同じことばかりやってもさ。技術的に閉塞感あるし。
複雑な処理がなければ手作業が必要な範囲って限られてくるはずだし、じゃぁ人手集めて手作業させることってそんなにいっぱいあるんだろうか、と思うんですよね。
「業務システムのボリュームゾーン」の中身の話 - @katzchang.contexts
ハンバーガーをひたすら焼くアルバイトをする人が日本に何人いることだろう?ハッピーセットだけで年間1億個ぐらい売れてるらしいけど、その他もろもろの億単位のハンバーガーたちは、お店でひとつひとつ手で焼かれているわけ。複雑ではない限られた範囲の手作業。ただし、人手を集めて沢山やらなければならない作業。そんなものの見本のような話だよね。*3
業務を行うためのシステムというのは、イメージしやすく言えば伝票などの書類の類をデジタルデータにして引き回す、という紙でやってることをデジタル化しました、みたいなのなんだけど*4業界に入って3年程度で一種類の伝票を取りまわすシステムぐらいは設計できるようになってもらいたいもの。*5
そして、その基礎の基礎を出来る人をたくさん集めて、いろんな種類の伝票を取りまわすシステムを人海戦術でくみ上げるというのがSIerの主たる業務と言ったところ。そこにはオブジェクト指向やらジェネリクス指向やらアスペクト指向やらの出番はほとんどなくて*6どんな項目があるか、それぞれの項目のデータ型はなにか、どういう条件でデータを取りまわすのか、おおよそSQL的な話に終始する。*7
そしてそここそが面倒で、機械化できなくて、頭数を必要とするボリュームゾーンであって、プログラミング技能がないPG/SE問題を差し置いたとしてもやっぱり省力化できない部分なのです。*8
開発プロセスはこうした部分の仕事を標準化し、チェック体制を敷いて品質を確保するような方向に向いていることが多い。*9伝票のあらゆる項目を網羅的に検索できるような全文検索エンジンを搭載したシステムにすればお客さんの問い合わせに即座に対応できるようになりますよ的なソリューションの提示は、こうした作業とは別次元の仕事だし、*10プロセス標準化によって解決できる話題でもない。*11
開発プロセスは施工をいかにうまく指揮するかの話題で、いかに魅力的なシステム提案をするかと言う話と両輪だとは思うけど、別の話題じゃないだろうか。システム開発のボリュームゾーンはそれほど難しくない、しかし、機械化できない書類仕事と簡単なプログラムなんだよ。*12
*1:本来の意味の役不足。役が不足している、つまりもっといい役をやらせろという割と傲慢な感じの魂の叫び
*2:事実としてゲーム理論的な最適戦略というのは悲しいかなテンプレート作っての人海戦術論のように思える
*3:この辺が機械化されてしまう時代もそう遠くないうちに来そうだけど
*4:もちろん、デジタルならではの工夫をすればより高度な設計技能が求められる
*5:3年目で小さなシステムを一通り作れるならコイツやるな、と思われるぐらいにIT業界は人材不足だ
*6:そういった出番があるのはむしろフレームワークといった共通部分のほうで、お膳立てが済んでいる環境下では意識する必要も薄い
*7:主にデータを取りまわすという意味で
*8:ここを機械化するには高度に人の事情を察知するAIが必要になる。むしろ人間がやっても読みが甘くて仕様がひっくりかえることが多々ある
*9:品質維持の部分はルール決めで底上げしやすい。そして現場ではその面倒から逃れるために骨抜きにしようと様々な工夫が凝らされる
*10:客から要求されもしない機能を欲しがらせ、カネを出させて作らせて、かつ感謝されるなんてのは商才に優れたアーキテクトでなくてはできますまい
*11:もちろん、それが広く周知の技術として普及すれば、まず考慮すべき事項としてプロセスの俎上に上がってくる可能性はある