(背景)

慢性的な技能不足

システムを開発する技術者は誰も慢性的に技能が不足している。

 

システム開発の技術は絶えず新しいものが出現する。現在までに、多くの人や組織がさまざまな技術を確立させてきた。

 

コンピューターメーカーは大きさも、性能もさまざまのコンピューターを生み出した。それにより、コンピューターの種類はスーパーコンピューター、メインフレーム、ワークステーション、パーソナルコンピューター、サーバーなどに分かれた。そして、コンピューターはシステムの材料、システムを開発するための設備や道具としてさまざまな用途に対応するようになった。たとえば、メインフレームは企業の基幹業務システムの中核を成している。

 

アラン・ケイのようなコンピューター科学者、コンピューターメーカー、AT&Tのベル研究所のような企業の研究機関はソフトウェアを設計したり、製造したりする技法を考案した。それにより、いくつかのソフトウェア設計技法とさまざまなプログラミング言語が確立した。

 

コンピューターメーカー、ソフトウェアメーカー、企業の研究機関はコンピューターに搭載されるいくつかのオペレーティングシステムを生み出した。IBMはOS/360を、マイクロソフトはWindowsを、AT&Tのベル研究所はUNIXを生み出した。それにより、それらのオペレーティングシステムを使ってソフトウェアを実行する方法が確立した。

 

システムを開発する技術者や組織は開発手順の慣行としてウォーターフォール・モデルを確立させた。

 

コンピューターメーカー、ソフトウェアメーカー、ASF(Apacheソフトウェア財団)のような非営利団体はシステムの材料やシステム開発の道具となるさまざまなソフトウェアを生み出した。データベース管理システム、アプリケーションサーバー、統合開発環境などが誕生した。それにより、それらのソフトウェアを組み込んでシステムを動作させたり、それらのソフトウェアを利用してシステムを開発したりする方法が確立した。

 

コンピューターメーカー、ISO(国際標準化機構)やW3C(ワールド・ワイド・ウェブ・コンソーシアム)のような標準化団体はデータの形式を定義するいくつかの言語を考案した。

 

経営学者は企業などの組織がシステムを導入して能力を高めるさまざまな方法を考案した。DSS(意思決定支援システム)、SIS(戦略的情報システム)、BPR(ビジネスプロセス・リエンジニアリング)、SCM(サプライチェーン・マネージメント)、DWH(データウェアハウス)が提唱された。

 

ソフトウェア技術者はシステムへの要求、システムの機能、ソフトウェアの構造を表す図を作成する技法を考案し、UML(統一モデリング言語)が策定された。非営利団体のPMI(プロジェクトマネジメント協会)はシステム開発や他のプロジェクトを管理する手法であるPMBOK(プロジェクト管理の知識体系)を取りまとめた。

 

システムを開発する一部の技術者たちは現実主義の性格を帯び、融通性に富んだシステム開発のスタイルを考案し、アジャイルソフトウェア開発を提唱した。彼らはシステムへの要求の明確化、業務ソフトウェアの製造、システムの試験など、一通りの作業を繰り返して行うことを強調した。彼らは、システムは何回か作り直されなければ有用なものにならないことを認めたのである。

 

ISOなどの標準化団体はさまざまな技術を修正して世界共通の規定に引き上げた。コンピューターメーカーやソフトウェアメーカーは製品を供給することによってさまざまな技術を広めた。技術の情報を伝える出版物やウェブサイトはさまざまな技術を紹介して広めた。

 

システム開発の技術は新しいものの確立によって刷新され、変化していく。新しい技術はシステムやシステム開発のあり方を巡る人々の思想が変化すると、新しい思想を反映して確立する。

 

システム開発はシステムを導入する組織、コンピューターメーカー、ソフト会社とそれらの組織の技術者によって行なわれる。システム開発はプロジェクトとして行われ、技術者たちはプロジェクトチームを形成する。プロジェクトチームはどこも常に新しい技術を取り入れている。新しい技術はシステムを開発する技術者や組織によってプロジェクトに持ち込まれる。彼らは流行に巻き込まれて新しい技術を扱い始める。

 

新しい技術はコンピューターメーカーやソフトウェアメーカーによるそれに合う製品の供給、出版物やウェブサイトによるそれの紹介、システムを開発する技術者や組織によるそれの採用が連鎖反応のように次から次へと続くことによって流行する。たとえば、クライアントサーバーモデルはそうして流行した。クライアントサーバーモデルはシステムを多数のコンピューターによって構成する方法の一つであり、ダウンサイジングを可能にした。ダウンサイジングとはより小さいコンピューターを材料としてシステムを作ることである。

 

コンピューターメーカーやソフトウェアメーカーは競争相手の同業者よりも先にクライアントサーバーシステムの市場を開拓しようとした。それらの組織は新しい市場を占有することによって競争相手の同業者に対して優位に立とうとしたのである。

 

サン・マイクロシステムズなどのコンピューターメーカーは小型に近い大きさのコンピューターであるワークステーションにUNIXを搭載したものを供給していた。UNIXが搭載されたワークステーションはGUI(グラフィカルユーザーインターフェース)を提供したり、他のコンピューターと通信したりすることができた。オラクルなどのソフトウェアメーカーはデータベース管理システムを供給していた。ワークステーションとデータベース管理システムはクライアントサーバーシステムを作るのに役立った。だから、コンピューターメーカーやソフトウェアメーカーはそれらの製品をクライアントサーバーシステムの材料として供給するようになっていった。

 

出版社は競争相手の同業者よりも先にクライアントサーバーモデルの情報の市場を開拓しようとした。出版社も新しい市場を占有することによって競争相手の同業者に対して優位に立とうとした。技術の情報を伝える出版物はクライアントサーバーモデルを紹介した。また、出版物はクライアントサーバーモデルに関連する技術としてプログラミング言語のC言語、GUIの制御や通信を指定するプログラムの書き方、データベース操作言語のSQLなどを紹介した。

 

システムを開発する技術者や組織は競争相手の同業者よりも先にクライアントサーバーシステムを開発する能力を獲得しようとした。彼らはまれな能力を示すことによって競争相手の同業者に対して優位に立とうとしたのである。システムを開発する技術者や組織はクライアントサーバーモデルが紹介されたり、それに合う製品が供給されたりすると、クライアントサーバーシステムの開発に乗り出した。コンピューターメーカーやソフト会社は多数のメーカーが供給するコンピューターやソフトウェアを統合してシステムを作ることに力を入れた。技術者はクライアントサーバーモデルに関連する技術であるC言語、GUIの制御や通信を指定するプログラムの書き方、SQLなどを扱うようになった。

 

システムを開発する技術者や組織はまた協力する他者に倣ってクライアントサーバーシステムを開発するようになった。彼らは協力する他者に同調しようとしたのである。

 

コンピューターメーカー、ソフトウェアメーカー、出版社はクライアントサーバーモデルが他の組織によって広められると、それに便乗しようとした。コンピューターメーカーは小型のコンピューターであるパーソナルコンピューターを、マイクロソフトはパーソナルコンピューターに搭載されるWindowsを改良した。それにより、パーソナルコンピューターは高度なGUIを提供したり、他のコンピューターと通信したりできるようになり、クライアントサーバーシステムの材料となった。また、コンピューターメーカーはサーバーを生み出した。サーバーはワークステーションよりもさらにクライアントサーバーモデルに合っていた。多くの出版物がクライアントサーバーモデルやそれに関連する技術を取り上げた。

 

システムを開発する技術者や組織はクライアントサーバーモデルの紹介やそれに合う製品の供給が活発になると、ますますクライアントサーバーシステムを作るようになった。

 

新しい技術は奇抜なファッションのように人々に強い印象を与えるから流行するのでない。ある技術が流行するのはそれが有用だからである。企業などの組織はダウンサイジングを可能にするクライアントサーバーモデルを採用すれば気軽にシステムを導入することができた。だから、クライアントサーバーモデルは流行した。(新しい技術の広まりが大げさな広告と過剰な期待によって騒々しく、衝動的になりやすいことも否定できない。)

 

新しい技術はクライアントサーバーモデル、C言語、GUIの制御や通信を指定するプログラムの書き方、SQLなどがそうであったように、いくつものものが一体となって流行する。そのため、プロジェクトチームはどこもいくつもの新技術を一遍に取り入れる。

技術者はプロジェクトチームが取り入れる新技術を扱い切れない。

 

一般の技術者は一人または数人でシステムの一部を担当する。販売管理システムを開発するとすれば、彼らは受注管理、出荷管理、売上管理、請求管理などの業務の一つを担当する。そうして、彼らはシステムへの要求の明確化、業務ソフトウェアの製造などの作業を行う。

 

一般の技術者はシステムを導入する組織の特定の業務しか理解しない。しかし、彼らは幅広い技術を扱って作業し、その業務を行なうためのシステムの機能を完成させる。

 

プロジェクトのリーダーとなる技術者は一人または数人でシステムの全体を担当する。販売管理システムを開発するとすれば、彼らは受注管理、出荷管理、売上管理、請求管理などの業務の全てを担当する。そうして、彼らはシステムへの要求の明確化、システムの材料となるコンピューターやソフトウェアの選定、プロジェクト管理などの作業を行う。

 

プロジェクトのリーダーとなる技術者はシステムを導入する組織の幅広い業務を理解する。しかし、彼らはその業務を行なうためのシステムの機能を自ら完成させるわけでなく、一般の技術者ほど幅広い技術を扱わない。たとえば、彼らはソフトウェアを製造する技術を扱わない。

 

一般の技術者はプロジェクトチームが取り入れる技術のほとんどを扱わなければならない。プロジェクトのリーダーとなる技術者はシステムを導入する組織の幅広い業務を理解し、そのうえプロジェクトチームが取り入れる技術の一部を扱わなければならない。だから、技術者はプロジェクトチームが新しい技術を次々に取り入れると、それを詳しく知ることができなくなって技能不足に陥ってしまう。

 

技術者は技能が不足するとプロジェクトを遅らせる。技術者は技能が不足するとしばしば遭遇する課題や事態に当惑し、作業を行き詰まらせる。たとえば、彼はある条件に当て嵌まるデータを抜き出すためのSQL文を上手く書けないことがある。そのようなとき、技術者は技術の情報を調べ、遭遇した課題や事態への対策を模索する。しかし、彼は不確かな予想に基づいてそれを行う。人は自身が何を知らないかを知らないのである。だから、技術者は対策の特定に手間を掛け、なかなか課題や事態を処理できない。そうして、彼は作業を遅らせ、それによってプロジェクトを遅らせる。

 

プロジェクトが遅れる原因として最初に挙げなければならないのはシステムを導入する組織、コンピューターメーカー、ソフト会社が十分な人員と時間を確保しないことである。技術者の技能の不足はまだ罪が軽いが、やはり多くのプロジェクトを遅らせている。

 

どのような技術もシステム開発を成功に導くために考案される。しかし、新しい技術が出現しすぎると、技術者は技能が不足し、システム開発は鈍重化する。