ソフトウェア開発は免許制にすべきか——「ソフトウェア開発プロフェッショナル」
Description

本書は、スティーブ・マコネルによって書かれたソフトウェア開発論についての本である。CODE COMPLETEの著者だと言えば知っている人も多いのではないだろうか。
ソフトウェア開発は、予測可能、制御可能で、経済的に作ることができ、管理も可能である。通常のソフトウェア開発は、そうでない場合が多いが、きちんと作ることも可能なのだ。本書は急速に増えている専門家としてのソフトウェア・エンジニアリング、すなわち、高品質のソフトウェアを低価格で作るプロの開発技術について書いたものである。
-- P5
印象的だった話題をいくつか紹介したい。
カーゴ・カルト・サイエンス
カーゴ・カルト・サイエンスとは、物理学者リチャード・ファインマンが提唱したもので、科学的手法の外見だけを模倣し、実質的な検証や根拠を欠いた似非科学のことをいう。
南洋の島の住民の中には積み荷信仰ともいえるものがある。戦争中軍用機が、たくさんの素晴らしい物質を運んできては次々に着陸するのを見たこの連中は、今でもまだこれが続いてほしいものだと考えて、妙なことをやっているのです。つまり滑走路らしきものを造り、その両側に火をおいたり、木の小屋を作って、アンテナを模した竹の棒がつったっているヘッドホンみたいな恰好のものを頭につけた男(フライトコントローラーのつもり)をその中に座らせたりして、一心に飛行機が来るのを待っている。形の上では何もかもがちゃんと整い、いかにも昔通りの姿が再現されたかのように見えます。
ところが全然その効果はなく、期待する飛行機はいつまで待ってもやってきません。このようなことを私は「カーゴ・カルト・サイエンス」と呼ぶのです。つまりこのえせ科学は研究の一応の法則と形式に完全にしたがっているが、南洋の孤島に肝心の飛行機がやってこないように、何か一番大切な本質がぽかっとぬけているのです。
-- P35
本書によると、ソフトウェア開発においても、外見だけを模倣した似非エンジニアリングが存在するのだという。身に覚えはないだろうか?
ニセ実力主義の組織では、プログラマを長時間働く気にさせようと必死になる。マイクロソフトのように実力主義が成功した組織を観察し、ほとんどドキュメントを作らないことや、ストック・オプションがあること、また、山のように残業させることがわかると、自分の会社でも、文章量を最小にし、ストック・オプションを与え、もっと残業しろと尻を叩く。そうすればマイクロソフトのように大成功できると考えるのである。ドキュメント量が少なく、残業時間が多いほどよいというわけだ。こんな会社は、マイクロソフトや、実力主義の開発方法が効果をあげた組織では、残業を命じていないことに気づいていない。マイクロソフトのような会社は、ソフトウェアを作るのが何より好きな技術者をかき集める。プログラムを作るのが好きでたまらないエンジニアで一つのチームを作り、チームに支援や援助を惜しまず、素晴らしいソフトウェアを作った場合は、相当の報酬を出す。そして、会社はエンジニア連中に好き勝手させるのだ。当然、プロジェクトのプログラマやマネージャーは、自発的に長時間働く。ニセ実力主義の会社は、原因(高い動機付け)と結果(長い労働時間)を混同している。このニセ実力主義会社を「搾取工場(sweatshops)」と呼ぶ。効率よく働くことより、長時間、汗をたくさん流すことを重視するためで、たいてい、非効率な泥沼開発になる。
-- P37
ソフトウェア開発の免許制
本書で最も物議を醸すのがソフトウェア開発の免許制についての章だろう。
医師、建築家、法律家、技術者などの多くの専門職は免許制である。ソフトウェアのような社会に大きな影響を与える職業は他にないのに、いまだに免許制がない。
-- P219
私も含め、ソフトウェアエンジニアの多くは、以下のような理由によって免許制は上手くいかないんじゃないかと思っているんじゃないだろうか。
- ソフトウェア・エンジニアリングには一般に同意を得られた基礎知識体系が存在しないのではないか。
- ソフトウェア・エンジニアリングの知識は極めて変化が速く免許の試験がすぐ時代遅れになってしまうのではないか。
- ソフトウェア・エンジニアリングのスキルは、選択方式ではテストできないのではないか。
- ソフトウェア・エンジニアリングの関連技術分野は非常に広いので、すべての関連分野について免許制度を作るのは非現実的ではないか。
- 需要が増大しているのに、技術者の数を不当に制約してしまうのではないか。
すべてに同意するのは難しいが、本書ではこれらの懸案にも回答している。
「医療で免許制度が確率できているのに、ソフトウェア開発で免許制度が技術的に確立できないということはない。」というのは個人的には一番納得感のある説明だ。上記の懸案は、ソフトウェア・エンジニアリングを医療に置換すれば、19世紀の医師免許確立の前夜にまさに議論されていたことなのではないだろうか。ともすると、いまは過渡期なのかもしれない。
単純に両者を比較することはできないけれど、生物はソフトウェア開発と同程度には多様で複雑で変化のある分野に思えるし、それにも関わらず、医師の免許制は概ね機能してそうだ。それに、医師免許を持っていない医師にはかかりたくないよね?
ただし、免許制を導入するとしたら、本気でやらなきゃダメだ。IPAの情報処理技術者試験のような一夜漬けでもどうにかなるような免許を作っても意味はないだろう。医師の免許制が機能しているのは、狭き門を潜り抜けた本物の専門家しか医師になれないからだ。そのおかげで、完ぺきではないかもしれないけれどある程度の水準は担保できるのだ。
Conclusion
さすがに古い本なのでいくつか時代遅れになっているような記述もある。
今でも時々、自動プログラミングの将来性について耳にする。コンピュータが光度に進化すると、プログラマは不要になるというものだ。これは、35年以上前からある有名な馬鹿話であり、当時、ジーン・ビリンスキーは、「人間と簡単な会話が可能な万能機械ができるという夢物語は、新聞や雑誌に、何度も繰り返し出てくる」と述べた。実際には、仕様の細部まで定義するのはかなり難しく、プログラミングが消えてなくなることはありえない。
P13
しかしながら、作ってから直す方式に対する批判やソフトウェア開発の免許制など今でも考えさせられる内容だった。
ソフトウエア開発が免許制になった世界線も見てみたいものだ。ソフトウェア開発は、予測可能、制御可能で、経済的に作ることができ、管理も可能になっているのだろうか。果たして…?