[SCだより 106号]

(第24回)

 生産性(一人当たりのコード行数で測った場合)は、最高のソフトウェア技術者と最低のソフトウェア技術者とでは25倍もの開きがある。品質(1000行あたりに見つかったバグの数で測った場合)は、最高のソフトウェア技術者と最低のソフトウェア技術者とでは10倍もの開きがある。

(201の鉄則:原理141<管理の原理=ソフトウェア技術者の能力差は大きい>)

― 解  説 ―

 生産性が25倍・・・現役のソフトウェア技術者にとってなんと耳の痛い話しです。というよりも想像がつかないのではないでしょうか。単純に考えれば、最高のソフトウェア技術者の方では3ヶ月で終わるのに対して、75ヶ月も掛かってしまうということになりますが、実際には、この25倍というのは個人の能力差であって、チームではもう少し低くなり、個人の能力は、ある程度はその中に吸収されてしまいます。それでも全体として3〜5倍の差になってしまうことはあります。私自身、個人のレベルで実際に25倍の差という状況を体験したことはありませんが、10倍程度の差は感じたことがあります。10倍も差があるとほとんどデスマーチの状態になってしまいます。そして、いつまでもその状態であるがゆえに、個人も組織もますます生産性が悪くなっていくのです。もちろん、そのような状況では品質も良いはずがありません。

どこで差がつくのか

 なぜそんなに時間が掛かるのか。ソフトウェアの開発作業には、いろんな作業要素が含まれています。大雑把に見ても、要求を聞き出しまとめる作業。要求を効率良く実現するための適切なアーキテクチャを考える作業。そのアーキテクチャに従ってシステムの構成を考える作業。構成に従ってシステムを設計する作業。その設計通りにコード化する作業。それぞれの作業の成果物の欠陥を見つけるためのレビュー。要求どおりに実現していることを確かめる作業。途中での要求の変更に対応する作業。さらには、それらの作業を予定通りに進める為の計画を考える作業もあれば、計画の変更が迫られたときの作業もあります。そしてそれらの作業を円滑に進めるための技術が、それぞれの作業に応じて存在しているのです。

 たとえば設計手法は、設計の工程に有効な技術であって、それ以外の工程にはあまり有効ではないため、いろんな技術を持っていなければならないのです。こうした多くの工程を上手くこなしていくための技術や方法を持っている人と持っていない人とでは、生産性に大きな差が開くことになるのです。

やり直しの差

 ところで、実際に作業が遅れていく状況を見ていると、殆どが無造作に「やり直し」作業を繰り返しています。それぞれの作業が、ことごとく中途半端に終わって?いるのです。

 例えば、要求が「仕様」として殆どまとめられていないか、大雑把に「要求」のまま示され、いろいろな実行上の制約やエラー条件などが決められないまま設計作業に突入しているのです。決めるべき人が決めていないか、誰が決めるか決まっていないのでしょう。

 そうなると、設計者が要求や仕様を勝手に想像して作業を進めるしかなく、エラー処理や細かな処理条件などが手付かずのまま放置されるか、勝手に設計されてしまいます。当然、この後に待っているのは「やり直し」作業です。このままでは、作業が前に進まないと分かったとき、あるいはテスト作業に入って、これでは困るという判定が示されたときになって、関係者との「調整」作業が行なわれるのですが、設計者はそうなることが分かっているものです。

要求の忍び込み

 最も大きなやり直し作業に繋がるのが、要求の忍び込み、あるいは機能の忍び込みというものです。初期の要求分析の詰めが甘く、必要な機能を見落としたことで、後になって大きな仕様の変更が必要になってきます。また、設計作業を進めていく中で、設計者から出された機能の変更要求の影響範囲の検討を省いたため、後になって多くの機能変更や追加が必要な事が判明します。この時などは、最初の変更を元に戻せるような進め方を指示していないため、結局は、次々と仕様を追加していくしかなくなります。こうなると「ドロ沼」です。

設計の手抜き

 これに対して品質の差というのは、一般に、適切な設計作業が行なわれていないことから生じます。適切な設計が行なわれない理由には、もちろん要求の把握の曖昧さも含まれます。最初から必要な機能や性能が正しく認識されていないのですから、そこで行なわれる設計作業自体、バグを埋め込む作業に他ならないわけです。

 その次に、設計技術の未熟さが挙げられます。適切な設計技術を持たないということは、求められている要求(仕様)を効率よく実現するための作業ステップを持っていないということです。まともな設計書も書かないで、直接、ソースを打ち込んでいく作業には、分析も設計もインプリメントも全部混ぜられています。そのため、どの「行為」が悪かったのか全く判断できません。当然、相当のバグが入り込むことは避けられないのですが、「プロセス」が見えないため、改善の糸口が掴めないわけです。言い換えれば、大工としての能力を持たない人に家を建てさせているようなものです。

優れたエンジニアが育たない

 結局、このような作業のスタイルを持っている組織では、頻発するバグや仕様の変更によってやり直し作業が繰り返され、関係者全員が効率の悪い作業のやり方に引きずられてしまいます。そうして「時間がない」というパターンにはまり込んでしまうわけです。

 最初に触れたように、ソフトウェアの開発を効率良く進めるには、それぞれの作業ステージを上手く進めるために必要な技術や方法を身に付けなければなりません。「分析・設計手法」が有効な作業ステージは、全体の2〜4割程度であって、それだけでソフトウェアの開発が上手く行くわけではありません。もっと、多くの作業ステージに応じた技術を身に付けなければなりません。そうでない限り、25倍もの差をつけられてしまうことになります。

 是非とも、「CMM」の「レベル1から2」で提案されているようなテーマに取り組んで、「時間がない」パターンから脱出してください。そうでなければ、何も始まりません。


“SCだより”のページに戻る


(第106号分)

急増する自殺者

−年間2万4千人超−

▼先月、1997年の1年間の自殺者の統計が発表された。それによると前年比1287人増の2万4391人に達したという。中でも、自営業者と管理職の自殺の伸び率が8%前後で全体の伸び率を上回っていて、不況とリストラの広がりをそのまま反映している。女性に比べて男性が2倍以上というのも、行き場を塞がれた男性の姿がそこにある。

▼一方、被雇用者の自殺も 6.0%増の5696人に達しており、この中には所謂「過労自殺」も千人近くいるものと思われる。過労自殺の多くは「職のミスマッチ」に起因している。「職」が標準化されていない現状では、このミスマッチを避けることは容易ではない。

▼日本では、一般に「神との契約」という考えがないことも、八方塞がりの状態に陥ったとき自殺が選択肢の一つになりやすい。目の前の仕事をこなす方法や、必要な技術を持ちあわせないまま、その仕事に就いていることが問題なのである。その仕事に就くなら、必要な技術と仕事の仕方を身に付けなければならないし、そうでない人にそのような仕事に就かせてはいけない。もっともこのとき失業の問題が発生するが、それでも再生の道はある。

▼景気の回復の兆しが見えない状況にあって、失業する勇気が無ければ、この種の自殺は防げないかもしれない。失業は人生の終着駅ではなく再生の始まりと考えるぐらいでないと難しいかもしれない。特に、トップの1回の判断ミスで事業が破綻する可能性が高まっている今日では、失業の場面に遭遇する機会が増えることが予想される。このような時代にあって、少しでも早く自殺以外の人生の選択肢を手に入れておく必要がある。


“SCだより”のページに戻る


 第89回

学ぶ習慣


 文部省の諮問機関である大学審議会が、1年間に履修する単位数に上限を設ける方向で答申を出すという。就職協定の廃止もあって、学生の就職活動が早まり、最近では4年間の必要な単位を3年までに取ってしまい、最後の1年間は「就職活動」に専念する状況が見られるという。それだけ簡単に必要な単位が取れるということでもある。

 逆に、1時限の授業の為に、最低2時間の予習と復習が必要だとすれば、学生が1年間に履修できる単位数は、自ずと制限されることになるが、審議会がこのような答申を出すということは、現実にはそうなってはいないのだろう。授業に出ていない時間の殆どをアルバイトに使っても卒業できるという状況が、それを物語っている。

 ▼▼ 2つの問題

 このように必要な単位が簡単に取れる状況にあっては2つの問題が考えられる。

 1つは、基礎学力が不足したまま卒業してしまうこと。実際、日本では情報処理系を卒業してきたといっても、データ構造やアルゴリズム、ソフトウェア・エンジニアリング全般についての知識は殆ど身についていない。彼らの多くは、習った記憶はあるというが、そのことが、逆に彼らの向上心の障害となっている。

 職場では、彼らは既にソウトウェアの開発に必要な基礎知識を修得しているものとして扱われる。現場に回ったあとは、当然“それなりに”出来ることが期待される。だが現実には、基礎知識は不足していて、目の前の問題(仕事)に上手く対応できない。周囲の冷ややかな視線を感じながら、彼は最初からデスマーチの中に放り込まれることになる。中途半端な知識で解決方法を持たないことが、彼を窮地に追い込むことになるが、そこにはもう一つの問題が絡んでくる。

 2つ目の問題は、予習も復習も無しに安易に単位が取れることで、「学ぶ習慣」を身に付けないまま卒業してしまうことである。実はこの方が問題としては根が深い。彼らには「授業に出席する」だけという習慣が身についているようにも思える。私がソフトウェア・エンジニアリングや、CMMなどの開発手法のセミナーを実施していても、「聞いている」だけで「学ぶ習慣」が欠けている様子が良く見える。

 ▼▼ 学ぶ行為が身に付かない

この状況をもう少し具体的に言うと、2つのパターンがあって、1つは「授業に出席するだけ」というパターンで、もう1つは適当に「レポートで切り抜ける」というパターンである。4年という時間を使って身に付けたのがこの2つだとすれば、悲しい話しである。大学はそれでも卒業できたかも知れないが、人生はそれでは卒業できない可能性が高いことに早く気付くべきだ。

 大学の単位履修条件が甘いために、人生に最も重要な時期に、「学ぶ」という大事な習慣を身に付け損ねたとすれば、笑い事では済まない。特に、会社に入って仕事に就いたあとは、「学ぶ」習慣を持っていないことは致命的な問題を引き起こしかねない。自分の周りに優れた仕事の仕方をする人がいても、その人から何も学べないし、技術が向上しないのである。

 社内セミナーなどの機会があって「教わる」ことがあっても、そこで教わることが出来るのは受け手がその時点で消化できる範囲に限られる。「学ぶ」姿勢によって自ら学習しないかぎり、実際には殆ど何も手に入れることは出来ない。

 別の言い方をすれば、手法や技法を「本」などの媒体を通じて何かを手に入れようと言う場合、そこに文字になっていることは、書き手の伝えたいことの一部であり、しかも読み手が一度読んで手に入るのは、そのまた一部である。ここにも本から「学ぶ」という姿勢とその方法を持っていなければ、重要なことは殆ど手に入らない

 ▼▼ アメリカの状況

 アメリカでは、コンピュータ・サイエンスのカリキュラムはACMという組織が用意している。その中の専門家になるためのコースを選択すると、とてもアルバイトは出来ない。一時限の授業に対して2〜3時間の予習と復習が必要になる。しかもコンピュータ・サイエンスだけでも数科目選択しなければ間に合わない。

 最近、アジアの通貨が下がったことで、アメリカに留学する子供への仕送りが困難になっているという。このため留学生の授業に特別の配慮をするかどうかが問題になっている。その道の専門家を目指す彼らはアルバイトが出来ないのである。

     ◆  ◆

 文部省の審議会がどのような答申を出すかわからないが、授業の内容や進め方にメスを入れることなく、ただ、年間の履修単位を制限するような「キャップ制」では、何の意味もない。            ■


“SCだより”のページに戻る

 (第106号分)


「自国を大国にしたいと思う者は、あらゆる手段を用いて人口の流入を計ることを忘れてはならない。なぜなら、豊かな人口なしに大国になることはできないからである」(マキアヴェリ)

 我が国は急速な高齢化を迎えているというだけではない。最近の新生児の出生数は、団塊の世代に比べて半分近くにまで減少しており、このままでは2005年頃には全体の人口が減少に転じる可能性が高い。

 マキアベリは人口の流入を計る方法として2つの方法を示している。1つは「愛」で、もう1つは「力」である。「力」とは戦争などの方法で強制的に移住させることである。先の敗戦の際のソ連軍によるシベリアへの強制的な収容はその例であるし、かってアメリカもアフリカから大量の人たちを奴隷として移住させた。もっとも今日では、この方法は簡単には使えない。

 これに対して「愛」による人口流入策とは、移住したいと思う者に門戸を解放し、彼らが安全に住むことが出来る状況を整えることである。国に勢いがあれば人は集まる。そこでは税金も安いだろうし、仕事もあるだろう。逆に政治が混乱し「愛」が無くなれば人々は国を去っていく。難民という状態になる前に、潮が引くようにして人も引いていく。その実例が、いままさにインドネシアに見ることが出来る。

 グローバル経済の今日にあって、企業も人も国を選ぶ時代に入った。今や、活動しやすい国を選んで移動する時代である。同時にこのことは「企業」にも当てはまることに気付かなければならない。

 多くの先進国では、早晩、人口が減少に転じる可能性がある。それを引き延ばすために、何らかの形で「移民」を受け入れてきた。それに対して「経済大国」と称されたこの国は、今、人口が大きく減少するという事実を目前にして、何も対応策を講じていない。まさかマキアヴェリの「大国」の定義に挑戦しているわけでもないだろう。


“SCだより”のページに戻る