日本の上流・下流の分離構造には確かに多くの問題点があり、欧米を見習って一刻も早くこうした構造を解消すべきだという主張を時折目にするのですが、私としてはそのような論調にも若干無理があるのではないかと思っています。結局のところ、スキルの低い人間が質の悪い仕事をすることが問題なのであって、それは上流と下流の垣根がなくなったからといってたちどころに問題が解消される類いのものではないと思うのです。
上流から下流までを一人で担当するわけですから、当然必要とされる技能・技量はぐんと上がります。一人前になるまでの道のりは遠く、結果として質の低い仕事をしている状態が今まで以上に長くなることでしょう。特に上流設計の質の悪さは、そのソフトウェアの商品価値や戦略的資産としての有益性において致命的です。上流設計は下流と比べ、より多くの目的や意図を持ち、その品質は下流工程にも影響を及ぼします。スキルレベルの高い人間が上流から下流までを担当する分には何も問題はありませんが(むしろ良い方向に向かう)、低スキル者が上流までを担当することで、その人の質の悪い仕事がソフトウェアに与える影響は恐ろしく拡大してしまいます。極端なまでに製品(サービス)の品質を求められる日本の社会においては失敗が許されません。企業としてもこのような人材を抱えることができなくなってしまい、今でさえ難しい状況にある人材の確保の面でさらに困難を極めることになってしまうのではないでしょうか。
日本特有の分離構造はこのような背景の下に、生まれるべくして生まれたものだと思います。少なくとも上流に優秀な人材を配置することで低スキル者の影響を局所化するというメリットがあり、全体のスキルレベルになるべく左右されることなく、ソフトウェアの有益性を確保することに適した組織構造なのです。また作業範囲を分担することで個々の専門性が増し、きめの細かい作業が可能になるという特徴も持っています。上流工程と下流工程にはそれぞれ必要とされるスキルに差異があり、例えばプログラミングが得意だからといって機能要件整理が得意であるとはかぎりませんが、1つの分野に特化した職人的な仕事をする人をたくさん雇うことができます。この場合個々の連携が非常に重要となってきますが、チームプレイを得意とする日本においては有効な組織構造と言えるでしょう。
分離構造の解消を訴える方の主たる要旨は、上流従事者のプログラミングに関わるスキルのなさを問題視しているように思います。確かにこのような組織構造は、下流の知識が著しく低い上流従事者を数多く生み出す要因となっています。とは言え前述のようにそれなりの原因があってこうした構造が生まれたのであり、いまさらガラガラポンと世界が変わることは難しいような気がします。やはり問題の本質は上流従事者のスキルレベルであり、プログラミング周辺の手法や新技術の習得、下流工程で発生する問題を吸い上げる能力をきちんと身につけることで、ほとんどの問題は改善されるのではないでしょうか。
またよく耳にするのが、下流従事者の地位が低いせいでより重要な工程に対して意見が通らない、という話です。特に上流と下流で会社が分かれる請負構造となっている世界では、日常茶飯事的に聞かれる話でしょう。しかしこれは単純に地位うんぬんだけの問題ではなく、上流側の能力的・体質的・人事的・経営戦略的な都合に合わさざるを得ない下流側の事情であったり力量の話であり、分離構造上の問題というよりも発注者と受注者、上司と部下といった主・従の関係によるところが大きいと思います。
そもそも上流と下流の線引きはプロジェクトによっても異なりますし、優れたIT技術者を目指すプログラマはおのずと上流に目線がいくので、そういった方は上流にも下流にも精通する技術者となり、欧米で言うところの「プログラマ」とほぼ同等のスキルを持ってそれなりのポジションで仕事をしており、日本でも中小規模のプロジェクトではそういった方が案外多いのではないかなと思います。どちらかというとプログラマ自身の向上心や目指すキャリアパスの違いといった要因が少なからず影響しているのではないでしょうか。
参考: SE・PGと上流・下流
コメント