新・闘わないプログラマ No.17

プログラマという人種


私は高校生の頃からずっとプログラムを作ってきましたが、じゃあ、自分のことをプログラマと呼べるか、もしくは、プログラマと呼べる時期があったか、と思い起こしてみると、まともに(完成品の)プログラムを作った事がほとんど無い事に気づきました。「なぁんだ、自分は『あいつはプログラマだ』と後ろ指さされるような人間じゃ無いんだ」と妙に安心したものです(おいおい)
大学時代は研究の道具として使っていただけですし、就職してからも、完成品としてもプログラムを作った記憶はほとんどありません。作るといっても、いつも大枠だけ作って、あとは他人に任せてしまっています。
そんなわけで、私はずっと「プログラマという人種」を傍で観察してきたようなものです。このコラムは、その観察日記だと思ってください。

「プログラマには頭はいらない、体力が有りさえすればいい」といったことがよく言われます。確かに、納品日の直前には(なぜか納品日の直前になっても、不思議な事にプログラムが完成していたためしがありません。これには例外は無いのです(^^;))、連日の徹夜が待っています。これを乗り切るためには、乗り切るための体力が必要になります。
でもね、でもね、聞いてください。本当に「体力さえあればいい」プログラマが世の中にはいっぱいいるんですよ、しかも「頭の無い」。「プログラマには頭はいらない、云々」も冗談で言っているうちはいいんですけどねぇ・・・
プログラマの世界(他の世界でも一緒かも知れませんが)は、10%の優秀な人と、40%の普通の人と、50%の足を引っ張る人、からなっています。プログラムは10%の優秀な人が作ります。40%の普通の人はシステムの構築には何も貢献しません、居ても居なくても一緒です。残りの50%の人は、優秀な10%の人の足を引っ張るという重要な仕事を任せれています(^^;) きわめて簡単なプログラムの中に発覚しづらいバグを潜ませてシステム全体を動作不能にしてしまったり、とか、明日納品のプログラムのファイルを奇麗さっぱり消してしまったり、とか。

この業界には「人月」という単語というか単位があります。「にんげつ」と読みます。「1人月」(いちにんげつ)というのは1人のプログラマが1ヶ月働くこと、または、その仕事量を表します。「このシステム構築には10人月必要だ」と言えば、1人なら10ヶ月、2人なら5ヶ月、10人でやれば1ヶ月で出来ると言う事を示します。
システム構築費用を算出するときに、10人月の仕事なら、例えば1人月100万円なら、1000万円の開発費がかかる、と計算するわけです。まぁ言ってみれば、奴隷のようなもんですね。
この「人月」、ちょっと考えただけでまやかしであることがわかるかと思います。2人で5ヶ月かかる仕事が、10人でやれば1ヶ月でできるか、と言えば、まず出来ませんです。人が多くなれば多くなるほど、意志の疎通が悪くなりますから、時間はかかる上に、品質まで悪くなります。上の例でいけば、10人で3ヶ月でできればいい方でしょうね。だいたいプログラムは、その開発に携わった人数に比例して、品質が悪化します。Internet Explorerなんかそのいい例ですね。何百人(あれ?もっとでしたっけ?)の人間で力任せに作ったそうですから。
「人月」がまやかしだ、というのには別の理由もあります。上でも書いたようにプログラマって、実は能力の差が極端にあるんです。ところが、その能力の差は客観的な値として計ることが困難なために、普通は表に出てきません。一緒に仕事をしたことのある人間だけが「あいつはデキる」「あいつはダメだ」と評価できるのです。ですから、1人月と言っても、誰がやるかによって結果はぜ〜んぜん変わってしまうわけですね。仕方が無いので、通常は能力のある人と足を引っ張る人を組みあわせて「抱き合わせ販売」を行います(^^:)

一口にプログラマと言っても、どんなコンピュータのプログラムを開発するプログラマか、によって性格がかなり違います。

メインフレーム(オフコンも入るかも知れません)のプログラマ、この人たちは、十年一日のごとくCOBOL(じゃない場合もあるけど)で業務アプリケーションを作ってきました。自分の担当業務についての知識はそれなりにあるのですが、この人たちの弱点はコンピュータのことをよく知らない、ということにあります(もちろん例外はありますよ)。プログラマだからコンピュータのことをよく知っている、などということが錯覚に過ぎないことを教えてくれます(^^;) 「OSって何?」と聞いてくるプログラマがいるくらいですから。メインフレームの場合、コンピュータの運用管理は別の人がやってくれることが多いのでこうなってしまうようですが。
かく言う私も、メインフレームでプログラムを2年ほど作っていましたが(プロトタイプばっかりですが)、私の場合、アセンブラでOSのAPIを使ってマルチスレッドプログラムをゴリゴリ作ったりしていたので、その点はラッキーだったと思っています。

パソコンのプログラマは、一つの典型を示すのが難しいほどいろんな人がいますが、「動きゃいいじゃん」的な人が多いように思えます。特にBASICから入った人なんかに。
今でも、Visual Basic(VB)なんか、本当にお手軽にプログラムが書けてしまう(って、VBの場合書くとこあんまり無いですけど)ので、とてつもなくいい加減なプログラムが溢れてしまっています。
CやC++のプログラマあたりですと、同じ「動きゃいいじゃん」でも「動かすためには手段を選ばず」的なところがあって、いわゆる行儀の悪いプログラムが多いですね。まぁ、これには同情の余地もあります。DOSが全盛のころ、DOSはOSの体を成していないといっていいほど機能的に貧弱で、DOSに頼っていたら何も作れなくなってしまうので仕方なくI/Oポートを直接たたいてみたり、BIOSを呼び出してみたりしたわけですけど。
あと、パソコンのCプログラマはソースが汚い人が多いように感じます。私が出会った中では#defineでキーワードを変えまくった人がいましたが、やめて欲しかったです。"#define loop for"なんて書くのは勘弁して欲しい(^^;)

UNIXプログラマは、こだわりを持っている人が多いというか、常にエレガントなプログラムを書くように努力している人が多いようです(あくまで他のプログラマに比べて相対的にですが)。その分、自分の意見に絶対的な自信を持っていると言うか、要するにうるさい人が多いです。
どちらかといえば一匹狼的な人が多く、多人数で開発するような大規模なシステムの場合には管理が大変だったりします(経験者は語る)。とか言いながらも、私もプログラマとして見れば多分この範疇に入るんじゃないかな、と思っていますけど・・・(^^;)

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp