日経XTECHのオンライン記事を読んでいると、「大規模開発に「技術者」はほぼ皆無、オーバーヘッダーズとコーダーに成り下がるな」という記事が公開されていました。
大規模なプロジェクトではプロジェクトマネージャーを頂点に何層ものプロジェクトリーダーやチームリーダーを配した管理階層が形成されるので、大勢の「コーダー」が実際の手を動かしてコーディング作業を担うことになり、そこには技術者がほとんどいないという主張です。
その中の一つのグループが、現場監督を司る「オーバーヘッダーズ」、もう一つのグループが「コーダー」だと主張し、コーダーは「システムをエンジニアリングする技術者ではない。工場の労働者と同じ位置づけのコーディング作業員である」としています。
ただ、この主張は大きく事実を誤認しているように思えてなりません。銀行や各事業を支える基幹系システムや社会インフラを担う多くのコンピューターシステムを愚弄する記事だと思います。
要件定義や設計をしている人
この記事では「オーバーヘッダーズ」と「コーダー」に二分していますが、これ以外に大きな作業量を占めているのに、お客様から要件を確認して要件定義をする人、定義された要件からシステム基盤の上で実装できるように設計という工程があります。
大規模システムはすでに事務処理の仕方が決まっていて、単純にプログラムを作成するだけのように記事では読めますが、そんなことはありません。「システム」に実装する上では、主要な処理がデータベースに効率よくアクセスできるように、データベースの設計やプログラムの構成を決めていかなくてはいけません。もしかすると、手作業で実施していたときの事務処理のやり方よりも、システムに載せるためには効率的な運用方法に変更することをお客様に提案することもあります。
また、そのシステムの業務特性から考えて、保守性を高めるためにどうするか、信頼性を高めるためにどうするかといった検討要素もあります。
単純に今の事務処理をそのままシステムに載せようとすると、処理時間が圧倒的に増えてしまったり、ハードウェアの量がとてつもなく増えてしまったりしましす。技術者がいないままにシステムを作ると、必要な性能が出なかったり、ハードウェアが足りなくなってしまったり、後工程でアーキテクチャを全面的に見直してコストが大幅に増えたりするプロジェクトが多いことはそのためです。
要件定義や設計をした人はプログラムを作っている期間に試験の準備をして、出来上がったプログラムを構築された基盤の上で試験をします。試験では設計(機能面、非機能面)した通りにプログラムが走行するかどうかや、お客様が期待している要件を満足しているか否かを確認します。
このような一連の要件定義や設計作業を、この記事の筆者は「オーバーヘッダーズ」としてひとくくりにしているのでしょうか。
コーダーの役割
残念ながらプログラムをコーディングする作業は、上から言われたままにただプログラムを記述するという状況になっていません。もしも、これが出来るのであれば、設計が終わっていればプログラムは自動的に生産されて、コーダーは必要なくなるはずです。
実際にプログラムの自動作成の技術は進んでいますが、これは設計書をプログラムが自動生成できるレベルまで詳細化して書くことによって実現しています。したがって、製造の工数は下がりますが、設計の工数は上がる傾向にあります。トータルとしては、プログラムを作成するときに人為的なミスが混入する可能性がなくなるため、このミスを摘出する作業(単体試験)や修復する作業分の工数が削減される傾向があります。したがって、プログラムを自動生成しているプロジェクトでも、プログラム自動生成が可能なレベルまで設計を詳細化していく中でプログラムを作成する技術を持っている人に携わってもらうことが多いです。
プログラムの自動生成を選択していないプロジェクトでは、プログラムを作成する人が設計しなければいけない要素があります。設計された機能を実現するために、どんなロジックで実装するかという技術です。これをあたかも工場のベルトコンベアのような創造性を必要されない作業だと、記事の筆者は誤解しているのではないでしょうか。
日経XTECHの記事が言いたいことは?
最後に、「さて、いつもの極言暴論と少しニュアンスが違うことにお気づきだろうか。いつもなら「とっとと転職せよ」とあおるところだが、今回は「大規模プロジェクトに関わるな」でとどめておいた」と書かれています。この筆者は、インフラを支える大規模システムに従事する人を少しでも減らして、社会を混乱に陥れたいのであろうか?
こんなに非建設的な妄想を記事にしたためるのであれば、どうすれば大規模なシステムのプロジェクトがより魅力的になるのか、もっと建設的なことを主張できないのであろうか?と思います。
人月商売の多重請負構造を脱却するために何を変えなければいけないのか、やはり、どのくらいのサービスであればどの程度の費用がかかるかという常識を社会に浸透させていくことが大事だと思います。
最近、サブスクリプションサービスが一般的になり、例えば、音楽を1ヶ月聞き放題のサービスであれば月額1000円程度が相場だと消費者は判っています。このような常識が進化して、従業員3万人規模の会社が利用する財務会計システムであれば、月額150万円等の相場観が根付いていくことが大切だと思います。
最後まで値付けが難しいのは、一品オーダーの同じものが他にない(例えば、鉄道のチケット予約)システムのサービス提供はいくらくらいが適正値かということでしょう。このようなところに相場観が根付いていくと、見積もりを人月で提出する習慣が無くなっていくのではないかと思います。
また、多重請負構造をなくすためには、一時的に急峻に携わる人が増えるような開発をなくしていかなくてはいけません。日本の雇用システムではある期間だけ急速に正社員の数を増やすことができないためです。
古いシステムを一気に新システムに切り替える、例えば、みずほ銀行のシステム刷新のような工事だとある期間だけ必要要員数が跳ね上がってしまいます。このような工事をいかに平準化するか、たとえば段階的な更改にする等、策を具体的に落としていかなくてはいけません。このような建設的な議論を進めていくことが日経XTECHにとって必要なことなのだと思います。
コメント