目次次「下手糞なプログラマは殺人鬼」 English

プログラマの品質管理


日本は非常に品質管理にうるさい国である。野菜の形状だって、カメラで捕らえて、コ ンピュータで判断し、分別しているありさまである。ネジの一本一本さえ、全部チェック するような、どうしてここまで厳しくチェックするのだろうと思ってしまう。

しかし、この完全無欠を貴ぶ潔癖精神が、日本製品の品質をここまで引き上げたことは 疑いない。

ところで、プログラムの品質の方はどうであろうか。時間をかけてテストをしたからと いって安心できるだろうか。いったい、プログラムの品質は、何に依存するのだろうか。

コンピュータの素人は、コンピュータを盲信する。「コンピュータは絶対正しい」と信 じる。まるで、神様のように崇め奉る。プログラムを作れる人間を、まるで宇宙人のよう に思っているのだ。

コンピュータを始めたばかりの人とか、コンピュータを販売したり、利用するだけの立 場の人は、「プログラムは絶対に正しくなければならない」と主張する。プログラムに少 しでも誤りがあると、鬼の首でも取ったかのように騒ぎ立てる。

コンピュータのベテランになると、「プログラムに誤りは有るもの。有って当り前。そ れが厭なら、コンピュータを使う方が悪い」とうそぶく始末だ。こんなことを平気で技術 者が言うから、営業と技術が対立するのは当然である。

こんなにもコンピュータ(ソフトウェア)に対して抱いている基本的な考えが違ってい る。お互いに接点がないほどの差だ。ベテランの言っているのは、本当は、誤りを容認し ようというのではない。絶対に誤りのないプログラムなど作れない、といっているだけだ。 誤りをどれだけ少なくするかは、その用途によって変化する。

業務用のプログラムの場合、一人でプログラムの全部を作ることは少ない。複数人の共 同作業により、プログラムが作られていく。各人の作業は、互いに関係し、チームの一人 が失敗すると、他の人の作業に影響が出る。こんなことは、プログラムの開発に限らず、 どんな共同作業でも当然起こることだ。

プログラムの共同開発の問題点は、一人がレベルが低くて、良くないプログラムを作っ ても、それに長い間気がつかないままになることが多いことである。プログラム以外の開 発では、完成品を見れば大体の出来具合が分かるものだが、プログラムの出来具合の判定 は非常に分かりにくい。他の人が作って、テストも済んでいると、予定通りの出来だと思っ て当然なのだが、これが当てにならない。

テストに十分な時間を取っても、でき上がった製品の製作工程を一切見ずに、盲滅法に テストをしても、品質保証は難しい。重要なのは、製作工程が妥当かどうかである。妥当 な製作方法を取っている限り、出来上りの品質も期待できる。しかし、この、「妥当」と いう意味が人により非常に違う。

管理者側では、時間数という最も測定し易い方法、参加者からの報告、あるいは参加者 の気力などで判定しているようだが、そんなことで良いのだろうか。いつも「良い中間報 告」をするが、最後の最後で駄目になる場合が多いのを知っているだろうか。

また、完璧過ぎるのも問題である。要求水準よりも遥かに高いのを苦労して作られても 困ってしまう。労力と完成品のバランスが取れていなければいけない。ある水準以上になっ た時点で、現場で使ってみて、後は使用感を検討しながら、プログラムの軌道修正を行な うべき場合に、必要以上に信頼度を上げたため、現場での試用が遅れるのではいけない。

複数人で開発する時、全員のレベルが一致することは有り得ない。優秀な者がより困難 な部分を、劣る者がより易しい部分を担当する。しかし、利用者の側からすると、問題は 複雑である。同じプログラムでも、人により使い方は大いに異なる。利用者が多用する機 能の作りがもし悪ければ、たとえそのソフトウェアの世間の評価が高かろうと、本人にとっ ては「悪い」。

さらに、プログラムの品質、使い勝手の上から見て重要な点と、プログラム開発上の困 難な点とは往々にして異なる。たとえめったに使用しない機能でも、それを使用すると致 命的なトラブルに陥るのであれば、それは極めて怖いソフトウェアであり、使うのを躊躇 したり、場合によってはそのソフトウェア自体の使用を禁止するであろう。

品質と言うのは、結局は「バランス」の問題であり、それに参加した技術者の「腕」の 問題である。時間をかけたとか、多数の組み合わせで調べたというので十分なことはない。 少々誤りがあろうと、実際には使われないことなら、実際には問題にならない。こういう 個所は、サボっても良いが、サボり方の目安は難しい。

品質の見分け方の一番確実な方法は、誰がプログラムを作ったかを調べるのが手っとり 早くて間違いがない。結局、優秀な人間が作ったプログラムが優秀である。プログラムの 品質管理をしたいなら、プログラマ(人間)の品質管理をすれば良い。プログラマの品質 管理をせずに、いくらプログラムの管理をしても無駄というものだ。何と単純な結論であ ろうか。でも、これを実行するのは大変困難である。

次のような案はどうだろう。プログラマの月給を、能力とは無関係に、一律に200万 円にする。相当な高給であろう。もちろん、これだけ会社はプログラマに払うのである。 しかし、プログラマの方も、誤りを犯す度に罰金を払うのである。軽いミスは10万円、 大きなミスは100万円、致命的なミスは1000万円という具合である。こうすれば、 ミスの少ない者は、年収が2000万円以上になる。ミスの多い者は、年収が赤字になっ てしまう。結果として、能力に相応した手取りになる訳だ。つまり、存在するだけで害が あるような者は収入が赤字になり、自然に淘汰されるのである。幼稚園以来の減点主義教 育を長年受けてきている者が多いのだから、こんな方法は受け入れられないだろうか。


Copyright1996,1999 Hirofumi Fujiwara. No reproduction or republication without written permission
目次次「下手糞なプログラマは殺人鬼」 English